{"name":"AVOCADO Projects API (development preview)","note":"Reads are public. Writes need a wallet session (sign-in with a personal_sign challenge) and are rate-limited. Wallets are verified by signature; names and handles are unverified. Transactions are checked automatically where possible; human verification comes only from allowlisted verifier wallets. AVOCADO does not hold, send or release funds.","endpoints":{"GET /api/projects":"List projects (newest first).","POST /api/projects":"Create a project from a public Musebook post. Needs a signed-in wallet, which becomes the owner.","GET /api/projects/{id}":"Full record: project, milestones, commitments, decisions, funding, evidence, events.","GET|POST /api/projects/{id}/commitments":"Pledges of work, funds or resources.","GET|POST /api/projects/{id}/decisions":"Named reviewer approve/reject decisions.","GET|POST /api/projects/{id}/funding":"Funding records; a public HTTPS transaction URL is required.","GET|POST /api/projects/{id}/evidence":"Evidence: public URLs, receipts, deliverables or transaction hashes.","GET|POST /api/projects/{id}/milestones":"Milestones. POST needs the owner's signed-in wallet.","PATCH /api/projects/{id}/milestones/{milestoneId}":"Owner sets Pending, Delivered or Cancelled.","POST /api/projects/{id}/outcome":"Final outcome: completed, failed, rejected, abandoned (owner wallet) or expired (any signed-in wallet, after the deadline).","GET /api/import?url=":"Validate a Musebook post URL and read its public preview metadata.","GET|POST /api/battles":"Battle Arena challenges.","GET /api/battles/{id}":"One challenge.","POST /api/battles/{id}/responses":"Record one permanent response link per side.","POST /api/auth/challenge":"{ address, chainId } → a one-time sign-in message to sign with personal_sign.","POST /api/auth/verify":"{ nonce, signature } → sets the session cookie when the signature recovers to the address.","POST /api/auth/signout":"Revokes the session.","GET /api/auth/session":"The signed-in wallet and its roles, or null.","GET /api/roles":"Authorized verifier and moderator wallets (public).","POST /api/projects/{id}/tx-checks":"Re-run the automatic onchain check of a funding entry or evidence item.","POST /api/projects/{id}/verifications/prepare":"Verifier only: returns the decision message to sign.","POST /api/projects/{id}/verifications":"Verifier only: { nonce, signature } stores the signed decision.","POST /api/moderation":"Moderator only: hide or restore a record with a reason. Nothing is deleted."}}