{"openapi":"3.1.0","info":{"title":"X402 Git","version":"0.0.1","summary":"Paid access to private git repos over x402/USDC, for humans and agents.","description":"Every creator and buyer capability is an authenticated JSON endpoint before it is a web page (D9); the web app calls these same routes.\n\n**Money.** Every amount is micro-USDC (6 decimals) encoded as a decimal integer string: `\"9000000\"` is $9.00. Never a JSON number, because a JSON number is a double.\n\n**Errors.** Every error on every route is `{ code, message, docs_url, details? }` from the catalogue below.\n\n**Payment.** x402 v2, `exact` scheme, USDC on Base. Access is granted only after the facilitator's `settle` returns a transaction hash.","license":{"name":"Proprietary","identifier":"LicenseRef-Proprietary"},"contact":{"name":"X402 Git","email":"abuse@x402git.com","url":"https://x402git.com/abuse"},"x-guidance":"Every listing is a private git repository sold as a zip over x402 (USDC on Base). Read the free manifest at GET /api/label/{owner}/{slug} first; GET /api/r/{owner}/{slug} answers 402 with the price and the exact requirement to sign, and 200 with a signed download URL once the payment settles. Echo extra.quote_id as X-Quote-Id and extensions.bazaar in the payment payload. The full procedure is at https://x402git.com/.well-known/agent-skills/buy-a-repo/SKILL.md; the same tools are an MCP server at https://x402git.com/api/mcp. Every live resource is listed at https://x402git.com/.well-known/x402."},"servers":[{"url":"https://x402git.com"}],"tags":[{"name":"public","description":"Free and unauthenticated, or paid with x402."},{"name":"auth","description":"Challenges and key rotation."},{"name":"creator","description":"Bearer key: an agent key (`x4c_live_…`) or a website session key (`x4s_live_…`)."},{"name":"internal","description":"Webhooks and cron. Not for callers."}],"paths":{"/{owner}/{slug}":{"get":{"operationId":"getByOwnerBySlug","summary":"The manifest page","tags":["public"],"description":"Server-rendered HTML (§14.1). The text is in the server response, not fetched by script.","security":[],"parameters":[{"name":"owner","in":"path","required":true,"description":"The creator handle.","schema":{"type":"string","example":"examples"}},{"name":"slug","in":"path","required":true,"description":"The listing slug.","schema":{"type":"string","example":"humanizer"}}],"responses":{"200":{"description":"The manifest page"},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}}}}},"/api/label/{owner}/{slug}":{"get":{"operationId":"getApiLabelByOwnerBySlug","summary":"The public manifest","tags":["public"],"description":"Free, cacheable, unauthenticated. Computed fields and self-reported fields are separately namespaced (FR-52).","security":[],"parameters":[{"name":"owner","in":"path","required":true,"description":"The creator handle.","schema":{"type":"string","example":"examples"}},{"name":"slug","in":"path","required":true,"description":"The listing slug.","schema":{"type":"string","example":"humanizer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Manifest"}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/v/{owner}/{slug}":{"get":{"operationId":"getApiVByOwnerBySlug","summary":"Latest version and prices","tags":["public"],"description":"With a valid `X-Wallet-Signature` this also returns `owned`, `entitled` and `price_kind`. Without one it is version data only: `?address=` alone never reveals entitlement state (FR-20). `scan` is the latest release's trust report in three numbers (\"PRD Trust Report.md\" §5) — absent, never zeroed, when there is no report to read.","security":[{"walletSignature":[]}],"parameters":[{"name":"owner","in":"path","required":true,"description":"The creator handle.","schema":{"type":"string","example":"examples"}},{"name":"slug","in":"path","required":true,"description":"The listing slug.","schema":{"type":"string","example":"humanizer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionStatus"}}}},"401":{"description":"`invalid_signature` — The wallet signature is missing, malformed, expired or already used.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_signature":{"value":{"code":"invalid_signature","message":"The wallet signature is missing, malformed, expired or already used.","docs_url":"https://x402git.com/docs/errors#invalid_signature"}}}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/v/{owner}/{slug}/releases":{"get":{"operationId":"getApiVByOwnerBySlugReleases","summary":"The public release log","tags":["public"],"description":"FR-15. Every release, with changelog, diff summary, scan verdict and the prices in force. Creators cannot delete entries, failing releases are published too, and a retired listing keeps its log (FR-43). Pages newest-first by `cursor`.","security":[],"parameters":[{"name":"owner","in":"path","required":true,"description":"The creator handle.","schema":{"type":"string","example":"examples"}},{"name":"slug","in":"path","required":true,"description":"The listing slug.","schema":{"type":"string","example":"humanizer"}},{"name":"cursor","in":"query","required":false,"description":"Opaque pagination cursor from `next_cursor`.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseLog"}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/r/{owner}/{slug}":{"get":{"operationId":"getApiRByOwnerBySlug","summary":"Buy or fetch the latest release","tags":["public"],"description":"402 then 200. Send the payment authorization in `PAYMENT-SIGNATURE`; access is granted only after the facilitator's `settle` returns a transaction hash (FR-22). A free listing returns 200 immediately (FR-24), as does a holder whose purchase was stamped `all_versions` (FR-16).","security":[{"walletSignature":[]}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"dynamic","currency":"USD"},"description":"The price is per listing and is quoted in the 402; a holder re-fetches for free. Every live resource is listed at /.well-known/x402."},"parameters":[{"name":"owner","in":"path","required":true,"description":"The creator handle.","schema":{"type":"string","example":"examples"}},{"name":"slug","in":"path","required":true,"description":"The listing slug.","schema":{"type":"string","example":"humanizer"}},{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"FR-23. Echo `extra.quote_id` from the 402 you are paying against. **Required for priced listings** (any price above zero); a priced buy that omits it is rejected `price_changed`. A quote that is no longer current also returns `409 price_changed` with a fresh 402 in `details.payment_required`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"400":{"description":"`authorization_mismatch` — The payment authorization does not match this listing, version or amount.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"authorization_mismatch":{"value":{"code":"authorization_mismatch","message":"The payment authorization does not match this listing, version or amount.","docs_url":"https://x402git.com/docs/errors#authorization_mismatch"}}}}}},"401":{"description":"`invalid_signature` — The wallet signature is missing, malformed, expired or already used.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_signature":{"value":{"code":"invalid_signature","message":"The wallet signature is missing, malformed, expired or already used.","docs_url":"https://x402git.com/docs/errors#invalid_signature"}}}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header. For a **priced** listing you must echo `extra.quote_id` from this body back as the `x-quote-id` request header on the paying request — it is **required** when the price is above zero, and a priced buy that omits it is rejected `price_changed` (FR-23). Free ($0) grants do not need it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"},"examples":{"new":{"summary":"kind: new","value":{"x402Version":2,"resource":{"url":"https://x402git.com/api/r/adrian/humanizer","description":"humanizer 1.2.0 — a Harness of 1 skill, 9 scripts and 3 test files. MIT, resale permitted. Security scan passed.","mimeType":"application/zip"},"accepts":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x1111111111111111111111111111111111111111","amount":"9000000","maxAmountRequired":"9000000","resource":"https://x402git.com/api/r/adrian/humanizer","description":"humanizer 1.2.0 — a Harness of 1 skill, 9 scripts and 3 test files. MIT, resale permitted. Security scan passed.","maxTimeoutSeconds":300,"mimeType":"application/zip","extra":{"name":"USD Coin","version":"2"}}],"extra":{"kind":"new","version":"1.2.0","manifest_url":"https://x402git.com/api/label/adrian/humanizer","scan_badge_url":"https://x402git.com/api/label/adrian/humanizer#scan","instructions":"This is an x402 paywall, not an error. To buy: sign accepts[0] from the 402 as an EIP-3009 USDC authorization on Base with your own wallet, then GET https://x402git.com/api/r/adrian/humanizer again with the payment in the PAYMENT-SIGNATURE header and extra.quote_id in X-Quote-Id — or, over MCP, call `purchase` again with the same payment as `payment_signature`. The full procedure is at https://x402git.com/.well-known/agent-skills/buy-a-repo/SKILL.md; the same tools are an MCP server at https://x402git.com/api/mcp. No wallet? A person can buy at https://x402git.com/adrian/humanizer, and the free manifest at https://x402git.com/api/label/adrian/humanizer shows what is inside before anyone pays.","listing_url":"https://x402git.com/adrian/humanizer","skill_url":"https://x402git.com/.well-known/agent-skills/buy-a-repo/SKILL.md","mcp_url":"https://x402git.com/api/mcp","update_price_micro":"3000000","quote_id":"q_01J9Z4Q2W0X1Y2Z3A4B5C6D7E8","valid_before":"2026-08-29T12:05:00Z"}}},"update":{"summary":"kind: update","value":{"x402Version":2,"resource":{"url":"https://x402git.com/api/r/adrian/humanizer","description":"humanizer 1.2.0 → 1.3.0 — 6 files, 210 lines changed. You already own 1.2.0; this is the update price.","mimeType":"application/zip"},"accepts":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x1111111111111111111111111111111111111111","amount":"3000000","maxAmountRequired":"3000000","resource":"https://x402git.com/api/r/adrian/humanizer","description":"humanizer 1.2.0 → 1.3.0 — 6 files, 210 lines changed. You already own 1.2.0; this is the update price.","maxTimeoutSeconds":300,"mimeType":"application/zip","extra":{"name":"USD Coin","version":"2"}}],"extra":{"kind":"update","version":"1.3.0","from":"1.2.0","to":"1.3.0","manifest_url":"https://x402git.com/api/label/adrian/humanizer","scan_badge_url":"https://x402git.com/api/label/adrian/humanizer#scan","instructions":"This is an x402 paywall, not an error. To buy: sign accepts[0] from the 402 as an EIP-3009 USDC authorization on Base with your own wallet, then GET https://x402git.com/api/r/adrian/humanizer again with the payment in the PAYMENT-SIGNATURE header and extra.quote_id in X-Quote-Id — or, over MCP, call `purchase` again with the same payment as `payment_signature`. The full procedure is at https://x402git.com/.well-known/agent-skills/buy-a-repo/SKILL.md; the same tools are an MCP server at https://x402git.com/api/mcp. No wallet? A person can buy at https://x402git.com/adrian/humanizer, and the free manifest at https://x402git.com/api/label/adrian/humanizer shows what is inside before anyone pays.","listing_url":"https://x402git.com/adrian/humanizer","skill_url":"https://x402git.com/.well-known/agent-skills/buy-a-repo/SKILL.md","mcp_url":"https://x402git.com/api/mcp","update_price_micro":"3000000","releases":[{"version":"1.3.0","tag":"v1.3.0","commit_sha":"a1b2c3d4e5f60718293a4b5c6d7e8f9012345678","artifact_sha256":"9f2c00000000000000000000000000000000000000000000000000000000abcd","published_at":"2026-08-28T09:14:00Z","changelog":"Handles em-dash runs and rule-of-three sentences.","diff_summary":{"files_added":1,"files_changed":4,"files_removed":1,"additions":176,"deletions":34,"components_touched":["scripts","tests"]},"scan":"pass","scanner_version":"2026.08.2","analyzer_version":"0.1.0","price_micro":"9000000","update_price_micro":"3000000"}],"quote_id":"q_01J9Z4Q2W0X1Y2Z3A4B5C6D7E9","valid_before":"2026-08-29T12:05:00Z"}}}}}}},"403":{"description":"`sanctioned_counterparty` — This address appears on a sanctions list. No payment can be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"sanctioned_counterparty":{"value":{"code":"sanctioned_counterparty","message":"This address appears on a sanctions list. No payment can be processed.","docs_url":"https://x402git.com/docs/errors#sanctioned_counterparty"}}}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"409":{"description":"`replay` — This payment authorization has already been used.\n`price_changed` — The price changed since this quote was issued. A fresh 402 is attached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"replay":{"value":{"code":"replay","message":"This payment authorization has already been used.","docs_url":"https://x402git.com/docs/errors#replay"}},"price_changed":{"value":{"code":"price_changed","message":"The price changed since this quote was issued. A fresh 402 is attached.","docs_url":"https://x402git.com/docs/errors#price_changed"}}}}}},"410":{"description":"`retired` — This listing is no longer sold.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"retired":{"value":{"code":"retired","message":"This listing is no longer sold.","docs_url":"https://x402git.com/docs/errors#retired"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"451":{"description":"`blocked_jurisdiction` — This service is unavailable in your jurisdiction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"blocked_jurisdiction":{"value":{"code":"blocked_jurisdiction","message":"This service is unavailable in your jurisdiction.","docs_url":"https://x402git.com/docs/errors#blocked_jurisdiction"}}}}}},"504":{"description":"`settlement_timeout` — Settlement did not confirm in time. Retry with the same authorization.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"settlement_timeout":{"value":{"code":"settlement_timeout","message":"Settlement did not confirm in time. Retry with the same authorization.","docs_url":"https://x402git.com/docs/errors#settlement_timeout"}}}}}}}}},"/api/r/{owner}/{slug}/v/{version}":{"get":{"operationId":"getApiRByOwnerBySlugVByVersion","summary":"Re-fetch a version you own","tags":["public"],"description":"FR-19 / FR-46. Owned versions stay fetchable forever, including after the listing retires.","security":[{"walletSignature":[]}],"parameters":[{"name":"owner","in":"path","required":true,"description":"The creator handle.","schema":{"type":"string","example":"examples"}},{"name":"slug","in":"path","required":true,"description":"The listing slug.","schema":{"type":"string","example":"humanizer"}},{"name":"version","in":"path","required":true,"description":"e.g. 1.2.0","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"401":{"description":"`invalid_signature` — The wallet signature is missing, malformed, expired or already used.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_signature":{"value":{"code":"invalid_signature","message":"The wallet signature is missing, malformed, expired or already used.","docs_url":"https://x402git.com/docs/errors#invalid_signature"}}}}}},"403":{"description":"`not_entitled` — This wallet does not own that version.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_entitled":{"value":{"code":"not_entitled","message":"This wallet does not own that version.","docs_url":"https://x402git.com/docs/errors#not_entitled"}}}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/entitlements":{"get":{"operationId":"getApiEntitlements","summary":"What this wallet owns","tags":["public"],"description":"FR-32. Requires `X-Wallet-Signature`: entitlement state is never disclosed without a signature (FR-40).","security":[{"walletSignature":[]}],"parameters":[{"name":"cursor","in":"query","required":false,"description":"Opaque pagination cursor from `next_cursor`.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Entitlements"}}}},"401":{"description":"`invalid_signature` — The wallet signature is missing, malformed, expired or already used.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_signature":{"value":{"code":"invalid_signature","message":"The wallet signature is missing, malformed, expired or already used.","docs_url":"https://x402git.com/docs/errors#invalid_signature"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/auth/challenge":{"get":{"operationId":"getApiAuthChallenge","summary":"Get a challenge to sign","tags":["auth"],"description":"FR-20. Single use, 5-minute expiry. A challenge is bound to one `purpose` — `address_proof` on registration, `step_up` on a payout change, `rotate_key`, or `wallet_ownership` for the `X-Wallet-Signature` header — and a signature is refused on any other path (W2.2). `purpose` is required; there is no default. A payout rebind additionally requires `new_payout_address`: the signed message names the incoming address, and the signature authorises that one change only.","security":[],"parameters":[{"name":"address","in":"query","required":true,"description":"The address that will sign.","schema":{"type":"string"}},{"name":"purpose","in":"query","required":true,"description":"The action this signature authorises: `address_proof`, `step_up`, `rotate_key`, or `wallet_ownership`.","schema":{"type":"string"}},{"name":"new_payout_address","in":"query","required":false,"description":"For a `step_up` challenge that will authorise a payout rebind: the address payouts should move to. The signed message names it, and PATCH /api/creators/me refuses a rebind signed without it.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Challenge"}}}},"400":{"description":"`invalid_request` — The request body or parameters did not validate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_request":{"value":{"code":"invalid_request","message":"The request body or parameters did not validate.","docs_url":"https://x402git.com/docs/errors#invalid_request"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/terms":{"get":{"operationId":"getApiTerms","summary":"The creator agreement and the buyer terms","tags":["public"],"description":"FR-6 and §19. `accepted_terms_version` on POST /api/creators must equal the top-level `version`. `buyer_terms` carries the same three fields for the terms a buyer is bound by.","security":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Terms"}}}}}}},"/api/openapi.json":{"get":{"operationId":"getApiOpenapi.json","summary":"This document","tags":["public"],"description":"FR-33. Generated from the zod schemas.","security":[],"responses":{"200":{"description":"An OpenAPI 3.1 document"}}}},"/api/health":{"get":{"operationId":"getApiHealth","summary":"Is the platform answering","tags":["public"],"description":"One cheap round trip to the database, the dependency every paid path shares. `status` is `ok` or `degraded`; the facilitator, GitHub and Storage are deliberately not probed. Never cached. This is the `status` target in /.well-known/api-catalog.","security":[],"responses":{"200":{"description":"`{ status, checks: { database }, latency_ms, time }`"}}}},"/.well-known/api-catalog":{"get":{"operationId":"getWellKnownApiCatalog","summary":"Where to start, if nobody told you","tags":["public"],"description":"RFC 9727. A linkset (`application/linkset+json`) naming this document, `/docs` and `/api/terms`, anchored on the API and on the MCP server. The home page and every manifest page carry RFC 8288 `Link` headers pointing here, so an agent needs one HEAD request and no prior knowledge of §9.","security":[],"responses":{"200":{"description":"A linkset"}}}},"/api/snippet/{owner}/{slug}":{"get":{"operationId":"getApiSnippetByOwnerBySlug","summary":"The README snippet","tags":["public"],"description":"FR-30. The paste-ready preamble that tells a downstream agent to check `GET /api/v/…` before each run, as `text/markdown`. The wording differs for `update_price_micro = 0` (updates included) and `> 0`.","security":[],"parameters":[{"name":"owner","in":"path","required":true,"description":"The creator handle.","schema":{"type":"string","example":"examples"}},{"name":"slug","in":"path","required":true,"description":"The listing slug.","schema":{"type":"string","example":"humanizer"}}],"responses":{"200":{"description":"The snippet"},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/mcp":{"post":{"operationId":"postApiMcp","summary":"Buy-side MCP server (Streamable HTTP)","tags":["public"],"description":"FR-31. JSON-RPC 2.0 over Streamable HTTP, stateless. Five tools: `how_to_buy` (free, no wallet: whether the listing is for sale, the price, the listing page, the skill and the endpoint — the tool a client that cannot sign answers with), `get_listing` (wraps `GET /api/label/:owner/:slug`), `check_version` (wraps `GET /api/v/:owner/:slug`), `purchase` (wraps `GET /api/r/:owner/:slug`; takes a pre-signed `PAYMENT-SIGNATURE` and returns the 402 body as structured content when unpaid) and `fetch_release` (wraps `GET /api/r/:owner/:slug/v/:version`). The last four call the same core module (§11); purchases are recorded with `source: mcp`. `GET` opens the notification stream and `DELETE` ends a session. Connect with `npx @modelcontextprotocol/inspector --transport http --server-url ${APP_URL}/api/mcp`.","security":[],"parameters":[{"name":"Accept","in":"header","required":true,"description":"Must list both `application/json` and `text/event-stream`.","schema":{"type":"string"}},{"name":"MCP-Protocol-Version","in":"header","required":false,"description":"Sent by the client on every request after `initialize`.","schema":{"type":"string"}}],"responses":{"200":{"description":"A JSON-RPC response"},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/creators":{"post":{"operationId":"postApiCreators","summary":"Register (headless)","tags":["creator"],"description":"FR-2. Send `Idempotency-Key: <uuid>` and the identical 201 replays for 24 hours, so a dropped response does not strand you without your API key. Rate limit: 5 per hour per IP.","security":[],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"A uuid. Replays the identical 201 for 24 hours.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCreatorRequest"}}}},"responses":{"201":{"description":"Registered. `api_key` is shown once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCreatorResponse"}}}},"400":{"description":"`invalid_request` — The request body or parameters did not validate.\n`payout_address_unverified` — The payout address was not proved by a valid signed challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_request":{"value":{"code":"invalid_request","message":"The request body or parameters did not validate.","docs_url":"https://x402git.com/docs/errors#invalid_request"}},"payout_address_unverified":{"value":{"code":"payout_address_unverified","message":"The payout address was not proved by a valid signed challenge.","docs_url":"https://x402git.com/docs/errors#payout_address_unverified"}}}}}},"403":{"description":"`invite_required` — A valid invite code is required to register through the API.\n`sanctioned_counterparty` — This address appears on a sanctions list. No payment can be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invite_required":{"value":{"code":"invite_required","message":"A valid invite code is required to register through the API.","docs_url":"https://x402git.com/docs/errors#invite_required"}},"sanctioned_counterparty":{"value":{"code":"sanctioned_counterparty","message":"This address appears on a sanctions list. No payment can be processed.","docs_url":"https://x402git.com/docs/errors#sanctioned_counterparty"}}}}}},"409":{"description":"`terms_version_stale` — The accepted terms version is not the current one.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"terms_version_stale":{"value":{"code":"terms_version_stale","message":"The accepted terms version is not the current one.","docs_url":"https://x402git.com/docs/errors#terms_version_stale"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}},"451":{"description":"`blocked_jurisdiction` — This service is unavailable in your jurisdiction.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"blocked_jurisdiction":{"value":{"code":"blocked_jurisdiction","message":"This service is unavailable in your jurisdiction.","docs_url":"https://x402git.com/docs/errors#blocked_jurisdiction"}}}}}}}}},"/api/creators/me":{"get":{"operationId":"getApiCreatorsMe","summary":"The authenticated creator","tags":["creator"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Creator"}}}},"401":{"description":"`invalid_key` — The API key is missing, malformed or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_key":{"value":{"code":"invalid_key","message":"The API key is missing, malformed or revoked.","docs_url":"https://x402git.com/docs/errors#invalid_key"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}},"patch":{"operationId":"patchApiCreatorsMe","summary":"Change payout address or abuse contact","tags":["creator"],"description":"FR-5. Both need `step_up` — a signature from the *currently* bound payout address. A payout change must be signed over a challenge minted with `new_payout_address=<the new address>` on GET /api/auth/challenge, so the signature names where the money will go. A payout change takes effect after 48 hours and sweeps continue to the old address until then; an abuse-contact change also takes 48 hours and is announced to the old contact.","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCreatorRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCreatorResponse"}}}},"400":{"description":"`invalid_request` — The request body or parameters did not validate.\n`payout_address_unverified` — The payout address was not proved by a valid signed challenge.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_request":{"value":{"code":"invalid_request","message":"The request body or parameters did not validate.","docs_url":"https://x402git.com/docs/errors#invalid_request"}},"payout_address_unverified":{"value":{"code":"payout_address_unverified","message":"The payout address was not proved by a valid signed challenge.","docs_url":"https://x402git.com/docs/errors#payout_address_unverified"}}}}}},"401":{"description":"`invalid_key` — The API key is missing, malformed or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_key":{"value":{"code":"invalid_key","message":"The API key is missing, malformed or revoked.","docs_url":"https://x402git.com/docs/errors#invalid_key"}}}}}},"403":{"description":"`step_up_required` — This action requires a fresh signature from the bound payout address.\n`sanctioned_counterparty` — This address appears on a sanctions list. No payment can be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"step_up_required":{"value":{"code":"step_up_required","message":"This action requires a fresh signature from the bound payout address.","docs_url":"https://x402git.com/docs/errors#step_up_required"}},"sanctioned_counterparty":{"value":{"code":"sanctioned_counterparty","message":"This address appears on a sanctions list. No payment can be processed.","docs_url":"https://x402git.com/docs/errors#sanctioned_counterparty"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/auth/rotate-key":{"post":{"operationId":"postApiAuthRotateKey","summary":"Rotate the API key with a wallet signature","tags":["auth"],"description":"FR-4. No Authorization header: the signature from the bound payout address is the credential. The old key is revoked immediately.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateKeyRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateKeyResponse"}}}},"400":{"description":"`invalid_request` — The request body or parameters did not validate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_request":{"value":{"code":"invalid_request","message":"The request body or parameters did not validate.","docs_url":"https://x402git.com/docs/errors#invalid_request"}}}}}},"401":{"description":"`invalid_signature` — The wallet signature is missing, malformed, expired or already used.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_signature":{"value":{"code":"invalid_signature","message":"The wallet signature is missing, malformed, expired or already used.","docs_url":"https://x402git.com/docs/errors#invalid_signature"}}}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/listings":{"post":{"operationId":"postApiListings","summary":"Create a listing","tags":["creator"],"description":"Rail B (`source: hosted`) provisions a private repo and adds `ssh_public_key` as a write deploy key for that repo only (FR-7, §14.6); the 201 carries the remote, the default branch and github.com's SSH host key fingerprints so the next call is `git push`. Rail A (`source: github`) needs `installation_id` plus either `github_repo_id` or `repo: \"owner/name\"`, and the repository must be **private** — a public one is refused with `422 public_repo` (FR-10). Caps: 3 unpublished listings per creator (D2c).","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateListingRequest"}}}},"responses":{"201":{"description":"Created, in `draft`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateListingResponse"}}}},"400":{"description":"`invalid_request` — The request body or parameters did not validate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_request":{"value":{"code":"invalid_request","message":"The request body or parameters did not validate.","docs_url":"https://x402git.com/docs/errors#invalid_request"}}}}}},"401":{"description":"`invalid_key` — The API key is missing, malformed or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_key":{"value":{"code":"invalid_key","message":"The API key is missing, malformed or revoked.","docs_url":"https://x402git.com/docs/errors#invalid_key"}}}}}},"403":{"description":"`insufficient_scope` — The API key does not carry the scope this route requires.\n`invite_required` — A valid invite code is required to register through the API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"insufficient_scope":{"value":{"code":"insufficient_scope","message":"The API key does not carry the scope this route requires.","docs_url":"https://x402git.com/docs/errors#insufficient_scope"}},"invite_required":{"value":{"code":"invite_required","message":"A valid invite code is required to register through the API.","docs_url":"https://x402git.com/docs/errors#invite_required"}}}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"409":{"description":"`too_many_unpublished` — You already have the maximum number of unpublished listings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"too_many_unpublished":{"value":{"code":"too_many_unpublished","message":"You already have the maximum number of unpublished listings.","docs_url":"https://x402git.com/docs/errors#too_many_unpublished"}}}}}},"422":{"description":"`public_repo` — Only private repositories can be listed. Make the repository private and try again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"public_repo":{"value":{"code":"public_repo","message":"Only private repositories can be listed. Make the repository private and try again.","docs_url":"https://x402git.com/docs/errors#public_repo"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}},"get":{"operationId":"getApiListings","summary":"Your listings","tags":["creator"],"description":"The authenticated creator's own listings, newest first. Every entry carries the same `pricing` block as GET /api/listings/{id} (FR-13).","security":[{"apiKey":[]}],"parameters":[{"name":"cursor","in":"query","required":false,"description":"Opaque pagination cursor from `next_cursor`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"1-100. Defaults to 50.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingList"}}}},"400":{"description":"`invalid_request` — The request body or parameters did not validate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_request":{"value":{"code":"invalid_request","message":"The request body or parameters did not validate.","docs_url":"https://x402git.com/docs/errors#invalid_request"}}}}}},"401":{"description":"`invalid_key` — The API key is missing, malformed or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_key":{"value":{"code":"invalid_key","message":"The API key is missing, malformed or revoked.","docs_url":"https://x402git.com/docs/errors#invalid_key"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/listings/{id}":{"get":{"operationId":"getApiListingsById","summary":"Listing status, licence, latest release, pricing","tags":["creator"],"description":"`latest_release` is the newest release with `scan = pass` (FR-9), and `newest_release` is the newest of any verdict when the two differ — the release that failed is the one whose report a creator needs. Both carry `scan_report`, the full trust report including the path and line of a secret (\"PRD Trust Report.md\" §4.4); it is served here and nowhere else, and never on the list route. Another creator's id returns 404, never 403.","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The listing id.","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Listing"}}}},"400":{"description":"`invalid_request` — The request body or parameters did not validate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_request":{"value":{"code":"invalid_request","message":"The request body or parameters did not validate.","docs_url":"https://x402git.com/docs/errors#invalid_request"}}}}}},"401":{"description":"`invalid_key` — The API key is missing, malformed or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_key":{"value":{"code":"invalid_key","message":"The API key is missing, malformed or revoked.","docs_url":"https://x402git.com/docs/errors#invalid_key"}}}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}},"patch":{"operationId":"patchApiListingsById","summary":"Change price, update price, description or trigger hint","tags":["creator"],"description":"FR-16: price changes apply to future purchases only. Explicit API values are never rounded (FR-12).","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The listing id.","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchListingRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Listing"}}}},"400":{"description":"`invalid_request` — The request body or parameters did not validate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_request":{"value":{"code":"invalid_request","message":"The request body or parameters did not validate.","docs_url":"https://x402git.com/docs/errors#invalid_request"}}}}}},"401":{"description":"`invalid_key` — The API key is missing, malformed or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_key":{"value":{"code":"invalid_key","message":"The API key is missing, malformed or revoked.","docs_url":"https://x402git.com/docs/errors#invalid_key"}}}}}},"403":{"description":"`insufficient_scope` — The API key does not carry the scope this route requires.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"insufficient_scope":{"value":{"code":"insufficient_scope","message":"The API key does not carry the scope this route requires.","docs_url":"https://x402git.com/docs/errors#insufficient_scope"}}}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"410":{"description":"`retired` — This listing is no longer sold.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"retired":{"value":{"code":"retired","message":"This listing is no longer sold.","docs_url":"https://x402git.com/docs/errors#retired"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}},"delete":{"operationId":"deleteApiListingsById","summary":"Retire (stop selling)","tags":["creator"],"description":"FR-43. Terminal. Holders keep every version they own; the manifest and release log stay up, marked no longer sold. A hosted repo is archived, not deleted.","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The listing id.","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetireResponse"}}}},"401":{"description":"`invalid_key` — The API key is missing, malformed or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_key":{"value":{"code":"invalid_key","message":"The API key is missing, malformed or revoked.","docs_url":"https://x402git.com/docs/errors#invalid_key"}}}}}},"403":{"description":"`insufficient_scope` — The API key does not carry the scope this route requires.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"insufficient_scope":{"value":{"code":"insufficient_scope","message":"The API key does not carry the scope this route requires.","docs_url":"https://x402git.com/docs/errors#insufficient_scope"}}}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"410":{"description":"`retired` — This listing is no longer sold.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"retired":{"value":{"code":"retired","message":"This listing is no longer sold.","docs_url":"https://x402git.com/docs/errors#retired"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/listings/{id}/sync":{"post":{"operationId":"postApiListingsByIdSync","summary":"Cut a version now","tags":["creator"],"description":"FR-8. Also the recovery path for a dropped webhook, and the only path for a tag pushed before the listing existed. With no `ref` and no `version`, cuts the repository's newest `vX.Y.Z` tag that has not been cut yet; `version` is required when a `ref` is given and that ref is untagged.","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The listing id.","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncRequest"}}}},"responses":{"202":{"description":"Accepted; analysis, snapshot and scan follow.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncResponse"}}}},"400":{"description":"`invalid_request` — The request body or parameters did not validate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_request":{"value":{"code":"invalid_request","message":"The request body or parameters did not validate.","docs_url":"https://x402git.com/docs/errors#invalid_request"}}}}}},"401":{"description":"`invalid_key` — The API key is missing, malformed or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_key":{"value":{"code":"invalid_key","message":"The API key is missing, malformed or revoked.","docs_url":"https://x402git.com/docs/errors#invalid_key"}}}}}},"403":{"description":"`insufficient_scope` — The API key does not carry the scope this route requires.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"insufficient_scope":{"value":{"code":"insufficient_scope","message":"The API key does not carry the scope this route requires.","docs_url":"https://x402git.com/docs/errors#insufficient_scope"}}}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"409":{"description":"`version_exists` — That version already exists for this listing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"version_exists":{"value":{"code":"version_exists","message":"That version already exists for this listing.","docs_url":"https://x402git.com/docs/errors#version_exists"}}}}}},"410":{"description":"`retired` — This listing is no longer sold.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"retired":{"value":{"code":"retired","message":"This listing is no longer sold.","docs_url":"https://x402git.com/docs/errors#retired"}}}}}},"413":{"description":"`repo_too_large` — The repository exceeds the 200 MB / 20,000 file cap.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"repo_too_large":{"value":{"code":"repo_too_large","message":"The repository exceeds the 200 MB / 20,000 file cap.","docs_url":"https://x402git.com/docs/errors#repo_too_large"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/listings/{id}/licence":{"post":{"operationId":"postApiListingsByIdLicence","summary":"Commit an allow-listed LICENSE (Rail B)","tags":["creator"],"description":"FR-11. MIT, Apache-2.0, BSD-3-Clause or MPL-2.0, committed to `main`. The attestation is made by the registering operator (D4).","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The listing id.","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenceRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenceResponse"}}}},"400":{"description":"`invalid_request` — The request body or parameters did not validate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_request":{"value":{"code":"invalid_request","message":"The request body or parameters did not validate.","docs_url":"https://x402git.com/docs/errors#invalid_request"}}}}}},"401":{"description":"`invalid_key` — The API key is missing, malformed or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_key":{"value":{"code":"invalid_key","message":"The API key is missing, malformed or revoked.","docs_url":"https://x402git.com/docs/errors#invalid_key"}}}}}},"403":{"description":"`insufficient_scope` — The API key does not carry the scope this route requires.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"insufficient_scope":{"value":{"code":"insufficient_scope","message":"The API key does not carry the scope this route requires.","docs_url":"https://x402git.com/docs/errors#insufficient_scope"}}}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"410":{"description":"`retired` — This listing is no longer sold.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"retired":{"value":{"code":"retired","message":"This listing is no longer sold.","docs_url":"https://x402git.com/docs/errors#retired"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/listings/{id}/ssh-key":{"put":{"operationId":"putApiListingsByIdSshKey","summary":"Rotate the deploy key","tags":["creator"],"description":"FR-7 / FR-5. Step-up required. One public key, one repo (§14.6): the new key is added before the old one is removed.","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The listing id.","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SshKeyRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SshKeyResponse"}}}},"400":{"description":"`invalid_request` — The request body or parameters did not validate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_request":{"value":{"code":"invalid_request","message":"The request body or parameters did not validate.","docs_url":"https://x402git.com/docs/errors#invalid_request"}}}}}},"401":{"description":"`invalid_key` — The API key is missing, malformed or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_key":{"value":{"code":"invalid_key","message":"The API key is missing, malformed or revoked.","docs_url":"https://x402git.com/docs/errors#invalid_key"}}}}}},"403":{"description":"`insufficient_scope` — The API key does not carry the scope this route requires.\n`step_up_required` — This action requires a fresh signature from the bound payout address.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"insufficient_scope":{"value":{"code":"insufficient_scope","message":"The API key does not carry the scope this route requires.","docs_url":"https://x402git.com/docs/errors#insufficient_scope"}},"step_up_required":{"value":{"code":"step_up_required","message":"This action requires a fresh signature from the bound payout address.","docs_url":"https://x402git.com/docs/errors#step_up_required"}}}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"410":{"description":"`retired` — This listing is no longer sold.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"retired":{"value":{"code":"retired","message":"This listing is no longer sold.","docs_url":"https://x402git.com/docs/errors#retired"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/listings/{id}/publish":{"post":{"operationId":"postApiListingsByIdPublish","summary":"Publish: draft → live","tags":["creator"],"description":"FR-42. Needs a licence pass, at least one passing release, a description, and — on Rail A — a repository that is still private (FR-10). A 409 `listing_not_ready` carries `details.blocking[]` with every unmet requirement at once. Publishing a live listing is an idempotent 200.","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The listing id.","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"responses":{"200":{"description":"Live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishResponse"}}}},"401":{"description":"`invalid_key` — The API key is missing, malformed or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_key":{"value":{"code":"invalid_key","message":"The API key is missing, malformed or revoked.","docs_url":"https://x402git.com/docs/errors#invalid_key"}}}}}},"403":{"description":"`insufficient_scope` — The API key does not carry the scope this route requires.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"insufficient_scope":{"value":{"code":"insufficient_scope","message":"The API key does not carry the scope this route requires.","docs_url":"https://x402git.com/docs/errors#insufficient_scope"}}}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"409":{"description":"Not ready. `details.blocking[]` lists every unmet requirement.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingNotReady"}}}},"410":{"description":"`retired` — This listing is no longer sold.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"retired":{"value":{"code":"retired","message":"This listing is no longer sold.","docs_url":"https://x402git.com/docs/errors#retired"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/listings/{id}/repo":{"delete":{"operationId":"deleteApiListingsByIdRepo","summary":"Delete the hosted repo","tags":["creator"],"description":"FR-44. Step-up required. Releases with at least one purchase are retained — they are the product (FR-46).","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The listing id.","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRepoRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRepoResponse"}}}},"400":{"description":"`invalid_request` — The request body or parameters did not validate.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_request":{"value":{"code":"invalid_request","message":"The request body or parameters did not validate.","docs_url":"https://x402git.com/docs/errors#invalid_request"}}}}}},"401":{"description":"`invalid_key` — The API key is missing, malformed or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_key":{"value":{"code":"invalid_key","message":"The API key is missing, malformed or revoked.","docs_url":"https://x402git.com/docs/errors#invalid_key"}}}}}},"403":{"description":"`insufficient_scope` — The API key does not carry the scope this route requires.\n`step_up_required` — This action requires a fresh signature from the bound payout address.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"insufficient_scope":{"value":{"code":"insufficient_scope","message":"The API key does not carry the scope this route requires.","docs_url":"https://x402git.com/docs/errors#insufficient_scope"}},"step_up_required":{"value":{"code":"step_up_required","message":"This action requires a fresh signature from the bound payout address.","docs_url":"https://x402git.com/docs/errors#step_up_required"}}}}}},"404":{"description":"`not_found` — No such listing, version or resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"code":"not_found","message":"No such listing, version or resource.","docs_url":"https://x402git.com/docs/errors#not_found"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/earnings":{"get":{"operationId":"getApiEarnings","summary":"The ledger view","tags":["creator"],"description":"FR-29. Sale rows carry version, kind, amount and time — never the buyer address, never the transaction hash (FR-40).","security":[{"apiKey":[]}],"parameters":[{"name":"cursor","in":"query","required":false,"description":"Opaque pagination cursor from `next_cursor`.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Earnings"}}}},"401":{"description":"`invalid_key` — The API key is missing, malformed or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_key":{"value":{"code":"invalid_key","message":"The API key is missing, malformed or revoked.","docs_url":"https://x402git.com/docs/errors#invalid_key"}}}}}},"403":{"description":"`insufficient_scope` — The API key does not carry the scope this route requires.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"insufficient_scope":{"value":{"code":"insufficient_scope","message":"The API key does not carry the scope this route requires.","docs_url":"https://x402git.com/docs/errors#insufficient_scope"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/payouts/sweep":{"post":{"operationId":"postApiPayoutsSweep","summary":"Force a sweep of the released balance","tags":["creator"],"description":"FR-26. Payouts go only to the bound payout address; there is no `to` parameter. Normally the daily cron does this and you never call it.","security":[{"apiKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sweep"}}}},"401":{"description":"`invalid_key` — The API key is missing, malformed or revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_key":{"value":{"code":"invalid_key","message":"The API key is missing, malformed or revoked.","docs_url":"https://x402git.com/docs/errors#invalid_key"}}}}}},"403":{"description":"`sanctioned_counterparty` — This address appears on a sanctions list. No payment can be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"sanctioned_counterparty":{"value":{"code":"sanctioned_counterparty","message":"This address appears on a sanctions list. No payment can be processed.","docs_url":"https://x402git.com/docs/errors#sanctioned_counterparty"}}}}}},"429":{"description":"`rate_limited` — Too many requests. Retry after the interval given.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"value":{"code":"rate_limited","message":"Too many requests. Retry after the interval given.","docs_url":"https://x402git.com/docs/errors#rate_limited","retry_after_seconds":60}}}}},"headers":{"retry-after":{"description":"Seconds to wait.","schema":{"type":"string"}}}}}}},"/api/webhooks/github":{"post":{"operationId":"postApiWebhooksGithub","summary":"GitHub webhook","tags":["internal"],"description":"FR-8. `push` (version tags), `release` (published), `installation` and `installation_repositories`. The signature is verified over the raw body; deliveries older than 5 minutes are refused; `X-GitHub-Delivery` is deduplicated; the listing is resolved by installation and repo id, never by name. Every outcome after a valid signature is a 2xx, so a failure never teaches GitHub to disable the hook.","security":[],"responses":{"200":{"description":"Handled: a release was cut, listings were retired, or the delivery was a duplicate."},"202":{"description":"Accepted but not acted on: unknown listing, stale delivery, ignored event, or a refusal such as `version_exists`."},"401":{"description":"`invalid_signature` — The wallet signature is missing, malformed, expired or already used.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"invalid_signature":{"value":{"code":"invalid_signature","message":"The wallet signature is missing, malformed, expired or already used.","docs_url":"https://x402git.com/docs/errors#invalid_signature"}}}}}}}}},"/api/cron/sweep":{"get":{"operationId":"getApiCronSweep","summary":"Daily sweep","tags":["internal"],"description":"FR-26 / FR-28. Vercel Cron.","security":[],"responses":{"200":{"description":"Swept"}}}},"/api/cron/reconcile":{"get":{"operationId":"getApiCronReconcile","summary":"Daily reconciliation","tags":["internal"],"description":"FR-28. Reconciles the receiving address's on-chain balance and every recorded tx hash against chain. Variance halts sweeps.","security":[],"responses":{"200":{"description":"Reconciled"}}}},"/api/r/examples/changelog-writer":{"get":{"operationId":"buy_examples_changelog_writer","summary":"Buy examples/changelog-writer","description":"Turns the git log between two tags into a clean changelog. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/examples/changelog-writer; the page a person buys on is https://x402git.com/examples/changelog-writer. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"5.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/examples/humanizer":{"get":{"operationId":"buy_examples_humanizer","summary":"Buy examples/humanizer","description":"Rewrites AI-sounding prose into plain English. One script, one skill file. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/examples/humanizer; the page a person buys on is https://x402git.com/examples/humanizer. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"9.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/examples/repo-digest":{"get":{"operationId":"buy_examples_repo_digest","summary":"Buy examples/repo-digest","description":"Summarises any repository into a one-page markdown digest. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/examples/repo-digest; the page a person buys on is https://x402git.com/examples/repo-digest. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"9.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/agent-operations-control-room-sdk":{"get":{"operationId":"buy_genesiscode2026_agent_operations_control_room_sdk","summary":"Buy genesiscode2026/agent-operations-control-room-sdk","description":"Real-time event bus, state inspection and pause/resume controls for agent operations. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/agent-operations-control-room-sdk; the page a person buys on is https://x402git.com/genesiscode2026/agent-operations-control-room-sdk. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"149.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/agent-workspace-guard-sdk":{"get":{"operationId":"buy_genesiscode2026_agent_workspace_guard_sdk","summary":"Buy genesiscode2026/agent-workspace-guard-sdk","description":"In-process filesystem confinement and command-policy guardrails for autonomous coding agents. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/agent-workspace-guard-sdk; the page a person buys on is https://x402git.com/genesiscode2026/agent-workspace-guard-sdk. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"149.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/ai-agent-assurance-suite":{"get":{"operationId":"buy_genesiscode2026_ai_agent_assurance_suite","summary":"Buy genesiscode2026/ai-agent-assurance-suite","description":"Integrated runtime sandboxing, adversarial benchmarking and packaging pipeline. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/ai-agent-assurance-suite; the page a person buys on is https://x402git.com/genesiscode2026/ai-agent-assurance-suite. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"449.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/ai-agent-redteam-benchmark-lab":{"get":{"operationId":"buy_genesiscode2026_ai_agent_redteam_benchmark_lab","summary":"Buy genesiscode2026/ai-agent-redteam-benchmark-lab","description":"Adversarial containment and security evaluation suite for AI agents. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/ai-agent-redteam-benchmark-lab; the page a person buys on is https://x402git.com/genesiscode2026/ai-agent-redteam-benchmark-lab. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"199.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/candid-compatibility-detector":{"get":{"operationId":"buy_genesiscode2026_candid_compatibility_detector","summary":"Buy genesiscode2026/candid-compatibility-detector","description":"Detects breaking changes and compatibility issues across Candid interfaces for the Internet Computer. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/candid-compatibility-detector; the page a person buys on is https://x402git.com/genesiscode2026/candid-compatibility-detector. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"149.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/deterministic-agent-replay-sdk":{"get":{"operationId":"buy_genesiscode2026_deterministic_agent_replay_sdk","summary":"Buy genesiscode2026/deterministic-agent-replay-sdk","description":"Deterministic replay of AI-agent execution for reproducible debugging. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/deterministic-agent-replay-sdk; the page a person buys on is https://x402git.com/genesiscode2026/deterministic-agent-replay-sdk. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"249.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/durable-deal-workflow-sdk":{"get":{"operationId":"buy_genesiscode2026_durable_deal_workflow_sdk","summary":"Buy genesiscode2026/durable-deal-workflow-sdk","description":"Cryptographically auditable finite-state machine for deal progression and approvals. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/durable-deal-workflow-sdk; the page a person buys on is https://x402git.com/genesiscode2026/durable-deal-workflow-sdk. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"129.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/forecast-aware-financial-charting":{"get":{"operationId":"buy_genesiscode2026_forecast_aware_financial_charting","summary":"Buy genesiscode2026/forecast-aware-financial-charting","description":"White-label HTML5 Canvas financial charting with forecast horizons and native quantile uncertainty visualization. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/forecast-aware-financial-charting; the page a person buys on is https://x402git.com/genesiscode2026/forecast-aware-financial-charting. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"99.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/forecast-quant-verification-suite":{"get":{"operationId":"buy_genesiscode2026_forecast_quant_verification_suite","summary":"Buy genesiscode2026/forecast-quant-verification-suite","description":"Integrated forecast visualization, tamper-evident prediction commitments and probabilistic calibration tooling. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/forecast-quant-verification-suite; the page a person buys on is https://x402git.com/genesiscode2026/forecast-quant-verification-suite. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"169.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/icp-multi-exchange-price-oracle":{"get":{"operationId":"buy_genesiscode2026_icp_multi_exchange_price_oracle","summary":"Buy genesiscode2026/icp-multi-exchange-price-oracle","description":"Rust/ICP multi-exchange price oracle with Binance, Coinbase and OKX HTTPS outcalls, provenance and validation safeguards. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/icp-multi-exchange-price-oracle; the page a person buys on is https://x402git.com/genesiscode2026/icp-multi-exchange-price-oracle. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"249.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/icp-rbac-canister-kit":{"get":{"operationId":"buy_genesiscode2026_icp_rbac_canister_kit","summary":"Buy genesiscode2026/icp-rbac-canister-kit","description":"Production-grade Role-Based Access Control (RBAC) canister infrastructure and audit trail for the Internet Computer. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/icp-rbac-canister-kit; the page a person buys on is https://x402git.com/genesiscode2026/icp-rbac-canister-kit. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"149.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/institutional-financial-scanner-ui":{"get":{"operationId":"buy_genesiscode2026_institutional_financial_scanner_ui","summary":"Buy genesiscode2026/institutional-financial-scanner-ui","description":"Virtualized sorting, volatility heatmaps and data adapters for institutional scanning. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/institutional-financial-scanner-ui; the page a person buys on is https://x402git.com/genesiscode2026/institutional-financial-scanner-ui. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"199.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/local-durable-workflow-engine":{"get":{"operationId":"buy_genesiscode2026_local_durable_workflow_engine","summary":"Buy genesiscode2026/local-durable-workflow-engine","description":"Zero-cloud durable state machine, persistent action queue, and tamper-evident audit ledger for local AI agents. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/local-durable-workflow-engine; the page a person buys on is https://x402git.com/genesiscode2026/local-durable-workflow-engine. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"119.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/local-first-privacy-encryption-sdk":{"get":{"operationId":"buy_genesiscode2026_local_first_privacy_encryption_sdk","summary":"Buy genesiscode2026/local-first-privacy-encryption-sdk","description":"Local-first client-side encryption SDK with AES-256-GCM, zero-knowledge key derivation and integrity checks. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/local-first-privacy-encryption-sdk; the page a person buys on is https://x402git.com/genesiscode2026/local-first-privacy-encryption-sdk. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"149.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/market-data-freshness-engine":{"get":{"operationId":"buy_genesiscode2026_market_data_freshness_engine","summary":"Buy genesiscode2026/market-data-freshness-engine","description":"Detects stale financial market data with provenance and freshness scoring. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/market-data-freshness-engine; the page a person buys on is https://x402git.com/genesiscode2026/market-data-freshness-engine. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"199.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/mcp-agent-security-gateway":{"get":{"operationId":"buy_genesiscode2026_mcp_agent_security_gateway","summary":"Buy genesiscode2026/mcp-agent-security-gateway","description":"Fail-closed JSON-RPC tool-call policy middleware for AI agents. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/mcp-agent-security-gateway; the page a person buys on is https://x402git.com/genesiscode2026/mcp-agent-security-gateway. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"149.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/point-in-time-quant-validator":{"get":{"operationId":"buy_genesiscode2026_point_in_time_quant_validator","summary":"Buy genesiscode2026/point-in-time-quant-validator","description":"Zero-dependency purged walk-forward splitting and leakage audit for point-in-time validation. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/point-in-time-quant-validator; the page a person buys on is https://x402git.com/genesiscode2026/point-in-time-quant-validator. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"129.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/prediction-audit-calibration-ledger":{"get":{"operationId":"buy_genesiscode2026_prediction_audit_calibration_ledger","summary":"Buy genesiscode2026/prediction-audit-calibration-ledger","description":"Tamper-evident forecast recording, SHA-256 commitment verification and Brier-score calibration for models and agents. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/prediction-audit-calibration-ledger; the page a person buys on is https://x402git.com/genesiscode2026/prediction-audit-calibration-ledger. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"99.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/quant-experiment-provenance-registry":{"get":{"operationId":"buy_genesiscode2026_quant_experiment_provenance_registry","summary":"Buy genesiscode2026/quant-experiment-provenance-registry","description":"Provenance registry for reproducible quant experiments. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/quant-experiment-provenance-registry; the page a person buys on is https://x402git.com/genesiscode2026/quant-experiment-provenance-registry. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"149.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/quant-walk-forward-engine":{"get":{"operationId":"buy_genesiscode2026_quant_walk_forward_engine","summary":"Buy genesiscode2026/quant-walk-forward-engine","description":"Purged cross-validation and embargo time-series backtesting for walk-forward optimization. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/quant-walk-forward-engine; the page a person buys on is https://x402git.com/genesiscode2026/quant-walk-forward-engine. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"249.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/reproducible-quant-research-suite":{"get":{"operationId":"buy_genesiscode2026_reproducible_quant_research_suite","summary":"Buy genesiscode2026/reproducible-quant-research-suite","description":"Integrated temporal validation, walk-forward testing and forecast calibration. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/reproducible-quant-research-suite; the page a person buys on is https://x402git.com/genesiscode2026/reproducible-quant-research-suite. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"549.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/safe-agent-engineering-suite":{"get":{"operationId":"buy_genesiscode2026_safe_agent_engineering_suite","summary":"Buy genesiscode2026/safe-agent-engineering-suite","description":"Integrated agent workspace guardrails and verifiable software-delivery pipeline for autonomous coding workflows. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/safe-agent-engineering-suite; the page a person buys on is https://x402git.com/genesiscode2026/safe-agent-engineering-suite. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"199.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/tool-call-contract-validator":{"get":{"operationId":"buy_genesiscode2026_tool_call_contract_validator","summary":"Buy genesiscode2026/tool-call-contract-validator","description":"Contract validation for tool calls in AI agents. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/tool-call-contract-validator; the page a person buys on is https://x402git.com/genesiscode2026/tool-call-contract-validator. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"149.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/genesiscode2026/verifiable-delivery-packager":{"get":{"operationId":"buy_genesiscode2026_verifiable_delivery_packager","summary":"Buy genesiscode2026/verifiable-delivery-packager","description":"Deterministic software-delivery packaging with integrity manifests, executable-bit auditing and cryptographic review receipts. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/genesiscode2026/verifiable-delivery-packager; the page a person buys on is https://x402git.com/genesiscode2026/verifiable-delivery-packager. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"79.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/pcmarts/acl-recovery-tracker":{"get":{"operationId":"buy_pcmarts_acl_recovery_tracker","summary":"Buy pcmarts/acl-recovery-tracker","description":"tracks the recovery of your ACL when you've just had surgery A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/pcmarts/acl-recovery-tracker; the page a person buys on is https://x402git.com/pcmarts/acl-recovery-tracker. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"1.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/pcmarts/crypto-balanced-portolio-builder":{"get":{"operationId":"buy_pcmarts_crypto_balanced_portolio_builder","summary":"Buy pcmarts/crypto-balanced-portolio-builder","description":"Balances your crypto portfolio using coinstats export A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/pcmarts/crypto-balanced-portolio-builder; the page a person buys on is https://x402git.com/pcmarts/crypto-balanced-portolio-builder. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.02"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/pixelforge-code/evidence-json-flattener":{"get":{"operationId":"buy_pixelforge_code_evidence_json_flattener","summary":"Buy pixelforge-code/evidence-json-flattener","description":"Dependency-free Node.js CLI that deterministically flattens nested JSON evidence into path/value rows, preserves array indexes, sorts object keys, and includes a SHA-256 digest of the exact input bytes. Includes source, fixture, and MIT license. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/pixelforge-code/evidence-json-flattener; the page a person buys on is https://x402git.com/pixelforge-code/evidence-json-flattener. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"1.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/pixelforge-code/evidence-slice-auditor":{"get":{"operationId":"buy_pixelforge_code_evidence_slice_auditor","summary":"Buy pixelforge-code/evidence-slice-auditor","description":"Dependency-free Node CLI for validating exact benchmark slices, computing deterministic metric rankings, hashing the input evidence, and emitting a reproducible JSON audit report. Includes source, MIT license, fixture, and no external dependencies. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/pixelforge-code/evidence-slice-auditor; the page a person buys on is https://x402git.com/pixelforge-code/evidence-slice-auditor. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"5.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}},"/api/r/pixelforge-code/json-contract-checker":{"get":{"operationId":"buy_pixelforge_code_json_contract_checker","summary":"Buy pixelforge-code/json-contract-checker","description":"Dependency-free Node.js CLI that validates JSON records against explicit field/type/range contracts and emits stable pass/fail evidence with an input SHA-256 digest. Includes source, fixture, and MIT license. A private git repository sold as a zip over x402. The free manifest is at https://x402git.com/api/label/pixelforge-code/json-contract-checker; the page a person buys on is https://x402git.com/pixelforge-code/json-contract-checker. Unpaid GET answers 402 with the price and the exact requirement to sign; the same request carrying PAYMENT-SIGNATURE (and extra.quote_id as X-Quote-Id) returns a signed download URL once the payment settles. A holder re-fetches for free with X-Wallet-Signature.","tags":["public","listings"],"security":[{"walletSignature":[]}],"parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"description":"The base64 x402 v2 payment payload. Absent on the first request; present on the paying one.","schema":{"type":"string"}},{"name":"X-Quote-Id","in":"header","required":false,"description":"Echo `extra.quote_id` from the 402 you are paying against (FR-23).","schema":{"type":"string"}}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"3.00"},"description":"USDC on Base; the amount is the new-buyer price. A wallet that already holds an earlier version is quoted the update price instead, never more."},"responses":{"200":{"description":"Granted. `download_url` is signed and expires in 5 minutes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceGrant"}}}},"402":{"description":"Payment required. Also sent in the `PAYMENT-REQUIRED` header; `extensions.bazaar` is the discovery declaration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}}}}}},"components":{"schemas":{"MicroUsdc":{"type":"string","pattern":"^\\d+$","title":"Micro-USDC","description":"An amount in micro-USDC (6 decimals) encoded as a decimal integer string. 9000000 = $9.00.","examples":["9000000"]},"PriceMicro":{"type":"string","pattern":"^\\d+$","description":"A listing price in micro-USDC: at least 10000 (D2b), never 0. The floor is technical and is never suggested.","examples":["9000000"]},"UpdatePriceMicro":{"type":"string","pattern":"^\\d+$","description":"The update price in micro-USDC. 0 means lifetime access: a purchase made at 0 is stamped all_versions (FR-16, D1).","examples":["5000000"]},"Address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"An EVM address, 0x-prefixed and 40 hex characters.","examples":["0x0000000000000000000000000000000000000001"]},"Handle":{"type":"string","pattern":"^[a-z0-9-]{2,40}$","description":"A creator handle. The `owner` segment of every URL."},"Slug":{"type":"string","pattern":"^[a-z0-9-]{2,40}$","description":"A listing slug, unique per owner. `api`, `v`, `r` and `label` are reserved. Never reused after retirement."},"SemVer":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+$","description":"A release version: the git tag with any leading `v` stripped.","examples":["1.2.0"]},"Sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"IsoDateTime":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","description":"RFC 3339 timestamp."},"Nonce":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$","description":"The opaque nonce from GET /api/auth/challenge. Single use, 5-minute expiry."},"HexSignature":{"type":"string","maxLength":4096,"pattern":"^0x[0-9a-fA-F]+$","description":"An EIP-191 personal_sign signature, or an ERC-1271 payload for a contract wallet."},"SignedChallenge":{"type":"object","properties":{"nonce":{"$ref":"#/components/schemas/Nonce"},"signature":{"$ref":"#/components/schemas/HexSignature"}},"required":["nonce","signature"],"additionalProperties":false,"description":"A signature over the message returned by GET /api/auth/challenge for the address in question."},"Cursor":{"type":"string","minLength":1,"maxLength":256,"description":"Opaque pagination cursor. Pass it back as ?cursor=."},"HttpsUrl":{"type":"string","description":"An https URL. FR-41: no http, no redirects, must resolve to a public unicast IP at call time."},"Email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"ErrorCode":{"type":"string","enum":["insufficient_balance","expired_authorization","replay","settlement_pending","settlement_timeout","authorization_mismatch","price_changed","sanctioned_counterparty","listing_not_ready","licence_block","scan_failed","version_exists","description_missing","retired","not_entitled","derivative_of","public_repo","invalid_key","insufficient_scope","step_up_required","terms_version_stale","payout_address_unverified","invite_required","invalid_signature","rate_limited","repo_too_large","too_many_unpublished","blocked_jurisdiction","paused","invalid_request","not_found","internal"],"description":"The PRD §9 error catalogue."},"Error":{"type":"object","properties":{"code":{"$ref":"#/components/schemas/ErrorCode"},"message":{"type":"string"},"docs_url":{"type":"string"},"details":{},"retry_after_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["code","message","docs_url"],"additionalProperties":false,"description":"Every error on every route. `docs_url` anchors into /docs/errors.","examples":[{"code":"invite_required","message":"A valid invite code is required to register through the API.","docs_url":"https://x402git.com/docs/errors#invite_required"}]},"ListingNotReadyDetails":{"type":"object","properties":{"blocking":{"type":"array","items":{"type":"string","enum":["scan_pending","scan_failed","licence_block","description_missing","no_release","derivative_of","public_repo"]}}},"required":["blocking"],"additionalProperties":false},"Terms":{"type":"object","properties":{"version":{"type":"string","minLength":1},"url":{"type":"string"},"sha256":{"$ref":"#/components/schemas/Sha256"},"buyer_terms":{"type":"object","properties":{"version":{"type":"string","minLength":1},"url":{"type":"string"},"sha256":{"$ref":"#/components/schemas/Sha256"}},"required":["version","url","sha256"],"additionalProperties":false}},"required":["version","url","sha256","buyer_terms"],"additionalProperties":false,"description":"The current creator agreement, plus the buyer terms. `accepted_terms_version` on POST /api/creators must equal the top-level `version`; `buyer_terms` is published for reading and is never accepted.","examples":[{"version":"2026-09-16","url":"https://x402git.com/terms.md","sha256":"0000000000000000000000000000000000000000000000000000000000000000","buyer_terms":{"version":"2026-09-03","url":"https://x402git.com/buyer-terms.md","sha256":"0000000000000000000000000000000000000000000000000000000000000000"}}]},"ChallengePurpose":{"type":"string","enum":["address_proof","step_up","rotate_key","wallet_ownership"],"description":"The action a challenge signature authorises. Required."},"ChallengeQuery":{"type":"object","properties":{"address":{"$ref":"#/components/schemas/Address"},"purpose":{"$ref":"#/components/schemas/ChallengePurpose"}},"required":["address","purpose"],"additionalProperties":false},"Challenge":{"type":"object","properties":{"nonce":{"$ref":"#/components/schemas/Nonce"},"message":{"type":"string"},"expires_at":{"$ref":"#/components/schemas/IsoDateTime"},"address":{"$ref":"#/components/schemas/Address"}},"required":["nonce","message","expires_at","address"],"additionalProperties":false,"description":"A single-use challenge, valid 5 minutes. Sign `message` verbatim (EIP-191 personal_sign) and present it as `address_proof`, `step_up`, the rotate-key body, or the `X-Wallet-Signature: <address>.<nonce>.<signature>` header."},"ApiScope":{"type":"string","enum":["listings:write","earnings:read"]},"WalletMode":{"type":"string","enum":["linked","custodial"],"description":"D12. `linked` is the only mode the API accepts; `custodial` is web-only, for GitHub-authenticated humans."},"OnboardedVia":{"type":"string","enum":["web","api"]},"CreateCreatorRequest":{"type":"object","properties":{"handle":{"$ref":"#/components/schemas/Handle"},"payout_address":{"$ref":"#/components/schemas/Address"},"address_proof":{"$ref":"#/components/schemas/SignedChallenge"},"accepted_terms_version":{"type":"string","minLength":1},"invite_code":{"type":"string","minLength":1,"maxLength":128},"abuse_contact_url":{"$ref":"#/components/schemas/HttpsUrl"},"abuse_contact_email":{"$ref":"#/components/schemas/Email"}},"required":["handle","payout_address","address_proof","accepted_terms_version"],"additionalProperties":false,"description":"Headless registration. The payout address must be an address you control and can sign from — exchange deposit addresses are unsupported."},"CreateCreatorResponse":{"type":"object","properties":{"creator_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"api_key":{"type":"string"},"handle":{"$ref":"#/components/schemas/Handle"},"payout_address":{"$ref":"#/components/schemas/Address"},"api_key_scopes":{"type":"array","items":{"$ref":"#/components/schemas/ApiScope"}},"platform_fee_bps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"holdback_days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"terms_version":{"type":"string"},"created_at":{"$ref":"#/components/schemas/IsoDateTime"}},"required":["creator_id","api_key","handle","payout_address","api_key_scopes","platform_fee_bps","holdback_days","terms_version","created_at"],"additionalProperties":false,"description":"`api_key` is shown exactly once. Store it before you make the next call."},"Creator":{"type":"object","properties":{"creator_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"handle":{"$ref":"#/components/schemas/Handle"},"payout_address":{"$ref":"#/components/schemas/Address"},"pending_payout_address":{"anyOf":[{"$ref":"#/components/schemas/Address"},{"type":"null"}]},"rebind_effective_at":{"anyOf":[{"$ref":"#/components/schemas/IsoDateTime"},{"type":"null"}]},"wallet_mode":{"$ref":"#/components/schemas/WalletMode"},"onboarded_via":{"$ref":"#/components/schemas/OnboardedVia"},"api_key_scopes":{"type":"array","items":{"$ref":"#/components/schemas/ApiScope"}},"abuse_contact_url":{"type":["string","null"]},"abuse_contact_email":{"type":["string","null"]},"pending_abuse_contact_url":{"type":["string","null"]},"pending_abuse_contact_email":{"type":["string","null"]},"terms_version":{"type":"string"},"terms_accepted_at":{"$ref":"#/components/schemas/IsoDateTime"},"created_at":{"$ref":"#/components/schemas/IsoDateTime"},"platform_fee_bps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"holdback_days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["creator_id","handle","payout_address","pending_payout_address","rebind_effective_at","wallet_mode","onboarded_via","api_key_scopes","abuse_contact_url","abuse_contact_email","terms_version","terms_accepted_at","created_at","platform_fee_bps","holdback_days"],"additionalProperties":false,"description":"The authenticated creator. Never includes the API key."},"UpdateCreatorRequest":{"type":"object","properties":{"payout_address":{"$ref":"#/components/schemas/Address"},"abuse_contact_url":{"anyOf":[{"$ref":"#/components/schemas/HttpsUrl"},{"type":"null"}]},"abuse_contact_email":{"anyOf":[{"$ref":"#/components/schemas/Email"},{"type":"null"}]},"step_up":{"$ref":"#/components/schemas/SignedChallenge"}},"additionalProperties":false,"description":"Step-up (a signature from the currently bound payout address) is required for every field here."},"UpdateCreatorResponse":{"type":"object","properties":{"creator_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"payout_address":{"$ref":"#/components/schemas/Address"},"pending_payout_address":{"anyOf":[{"$ref":"#/components/schemas/Address"},{"type":"null"}]},"rebind_effective_at":{"anyOf":[{"$ref":"#/components/schemas/IsoDateTime"},{"type":"null"}]},"abuse_contact_url":{"type":["string","null"]},"abuse_contact_email":{"type":["string","null"]},"pending_abuse_contact_url":{"type":["string","null"]},"pending_abuse_contact_email":{"type":["string","null"]},"effective_at":{"anyOf":[{"$ref":"#/components/schemas/IsoDateTime"},{"type":"null"}]}},"required":["creator_id","payout_address","pending_payout_address","rebind_effective_at","abuse_contact_url","abuse_contact_email","effective_at"],"additionalProperties":false,"description":"Sweeps continue to the old address until `rebind_effective_at` passes (§7.6)."},"RotateKeyRequest":{"type":"object","properties":{"handle":{"$ref":"#/components/schemas/Handle"},"address":{"$ref":"#/components/schemas/Address"},"nonce":{"$ref":"#/components/schemas/Nonce"},"signature":{"$ref":"#/components/schemas/HexSignature"}},"required":["handle","address","nonce","signature"],"additionalProperties":false,"description":"No Authorization header is required: the wallet signature is the credential. `handle` disambiguates which creator, since a payout address may be shared (W2.5)."},"RotateKeyResponse":{"type":"object","properties":{"creator_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"handle":{"$ref":"#/components/schemas/Handle"},"api_key":{"type":"string"},"api_key_scopes":{"type":"array","items":{"$ref":"#/components/schemas/ApiScope"}},"rotated_at":{"$ref":"#/components/schemas/IsoDateTime"}},"required":["creator_id","handle","api_key","api_key_scopes","rotated_at"],"additionalProperties":false,"description":"The previous key is revoked the moment this returns."},"ScanCheckId":{"type":"string","enum":["secrets","limits","known_vulns","known_malware","dep_behaviour","capabilities","injection"],"description":"Which check a finding belongs to. The report carries one row per id whether or not it ran."},"ScanCheckStatus":{"type":"string","enum":["pass","findings","fail","unavailable","partial"],"description":"pass · findings · fail · unavailable (could not run, retrying) · partial (ran, some packages still pending)."},"ScanTier":{"type":"string","enum":["blocking","disclosed","review"],"description":"§4.1. `blocking` fails the release. `disclosed` sells and is shown. `review` is a model-derived flag from a vendor — shown as flagged for review, never a verdict."},"ScanSeverity":{"type":"string","enum":["CRITICAL","HIGH","MODERATE","LOW","UNKNOWN"]},"ScanFindingKind":{"type":"string","enum":["secret","vulnerability","limit","malware","behaviour","capability","injection"]},"ScanPackageRef":{"type":"object","properties":{"ecosystem":{"type":"string"},"name":{"type":"string"},"version":{"type":"string"},"direct":{"type":"boolean"},"dev":{"type":"boolean"}},"required":["ecosystem","name"],"additionalProperties":false,"description":"The package a dependency finding is about."},"ScanCheck":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ScanCheckId"},"tool":{"type":"string"},"tool_version":{"type":"string"},"status":{"$ref":"#/components/schemas/ScanCheckStatus"},"at":{"type":"string"},"findings":{"type":"integer","minimum":0,"maximum":9007199254740991},"packages":{"type":"integer","minimum":0,"maximum":9007199254740991},"reason":{"type":"string"}},"required":["id","tool","tool_version","status","at","findings"],"additionalProperties":false,"description":"§4.2. One check, what ran it, at what version, and what it found. The vendor scan id is never published."},"ScanFindingAggregate":{"type":"object","properties":{"packages":{"type":"integer","minimum":2,"maximum":9007199254740991},"examples":{"type":"array","items":{"type":"string"}}},"required":["packages","examples"],"additionalProperties":false,"description":"§4.4. The tally behind a folded finding: how many transitive packages tripped the rule, and three of them."},"ScanFinding":{"type":"object","properties":{"kind":{"$ref":"#/components/schemas/ScanFindingKind"},"check":{"$ref":"#/components/schemas/ScanCheckId"},"tier":{"$ref":"#/components/schemas/ScanTier"},"rule_id":{"type":"string"},"severity":{"$ref":"#/components/schemas/ScanSeverity"},"description":{"type":"string"},"path":{"type":"string"},"line":{"type":"integer","minimum":0,"maximum":9007199254740991},"package":{"$ref":"#/components/schemas/ScanPackageRef"},"advisory_ids":{"type":"array","items":{"type":"string"}},"source":{"type":"string"},"aggregate":{"$ref":"#/components/schemas/ScanFindingAggregate"}},"required":["kind","check","tier","rule_id","severity","description"],"additionalProperties":false,"description":"§4.4. A disclosed finding. Secrets and injection matches never appear here."},"CapabilityRun":{"type":"object","properties":{"path":{"type":"string"},"kind":{"type":"string","enum":["script","hook","mcp_server","install_script","workflow","make","build_hook"]},"detail":{"type":"string"}},"required":["path","kind"],"additionalProperties":false},"CapabilityHost":{"type":"object","properties":{"host":{"type":"string"},"local":{"type":"boolean"},"from":{"type":"string","enum":["code","docs"]},"paths":{"type":"array","items":{"type":"string"}}},"required":["host","local","from","paths"],"additionalProperties":false},"Capabilities":{"type":"object","properties":{"tools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"from":{"type":"string"}},"required":["name","from"],"additionalProperties":false}},"runs":{"type":"array","items":{"$ref":"#/components/schemas/CapabilityRun"}},"hosts":{"type":"array","items":{"$ref":"#/components/schemas/CapabilityHost"}},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"paths":{"type":"array","items":{"type":"string"}}},"required":["name","paths"],"additionalProperties":false}},"install_runs":{"type":"boolean"},"summary":{"type":"string"}},"required":["tools","runs","hosts","env","install_runs","summary"],"additionalProperties":false,"description":"§4.3. What the artifact's own files can do: tools, what runs, hosts, environment, and whether anything runs at install."},"ScanCounts":{"type":"object","properties":{"blocking":{"type":"integer","minimum":0,"maximum":9007199254740991},"disclosed":{"type":"integer","minimum":0,"maximum":9007199254740991},"review":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["blocking","disclosed","review"],"additionalProperties":false,"description":"§4.1. How many findings sit in each tier."},"CreatorScanFinding":{"type":"object","properties":{"kind":{"$ref":"#/components/schemas/ScanFindingKind"},"check":{"$ref":"#/components/schemas/ScanCheckId"},"tier":{"$ref":"#/components/schemas/ScanTier"},"rule_id":{"type":"string"},"severity":{"$ref":"#/components/schemas/ScanSeverity"},"description":{"type":"string"},"path":{"type":"string"},"line":{"type":"integer","minimum":0,"maximum":9007199254740991},"package":{"$ref":"#/components/schemas/ScanPackageRef"},"advisory_ids":{"type":"array","items":{"type":"string"}},"source":{"type":"string"},"public":{"type":"boolean"},"blocking":{"type":"boolean"},"match_length":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kind","check","tier","rule_id","severity","description"],"additionalProperties":false,"description":"§4.4. A finding as the creator sees it: path, line, and a secret's length — never its value."},"CreatorScanReport":{"type":"object","properties":{"version":{"type":"number","const":2},"scanner_version":{"type":"string"},"scanned_at":{"type":"string"},"checks":{"type":"array","items":{"$ref":"#/components/schemas/ScanCheck"}},"findings":{"type":"array","items":{"$ref":"#/components/schemas/CreatorScanFinding"}},"capabilities":{"$ref":"#/components/schemas/Capabilities"},"counts":{"$ref":"#/components/schemas/ScanCounts"},"packages_scanned":{"type":"integer","minimum":0,"maximum":9007199254740991},"osv_error":{"type":"string"},"advisories_refreshed_at":{"type":"string"}},"required":["version","scanner_version","scanned_at","checks","findings","counts"],"additionalProperties":false,"description":"§4.4. The full trust report for the release's own creator: every check, every finding, and the path and line of a secret that failed the release. Never served to anyone else."},"ListingSource":{"type":"string","enum":["github","hosted"],"description":"D10. `github` is Rail A (the creator's own repo via the GitHub App); `hosted` is Rail B (a private repo we create)."},"ListingStatus":{"type":"string","enum":["draft","live","retired"],"description":"FR-42. `live` requires licence pass, a passing release and a description. Retire is terminal."},"LicenceVerdict":{"type":"string","enum":["pass","manual","block"]},"ScanStatus":{"type":"string","enum":["pending","pass","fail"]},"AllowedSpdx":{"type":"string","enum":["MIT","Apache-2.0","BSD-3-Clause","MPL-2.0"]},"Pricing":{"type":"object","properties":{"price_micro":{"$ref":"#/components/schemas/MicroUsdc"},"update_price_micro":{"$ref":"#/components/schemas/MicroUsdc"},"presets":{"type":"object","properties":{"price":{"type":"array","items":{"$ref":"#/components/schemas/MicroUsdc"}},"update":{"type":"array","items":{"$ref":"#/components/schemas/MicroUsdc"}}},"required":["price","update"],"additionalProperties":false},"defaults":{"type":"object","properties":{"price_micro":{"$ref":"#/components/schemas/MicroUsdc"},"update_price_micro":{"$ref":"#/components/schemas/MicroUsdc"}},"required":["price_micro","update_price_micro"],"additionalProperties":false},"platform_fee_bps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["price_micro","update_price_micro","presets","defaults","platform_fee_bps"],"additionalProperties":false,"description":"FR-13. An update price of 0 is lifetime access (D1). Explicit API values are never rounded."},"ListingEndpoints":{"type":"object","properties":{"url":{"type":"string"},"label_endpoint":{"type":"string"},"version_endpoint":{"type":"string"},"releases_endpoint":{"type":"string"},"resource_endpoint":{"type":"string"}},"required":["url","label_endpoint","version_endpoint","releases_endpoint","resource_endpoint"],"additionalProperties":false,"description":"Every public URL for a listing, absolute."},"CreateListingRequest":{"type":"object","properties":{"slug":{"$ref":"#/components/schemas/Slug"},"source":{"$ref":"#/components/schemas/ListingSource"},"ssh_public_key":{"type":"string","minLength":1,"maxLength":16384},"installation_id":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","pattern":"^\\d+$"}]},"github_repo_id":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","pattern":"^\\d+$"}]},"repo":{"type":"string","pattern":"^[A-Za-z0-9._-]+\\/[A-Za-z0-9._-]+$"},"price_micro":{"$ref":"#/components/schemas/PriceMicro"},"update_price_micro":{"$ref":"#/components/schemas/UpdatePriceMicro"},"description":{"type":"string","minLength":1,"maxLength":4000},"trigger_hint":{"type":"string","minLength":1,"maxLength":500}},"required":["slug","source"],"additionalProperties":false,"description":"Rail B needs `ssh_public_key`; Rail A needs `installation_id` and `github_repo_id`."},"CreateListingResponse":{"type":"object","properties":{"listing_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"owner":{"$ref":"#/components/schemas/Handle"},"slug":{"$ref":"#/components/schemas/Slug"},"status":{"$ref":"#/components/schemas/ListingStatus"},"source":{"$ref":"#/components/schemas/ListingSource"},"remote":{"type":["string","null"]},"ssh_host_key_fingerprints":{"type":"array","items":{"type":"string"}},"default_branch":{"type":"string"},"pricing":{"$ref":"#/components/schemas/Pricing"},"endpoints":{"$ref":"#/components/schemas/ListingEndpoints"}},"required":["listing_id","owner","slug","status","source","pricing","endpoints"],"additionalProperties":false},"LatestRelease":{"type":"object","properties":{"release_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"$ref":"#/components/schemas/SemVer"},"scan":{"$ref":"#/components/schemas/ScanStatus"},"artifact_sha256":{"anyOf":[{"$ref":"#/components/schemas/Sha256"},{"type":"null"}]},"published_at":{"anyOf":[{"$ref":"#/components/schemas/IsoDateTime"},{"type":"null"}]},"manifest_url":{"type":"string"},"scan_report":{"anyOf":[{"$ref":"#/components/schemas/CreatorScanReport"},{"type":"null"}]}},"required":["release_id","version","scan","artifact_sha256","published_at","manifest_url"],"additionalProperties":false},"Listing":{"type":"object","properties":{"listing_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"owner":{"$ref":"#/components/schemas/Handle"},"slug":{"$ref":"#/components/schemas/Slug"},"status":{"$ref":"#/components/schemas/ListingStatus"},"source":{"$ref":"#/components/schemas/ListingSource"},"description":{"type":["string","null"]},"trigger_hint":{"type":["string","null"]},"licence":{"type":"object","properties":{"verdict":{"anyOf":[{"$ref":"#/components/schemas/LicenceVerdict"},{"type":"null"}]},"spdx":{"type":["string","null"]}},"required":["verdict","spdx"],"additionalProperties":false},"latest_release":{"anyOf":[{"$ref":"#/components/schemas/LatestRelease"},{"type":"null"}]},"newest_release":{"anyOf":[{"$ref":"#/components/schemas/LatestRelease"},{"type":"null"}]},"pricing":{"$ref":"#/components/schemas/Pricing"},"endpoints":{"$ref":"#/components/schemas/ListingEndpoints"},"remote":{"type":["string","null"]},"ssh_host_key_fingerprints":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"default_branch":{"type":["string","null"]},"created_at":{"$ref":"#/components/schemas/IsoDateTime"},"published_at":{"anyOf":[{"$ref":"#/components/schemas/IsoDateTime"},{"type":"null"}]},"retired_at":{"anyOf":[{"$ref":"#/components/schemas/IsoDateTime"},{"type":"null"}]}},"required":["listing_id","owner","slug","status","source","description","trigger_hint","licence","latest_release","pricing","endpoints","remote","ssh_host_key_fingerprints","default_branch","created_at","published_at","retired_at"],"additionalProperties":false},"ListingList":{"type":"object","properties":{"listings":{"type":"array","items":{"$ref":"#/components/schemas/Listing"}},"next_cursor":{"type":["string","null"]}},"required":["listings","next_cursor"],"additionalProperties":false,"description":"The authenticated creator's listings, newest first. Cursor-paginated."},"PatchListingRequest":{"type":"object","properties":{"price_micro":{"$ref":"#/components/schemas/PriceMicro"},"update_price_micro":{"$ref":"#/components/schemas/UpdatePriceMicro"},"description":{"type":"string","minLength":1,"maxLength":4000},"trigger_hint":{"type":"string","minLength":1,"maxLength":500}},"additionalProperties":false,"description":"FR-16: price changes apply to future purchases only. Existing holders keep their stamped terms."},"SyncRequest":{"type":"object","properties":{"ref":{"type":"string","minLength":1,"maxLength":255},"version":{"$ref":"#/components/schemas/SemVer"},"notes":{"type":"string","maxLength":20000}},"additionalProperties":false,"description":"Cut a version now: from a named ref, or — with neither field given — from the repository's newest uncut `vX.Y.Z` tag. The recovery path for a dropped webhook, and for a tag pushed before the listing existed."},"SyncResponse":{"type":"object","properties":{"release_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"$ref":"#/components/schemas/SemVer"},"scan":{"$ref":"#/components/schemas/ScanStatus"},"git_ref":{"type":"string"},"commit_sha":{"type":"string"},"created_at":{"$ref":"#/components/schemas/IsoDateTime"}},"required":["release_id","version","scan","git_ref","commit_sha","created_at"],"additionalProperties":false},"PublishBlockingReason":{"type":"string","enum":["no_release","scan_pending","scan_failed","licence_block","description_missing","public_repo"],"description":"`no_release`: cut one with POST /api/listings/{id}/sync. `scan_pending`: a release is still being scanned — retry later. `scan_failed`: the scan finished and refused the release; the verdict is terminal, so cut a new version rather than retrying this one. `description_missing`: PATCH a description and a trigger hint (FR-51). `public_repo`: the repository has been made public since it was listed; make it private again (FR-10). `licence_block` is retained in this enum for compatibility but is no longer returned: a missing or unrecognised licence does not block publishing."},"PublishResponse":{"type":"object","properties":{"listing_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"$ref":"#/components/schemas/ListingStatus"},"endpoints":{"$ref":"#/components/schemas/ListingEndpoints"},"published_at":{"$ref":"#/components/schemas/IsoDateTime"}},"required":["listing_id","status","endpoints","published_at"],"additionalProperties":false},"LicenceRequest":{"type":"object","properties":{"spdx":{"$ref":"#/components/schemas/AllowedSpdx"}},"required":["spdx"],"additionalProperties":false},"LicenceResponse":{"type":"object","properties":{"listing_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"licence":{"type":"object","properties":{"spdx":{"type":"string"},"verdict":{"$ref":"#/components/schemas/LicenceVerdict"}},"required":["spdx","verdict"],"additionalProperties":false},"commit_sha":{"type":"string"}},"required":["listing_id","licence"],"additionalProperties":false},"SshKeyRequest":{"type":"object","properties":{"ssh_public_key":{"type":"string","minLength":1,"maxLength":16384},"step_up":{"$ref":"#/components/schemas/SignedChallenge"}},"required":["ssh_public_key"],"additionalProperties":false},"SshKeyResponse":{"type":"object","properties":{"listing_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deploy_key_id":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string"}]},"fingerprint":{"type":"string"}},"required":["listing_id","deploy_key_id"],"additionalProperties":false},"DeleteRepoRequest":{"type":"object","properties":{"step_up":{"$ref":"#/components/schemas/SignedChallenge"}},"additionalProperties":false},"RetireResponse":{"type":"object","properties":{"listing_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"$ref":"#/components/schemas/ListingStatus"},"retired_at":{"$ref":"#/components/schemas/IsoDateTime"}},"required":["listing_id","status","retired_at"],"additionalProperties":false,"description":"FR-43. Terminal. Holders keep every version they own (FR-19, FR-46)."},"DeleteRepoResponse":{"type":"object","properties":{"listing_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"repo_deleted":{"type":"boolean"},"releases_retained":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"releases_deleted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["listing_id","repo_deleted","releases_retained","releases_deleted"],"additionalProperties":false,"description":"FR-44. Releases with at least one purchase are retained: they are the product."},"VersionScan":{"type":"object","properties":{"verdict":{"$ref":"#/components/schemas/ScanStatus"},"at":{"anyOf":[{"$ref":"#/components/schemas/IsoDateTime"},{"type":"null"}]},"scanner_version":{"type":["string","null"]},"blocking":{"type":"integer","minimum":0,"maximum":9007199254740991},"disclosed":{"type":"integer","minimum":0,"maximum":9007199254740991},"review":{"type":"integer","minimum":0,"maximum":9007199254740991},"capabilities_summary":{"type":"string"},"advisories_refreshed_at":{"type":"string"}},"required":["verdict","at","scanner_version","blocking","disclosed","review"],"additionalProperties":false,"description":"The trust report in three numbers, for the call an agent makes before every fetch. `blocking` is 0 on anything that sells; the findings themselves are on the manifest."},"DiffSummary":{"type":"object","properties":{"files_added":{"type":"integer","minimum":0,"maximum":9007199254740991},"files_changed":{"type":"integer","minimum":0,"maximum":9007199254740991},"files_removed":{"type":"integer","minimum":0,"maximum":9007199254740991},"additions":{"type":"integer","minimum":0,"maximum":9007199254740991},"deletions":{"type":"integer","minimum":0,"maximum":9007199254740991},"components_touched":{"type":"array","items":{"type":"string"}}},"required":["files_added","files_changed","files_removed","additions","deletions","components_touched"],"additionalProperties":false,"description":"What changed since the previous release. Computed, never creator-supplied."},"ReleaseLogEntry":{"type":"object","properties":{"version":{"$ref":"#/components/schemas/SemVer"},"tag":{"type":["string","null"]},"commit_sha":{"type":"string"},"artifact_sha256":{"anyOf":[{"$ref":"#/components/schemas/Sha256"},{"type":"null"}]},"published_at":{"$ref":"#/components/schemas/IsoDateTime"},"changelog":{"type":["string","null"]},"diff_summary":{"anyOf":[{"$ref":"#/components/schemas/DiffSummary"},{"type":"null"}]},"scan":{"$ref":"#/components/schemas/ScanStatus"},"scanner_version":{"type":["string","null"]},"analyzer_version":{"type":["string","null"]},"price_micro":{"$ref":"#/components/schemas/MicroUsdc"},"update_price_micro":{"$ref":"#/components/schemas/MicroUsdc"}},"required":["version","tag","commit_sha","artifact_sha256","published_at","changelog","diff_summary","scan","scanner_version","analyzer_version","price_micro","update_price_micro"],"additionalProperties":false,"description":"FR-15. Public, machine-readable, and undeletable by the creator."},"ReleaseLog":{"type":"object","properties":{"owner":{"$ref":"#/components/schemas/Handle"},"slug":{"$ref":"#/components/schemas/Slug"},"releases":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseLogEntry"}},"next_cursor":{"type":["string","null"]}},"required":["owner","slug","releases","next_cursor"],"additionalProperties":false},"VersionStatus":{"type":"object","properties":{"owner":{"$ref":"#/components/schemas/Handle"},"slug":{"$ref":"#/components/schemas/Slug"},"latest":{"anyOf":[{"$ref":"#/components/schemas/SemVer"},{"type":"null"}]},"published_at":{"anyOf":[{"$ref":"#/components/schemas/IsoDateTime"},{"type":"null"}]},"price_micro":{"$ref":"#/components/schemas/MicroUsdc"},"update_price_micro":{"$ref":"#/components/schemas/MicroUsdc"},"releases_url":{"type":"string"},"resource_endpoint":{"type":"string"},"status":{"type":"string","enum":["draft","live","retired"]},"scan":{"$ref":"#/components/schemas/VersionScan"},"owned":{"anyOf":[{"$ref":"#/components/schemas/SemVer"},{"type":"null"}]},"entitled":{"type":"boolean"},"all_versions":{"type":"boolean"},"price_kind":{"type":"string","enum":["new","update","free","owned"]}},"required":["owner","slug","latest","published_at","price_micro","update_price_micro","releases_url","resource_endpoint","status"],"additionalProperties":false,"description":"Latest version, prices and the trust report in three numbers. With X-Wallet-Signature it also answers what this wallet owns and what the next fetch would cost it."},"ArtifactClass":{"type":"string","enum":["Prompt","Pack","Toolkit","Harness","System"],"description":"FR-47. From deduplicated volume with the unique_5gram >= 0.6 guard, never raw volume."},"ComponentCount":{"type":"object","properties":{"kind":{"type":"string"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kind","count"],"additionalProperties":false},"TreeEntry":{"type":"object","properties":{"path":{"type":"string"},"size":{"type":"integer","minimum":0,"maximum":9007199254740991},"binary":{"type":"boolean"}},"required":["path","size","binary"],"additionalProperties":false,"description":"One blob from the git tree. No content, only the shape."},"Dependency":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"ecosystem":{"type":"string"}},"required":["name","ecosystem"],"additionalProperties":false,"description":"From the SBOM endpoint, on release only (§14.4)."},"ManifestLicence":{"type":"object","properties":{"spdx":{"type":"string"},"verdict":{"type":"string","enum":["pass","manual","block"]}},"required":["verdict"],"additionalProperties":false,"description":"FR-11. NOASSERTION is `manual`, never a block."},"ManifestScan":{"type":"object","properties":{"verdict":{"$ref":"#/components/schemas/ScanStatus"},"scanner_version":{"type":"string"},"at":{"$ref":"#/components/schemas/IsoDateTime"},"checks":{"type":"array","items":{"$ref":"#/components/schemas/ScanCheck"}},"findings":{"type":"array","items":{"$ref":"#/components/schemas/ScanFinding"}},"capabilities":{"$ref":"#/components/schemas/Capabilities"},"counts":{"$ref":"#/components/schemas/ScanCounts"},"advisories_refreshed_at":{"type":"string"}},"required":["verdict","scanner_version","at"],"additionalProperties":false,"description":"FR-37 / 'PRD Trust Report.md' §4.2. The trust report: the verdict with its date and scanner version, one row per check, the disclosed findings, and the computed capability inventory. Secrets and injection matches are never in it."},"Originality":{"type":"object","properties":{"blob_overlap_ratio":{"type":"number","minimum":0,"maximum":1},"blobs_seen_elsewhere":{"type":"integer","minimum":0,"maximum":9007199254740991},"blobs_total":{"type":"integer","minimum":0,"maximum":9007199254740991},"nearest_listing":{"type":["string","null"]},"derivative_of":{"type":["string","null"]}},"required":["blob_overlap_ratio","blobs_seen_elsewhere","blobs_total","nearest_listing"],"additionalProperties":false,"description":"FR-50. The share of blobs seen elsewhere. ≥0.90 overlap with a live listing blocks publish."},"ManifestEngineering":{"type":"object","properties":{"unique_5gram_ratio":{"type":"number","minimum":0,"maximum":1},"type_token_ratio":{"type":"number","minimum":0,"maximum":1},"effective_code_lines":{"type":"integer","minimum":0,"maximum":9007199254740991},"effective_doc_words":{"type":"integer","minimum":0,"maximum":9007199254740991},"code_files":{"type":"integer","minimum":0,"maximum":9007199254740991},"test_files":{"type":"integer","minimum":0,"maximum":9007199254740991},"padding_suspected":{"type":"boolean"},"class_note":{"type":"string"}},"required":["unique_5gram_ratio","type_token_ratio","effective_code_lines","effective_doc_words","code_files","test_files","padding_suspected"],"additionalProperties":false,"description":"Quality Signals §3.3. The deduplication evidence behind the artifact class."},"ManifestCadence":{"type":"object","properties":{"releases":{"type":"integer","minimum":0,"maximum":9007199254740991},"median_days_between_releases":{"type":["number","null"]},"on_time_fraction":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"days_since_last":{"type":["number","null"]},"score":{"anyOf":[{"type":"integer","minimum":0,"maximum":100},{"type":"null"}]},"finished":{"type":"boolean"}},"required":["releases","median_days_between_releases","on_time_fraction","days_since_last","score","finished"],"additionalProperties":false,"description":"Quality Signals §4. Release cadence, with the 'finished software' exemption applied."},"ManifestRepoMeta":{"type":"object","properties":{"repo_id":{"type":"integer","minimum":0,"maximum":9007199254740991},"name":{"type":"string"},"full_name":{"type":"string"},"description":{"type":["string","null"]},"homepage":{"type":["string","null"]},"topics":{"type":"array","items":{"type":"string"}},"language":{"type":["string","null"]},"default_branch":{"type":["string","null"]},"size_kb":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"created_at":{"type":["string","null"]},"pushed_at":{"type":["string","null"]},"licence_spdx":{"type":["string","null"]},"open_issues":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"stars":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"forks":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"watchers":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"archived":{"type":"boolean"},"private":{"type":"boolean"},"html_url":{"type":["string","null"]}},"additionalProperties":false,"description":"The source repository's own GitHub metadata. Context, not a quality signal. Every field optional."},"ManifestOwner":{"type":"object","properties":{"login":{"type":"string"},"name":{"type":["string","null"]},"avatar_url":{"type":["string","null"]},"bio":{"type":["string","null"]},"blog":{"type":["string","null"]},"company":{"type":["string","null"]},"location":{"type":["string","null"]},"twitter_username":{"type":["string","null"]},"followers":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"public_repos":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"created_at":{"type":["string","null"]},"html_url":{"type":["string","null"]}},"required":["login"],"additionalProperties":false,"description":"The creator's public GitHub profile. Context, not a quality signal."},"ManifestComputed":{"type":"object","properties":{"artifact_class":{"$ref":"#/components/schemas/ArtifactClass"},"component_inventory":{"type":"array","items":{"$ref":"#/components/schemas/ComponentCount"}},"file_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"dir_depth":{"type":"integer","minimum":0,"maximum":9007199254740991},"bytes_text":{"type":"integer","minimum":0,"maximum":9007199254740991},"bytes_binary":{"type":"integer","minimum":0,"maximum":9007199254740991},"languages":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","minimum":0,"maximum":9007199254740991}},"tree":{"type":"array","items":{"$ref":"#/components/schemas/TreeEntry"}},"readme_html":{"type":["string","null"]},"readme_assets":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"dependencies":{"type":"array","items":{"$ref":"#/components/schemas/Dependency"}},"licence":{"$ref":"#/components/schemas/ManifestLicence"},"scan":{"$ref":"#/components/schemas/ManifestScan"},"cadence_sentence":{"type":"string"},"originality":{"$ref":"#/components/schemas/Originality"},"engineering":{"$ref":"#/components/schemas/ManifestEngineering"},"cadence":{"$ref":"#/components/schemas/ManifestCadence"},"inventory_sentence":{"type":"string"},"extensions":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","minimum":0,"maximum":9007199254740991}},"lines_of_code":{"type":"integer","minimum":0,"maximum":9007199254740991},"warnings":{"type":"array","items":{"type":"string"}},"repo_meta":{"$ref":"#/components/schemas/ManifestRepoMeta"},"owner":{"$ref":"#/components/schemas/ManifestOwner"},"computed_at":{"$ref":"#/components/schemas/IsoDateTime"},"analyzer_version":{"type":"string"}},"required":["artifact_class","component_inventory","file_count","dir_depth","bytes_text","bytes_binary","languages","tree","readme_html","dependencies","licence","scan","computed_at","analyzer_version"],"additionalProperties":false,"description":"FR-52. Derived with no creator input. Undeletable by the creator. Never gated on a simplicity condition."},"ManifestSelfReported":{"type":"object","properties":{"description":{"type":"string"},"trigger_hint":{"type":"string"},"examples":{"type":"array","items":{"type":"object","properties":{"input":{"type":"string"},"output":{"type":"string"}},"required":["input","output"],"additionalProperties":false}}},"additionalProperties":false,"description":"FR-51. Creator-supplied and badged `self_reported`. Sandbox-generated examples are V1."},"Manifest":{"type":"object","properties":{"owner":{"$ref":"#/components/schemas/Handle"},"slug":{"$ref":"#/components/schemas/Slug"},"channel":{"type":"string"},"version":{"$ref":"#/components/schemas/SemVer"},"artifact_sha256":{"anyOf":[{"$ref":"#/components/schemas/Sha256"},{"type":"null"}]},"published_at":{"anyOf":[{"$ref":"#/components/schemas/IsoDateTime"},{"type":"null"}]},"price_micro":{"$ref":"#/components/schemas/MicroUsdc"},"update_price_micro":{"$ref":"#/components/schemas/UpdatePriceMicro"},"resource_endpoint":{"type":"string"},"version_url":{"type":"string"},"computed":{"$ref":"#/components/schemas/ManifestComputed"},"self_reported":{"$ref":"#/components/schemas/ManifestSelfReported"}},"required":["owner","slug","channel","version","artifact_sha256","published_at","price_micro","update_price_micro","resource_endpoint","version_url","computed","self_reported"],"additionalProperties":false,"description":"The public manifest (G2). Free, cacheable, unauthenticated. The contents stay private (D3a), but the list price is not contents — an unauthenticated GET /api/r already quotes it, and a manifest that omits it reads as free."},"PaymentScheme":{"type":"string","const":"exact","description":"§13. Per-call metering and batch settlement are V1 — noted, not built."},"PaymentRequirements":{"type":"object","properties":{"scheme":{"$ref":"#/components/schemas/PaymentScheme"},"network":{"type":"string"},"asset":{"$ref":"#/components/schemas/Address"},"payTo":{"$ref":"#/components/schemas/Address"},"amount":{"$ref":"#/components/schemas/MicroUsdc"},"maxAmountRequired":{"$ref":"#/components/schemas/MicroUsdc"},"resource":{"type":"string"},"description":{"type":"string"},"maxTimeoutSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"mimeType":{"type":"string"},"extra":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"}},"required":["name","version"],"additionalProperties":false}},"required":["scheme","network","asset","payTo","amount","maxAmountRequired","resource","description","maxTimeoutSeconds","extra"],"additionalProperties":false,"description":"One entry of the x402 v2 `accepts[]` array."},"ResourceInfo":{"type":"object","properties":{"url":{"type":"string"},"description":{"type":"string"},"mimeType":{"type":"string"},"serviceName":{"type":"string","minLength":1,"maxLength":32},"tags":{"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":32}},"iconUrl":{"type":"string","maxLength":2048}},"required":["url"],"additionalProperties":false,"description":"The x402 v2 resource envelope. `description` is product copy an agent reasons over (§13). `serviceName` and `tags` are Bazaar discovery metadata."},"PaymentKind":{"type":"string","enum":["new","update"],"description":"FR-17. `update` means the caller already holds an earlier version and is charged the update price."},"PaymentRequiredExtra":{"type":"object","properties":{"kind":{"$ref":"#/components/schemas/PaymentKind"},"version":{"$ref":"#/components/schemas/SemVer"},"from":{"$ref":"#/components/schemas/SemVer"},"to":{"$ref":"#/components/schemas/SemVer"},"manifest_url":{"type":"string"},"scan_badge_url":{"type":"string"},"update_price_micro":{"$ref":"#/components/schemas/MicroUsdc"},"releases":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseLogEntry"}},"quote_id":{"type":"string"},"valid_before":{"$ref":"#/components/schemas/IsoDateTime"},"instructions":{"type":"string"},"listing_url":{"type":"string"},"skill_url":{"type":"string"},"mcp_url":{"type":"string"}},"required":["kind","version","manifest_url","scan_badge_url","update_price_micro","quote_id","instructions","listing_url","skill_url","mcp_url"],"additionalProperties":false,"description":"Platform fields. FR-17: the update 402 carries the evidence."},"PaymentRequired":{"type":"object","properties":{"x402Version":{"type":"number","const":2},"resource":{"$ref":"#/components/schemas/ResourceInfo"},"accepts":{"minItems":1,"type":"array","items":{"$ref":"#/components/schemas/PaymentRequirements"}},"extra":{"$ref":"#/components/schemas/PaymentRequiredExtra"},"extensions":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"error":{"type":"string"}},"required":["x402Version","resource","accepts","extra"],"additionalProperties":false,"description":"The 402 body, also sent in the `PAYMENT-REQUIRED` header (FR-21). `extensions.bazaar` is the discovery declaration; echo it when you pay."},"ResourceGrant":{"type":"object","properties":{"version":{"$ref":"#/components/schemas/SemVer"},"artifact_sha256":{"$ref":"#/components/schemas/Sha256"},"download_url":{"type":"string"},"expires_at":{"$ref":"#/components/schemas/IsoDateTime"},"version_endpoint":{"type":"string"},"manifest_url":{"type":"string"},"all_versions":{"type":"boolean"}},"required":["version","artifact_sha256","download_url","expires_at","version_endpoint","manifest_url","all_versions"],"additionalProperties":false,"description":"`download_url` is a short-lived signed URL (5 minutes) over the exact bytes that were scanned."},"SaleKind":{"type":"string","enum":["new","update","free"]},"EarningsSale":{"type":"object","properties":{"slug":{"$ref":"#/components/schemas/Slug"},"version":{"$ref":"#/components/schemas/SemVer"},"kind":{"$ref":"#/components/schemas/SaleKind"},"gross_micro":{"$ref":"#/components/schemas/MicroUsdc"},"fee_micro":{"$ref":"#/components/schemas/MicroUsdc"},"net_micro":{"$ref":"#/components/schemas/MicroUsdc"},"settled_at":{"$ref":"#/components/schemas/IsoDateTime"},"holdback_until":{"$ref":"#/components/schemas/IsoDateTime"},"paid_out":{"type":"boolean"}},"required":["slug","version","kind","gross_micro","fee_micro","net_micro","settled_at","holdback_until","paid_out"],"additionalProperties":false,"description":"FR-29 / FR-40: never the buyer address, never the tx hash."},"Earnings":{"type":"object","properties":{"gross_micro":{"$ref":"#/components/schemas/MicroUsdc"},"fee_micro":{"$ref":"#/components/schemas/MicroUsdc"},"net_micro":{"$ref":"#/components/schemas/MicroUsdc"},"withdrawable_micro":{"$ref":"#/components/schemas/MicroUsdc"},"held_micro":{"$ref":"#/components/schemas/MicroUsdc"},"gas_micro":{"$ref":"#/components/schemas/MicroUsdc"},"platform_fee_bps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"holdback_days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"next_release_at":{"anyOf":[{"$ref":"#/components/schemas/IsoDateTime"},{"type":"null"}]},"payout_address":{"$ref":"#/components/schemas/Address"},"sales":{"type":"array","items":{"$ref":"#/components/schemas/EarningsSale"}},"next_cursor":{"type":["string","null"]}},"required":["gross_micro","fee_micro","net_micro","withdrawable_micro","held_micro","gas_micro","platform_fee_bps","holdback_days","next_release_at","payout_address","sales","next_cursor"],"additionalProperties":false},"PayoutStatus":{"type":"string","enum":["pending","broadcast","confirmed","failed"]},"Sweep":{"type":"object","properties":{"payout_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"amount_micro":{"$ref":"#/components/schemas/MicroUsdc"},"gas_micro":{"$ref":"#/components/schemas/MicroUsdc"},"to_address":{"$ref":"#/components/schemas/Address"},"status":{"anyOf":[{"$ref":"#/components/schemas/PayoutStatus"},{"type":"null"}]},"tx_hash":{"type":["string","null"]},"purchases_swept":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["payout_id","amount_micro","gas_micro","to_address","status","tx_hash","purchases_swept"],"additionalProperties":false,"description":"FR-26 / FR-28. A pending row with an idempotency key is written before any broadcast."},"EntitlementUpdate":{"type":"object","properties":{"version":{"$ref":"#/components/schemas/SemVer"},"price_micro":{"$ref":"#/components/schemas/MicroUsdc"}},"required":["version","price_micro"],"additionalProperties":false},"Entitlement":{"type":"object","properties":{"purchase_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"listing_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"owner":{"$ref":"#/components/schemas/Handle"},"slug":{"$ref":"#/components/schemas/Slug"},"version":{"$ref":"#/components/schemas/SemVer"},"all_versions":{"type":"boolean"},"gross_micro":{"$ref":"#/components/schemas/MicroUsdc"},"update_price_at_purchase":{"$ref":"#/components/schemas/MicroUsdc"},"kind":{"type":"string","enum":["new","update","free"]},"source":{"type":"string","enum":["web","api","mcp"]},"tx_hash":{"type":["string","null"]},"granted_at":{"$ref":"#/components/schemas/IsoDateTime"},"revoked_at":{"anyOf":[{"$ref":"#/components/schemas/IsoDateTime"},{"type":"null"}]},"resource_endpoint":{"type":"string"},"version_endpoint":{"type":"string"},"receipt_url":{"type":"string"},"latest_version":{"anyOf":[{"$ref":"#/components/schemas/SemVer"},{"type":"null"}]},"update":{"anyOf":[{"$ref":"#/components/schemas/EntitlementUpdate"},{"type":"null"}]}},"required":["purchase_id","listing_id","owner","slug","version","all_versions","gross_micro","update_price_at_purchase","kind","source","tx_hash","granted_at","revoked_at","resource_endpoint","version_endpoint","receipt_url","latest_version","update"],"additionalProperties":false},"Entitlements":{"type":"object","properties":{"address":{"$ref":"#/components/schemas/Address"},"entitlements":{"type":"array","items":{"$ref":"#/components/schemas/Entitlement"}},"next_cursor":{"type":["string","null"]}},"required":["address","entitlements","next_cursor"],"additionalProperties":false,"description":"FR-32. Operators audit what their agents bought."},"ListingNotReady":{"type":"object","properties":{"code":{"type":"string","const":"listing_not_ready"},"message":{"type":"string"},"docs_url":{"type":"string"},"details":{"type":"object","properties":{"blocking":{"type":"array","items":{"$ref":"#/components/schemas/PublishBlockingReason"}}},"required":["blocking"],"additionalProperties":false}},"required":["code","message","docs_url","details"],"additionalProperties":false}},"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"`Authorization: Bearer <key>`. Scoped (`listings:write`, `earnings:read`); a bearer key cannot move money (FR-26) and cannot destroy data without a step-up signature (FR-5).\n\nThere are two kinds. Every route that takes this scheme accepts either:\n\n- **Agent key**, `x4c_live_…` — long-lived, one per creator, shown once when it is issued and never again, rotatable without the old key (`POST /api/auth/rotate-key`). This is the one an agent holds; it is the only one you can be given.\n- **Session key**, `x4s_live_…` — minted for a browser session when a creator signs in to the website, never shown to anyone, expires with the session and dies on sign-out. It exists because the site calls these same endpoints (D9)."},"walletSignature":{"type":"apiKey","in":"header","name":"X-Wallet-Signature","description":"`<address>.<nonce>.<eip191_signature>` over the message from GET /api/auth/challenge (FR-20). Single use, 5-minute expiry. Without it, /api/r quotes the new-buyer price and /api/v returns version data only."}}}}