{"openapi":"3.1.0","info":{"title":"Mini App Doctor x402 APIs","version":"1.1.0","description":"Two independent agent-invocable Farcaster Mini App products: a low-cost Static Evidence Dossier and a pinned server-side Release Gate. The Deep gate is standalone; no prior static purchase is required.","x-guidance":"Use each free eligibility route before its paid endpoint. The 0.75-USDC static SKU captures ranked static evidence; the standalone 5.99-USDC pinned gate adds strict original-byte JFS, finalized Optimism registry, schema, and bounded referenced-image evidence. Deep v1 can return GO only when every referenced image is PNG; JPEG/GIF/WebP force INDETERMINATE. Neither product authorizes release. Resolve the cause before any operator-approved new purchase; never repurchase unchanged bytes or repay automatically after uncertainty, and use recovery for settlement uncertainty.","contact":{"name":"Mini App Doctor","url":"https://farcaster.xyz/tlmnt"}},"servers":[{"url":"https://tlmnt.app"}],"tags":[{"name":"Static Evidence Dossier","description":"Static server-side Farcaster Mini App evidence capture for autonomous agents; it does not provide release approval or deep/runtime validation."},{"name":"Pinned Server-Side Release Gate","description":"Pinned cryptographic, on-chain, schema, and bounded PNG referenced-image evidence for the captured entry page and manifest. v1 GO requires every referenced image to be PNG; non-PNG images force INDETERMINATE. No client-runtime or whole-release claim. Standalone; no prior static purchase is required."}],"paths":{"/api/x402/miniapp-audit":{"post":{"operationId":"createMiniAppStaticEvidenceDossier","tags":["Static Evidence Dossier"],"summary":"Create a static Mini App evidence dossier","description":"A deterministic static evidence dossier for a public Farcaster Mini App. It returns ranked static findings, an ordered remediation checklist, SHA-256 snapshots of fetched content, the underlying static scan report, and explicit verification limits. It does not provide release approval or deep/runtime validation.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.75"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DossierRequest"},"example":{"url":"https://example.com/miniapp"}}}},"responses":{"200":{"description":"Machine-readable static evidence dossier","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaticEvidenceDossier"}}}},"400":{"description":"Invalid JSON body or ineligible URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment Required"},"500":{"description":"Static evidence dossier could not be completed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Facilitator failure or timeout. Settlement may be indeterminate; do not automatically retry with a new payment authorization.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/x402/miniapp-audit/eligibility":{"post":{"operationId":"checkStaticEvidenceDossierEligibility","tags":["Static Evidence Dossier"],"summary":"Validate a URL before buying a static evidence dossier","description":"Validates URL syntax and public-HTTPS eligibility without fetching the target or requiring payment.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DossierRequest"},"example":{"url":"https://example.com/miniapp"}}}},"responses":{"200":{"description":"URL is structurally eligible for a static evidence capture attempt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EligibilityResponse"}}}},"400":{"description":"URL is not eligible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/x402/miniapp-audit/recovery":{"post":{"operationId":"recoverSettledMiniAppEvidenceDossier","tags":["Static Evidence Dossier"],"summary":"Recover a paid dossier after an interrupted response","description":"Returns a stored dossier only after a successful settlement hook or when the configured Base RPC reports a successful receipt at or below its finalized height containing adjacent canonical-USDC AuthorizationUsed and exact Transfer logs. It never settles, retries, or switches facilitators.","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":true,"description":"The original x402 v2 payment authorization header.","schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Previously computed and paid dossier","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaticEvidenceDossier"}}}},"400":{"description":"Missing or invalid original payment authorization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No matching static evidence dossier","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Dossier is unpaid, incomplete, or still indeterminate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Configured Base RPC settlement evidence is temporarily unavailable; recovery remains fail-closed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/x402/miniapp-deep-release":{"post":{"operationId":"createMiniAppDeepReleaseGate","tags":["Pinned Server-Side Release Gate"],"summary":"Run the Pinned Server-Side Release Gate","description":"Pinned JFS, finalized Optimism registry, manifest/embed, and bounded referenced-image evidence for one public HTTPS Farcaster Mini App homeUrl (up to 10 candidates, 30 MB, 40 outbound requests). v1 can return GO only when every referenced image is PNG; JPEG/GIF/WebP are bounded-fetched, hashed, and magic-identified but force INDETERMINATE with no geometry or alpha claim. GO only means ready for real-client verification; readyForRelease is always false.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"5.99"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepReleaseRequest"},"example":{"url":"https://example.com/miniapp"}}}},"responses":{"200":{"description":"Evidence-scoped GO, NO_GO, or INDETERMINATE server-side dossier; never final release authorization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepReleaseDossier"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepReleaseError"}}}},"402":{"description":"Payment Required"},"409":{"description":"Authorization already reserved; use recovery","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepReleaseError"}}}},"500":{"description":"Gate computation failed before settlement","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepReleaseError"}}}},"502":{"description":"Facilitator failure or timeout; settlement may be indeterminate and must not be automatically retried","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepReleaseError"}}}}}}},"/api/x402/miniapp-deep-release/eligibility":{"post":{"operationId":"checkMiniAppDeepReleaseEligibility","tags":["Pinned Server-Side Release Gate"],"summary":"Validate a URL before buying a Deep Release Gate","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepReleaseRequest"}}}},"responses":{"200":{"description":"URL is structurally eligible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepReleaseEligibility"}}}},"400":{"description":"URL is not eligible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepReleaseError"}}}}}}},"/api/x402/miniapp-deep-release/recovery":{"post":{"operationId":"recoverSettledMiniAppDeepReleaseGate","tags":["Pinned Server-Side Release Gate"],"summary":"Recover a paid Deep Release Gate after interruption","description":"Returns stored bytes only after a successful settlement hook or when the configured Base RPC reports a successful receipt at or below its finalized height containing adjacent canonical-USDC AuthorizationUsed and exact 5.99-USDC Transfer logs. It never settles or retries.","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Previously computed and paid Deep Release Gate dossier","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepReleaseDossier"}}}},"400":{"description":"Missing or invalid original authorization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepReleaseError"}}}},"404":{"description":"No matching gate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepReleaseError"}}}},"409":{"description":"Gate unpaid, incomplete, or unresolved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepReleaseError"}}}},"503":{"description":"Configured Base RPC settlement evidence unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepReleaseError"}}}}}}}},"components":{"schemas":{"DossierRequest":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string","format":"uri","minLength":1,"maxLength":2048,"description":"Public HTTPS Farcaster Mini App URL to inspect."}}},"StaticEvidenceDossier":{"type":"object","additionalProperties":false,"required":["schemaVersion","product","target","summary","staticEvidenceVerdict","blockers","warnings","prioritizedFindings","orderedRemediationChecklist","contentEvidence","verificationLimitations","recovery","repair","report"],"properties":{"schemaVersion":{"type":"integer","const":1},"product":{"type":"string"},"target":{"type":"object","required":["requestedUrl","finalUrl","hostname","scannedAt"],"properties":{"requestedUrl":{"type":"string","format":"uri"},"finalUrl":{"type":"string","format":"uri"},"hostname":{"type":"string"},"scannedAt":{"type":"string","format":"date-time"}}},"summary":{"type":"object","required":["status","score","counts","actionableFindings","blockerCount","warningCount"],"properties":{"status":{"type":"string","enum":["pass","warning","fail"]},"score":{"type":"integer","minimum":0,"maximum":100},"counts":{"type":"object","additionalProperties":{"type":"integer"}},"actionableFindings":{"type":"integer","minimum":0},"blockerCount":{"type":"integer","minimum":0},"warningCount":{"type":"integer","minimum":0}}},"staticEvidenceVerdict":{"type":"object","additionalProperties":false,"required":["scope","verdict","readyForClientVerification","readyForRelease","claim"],"properties":{"scope":{"type":"string","const":"static-server-side"},"verdict":{"type":"string","enum":["static-failures-found","client-verification-required"]},"readyForClientVerification":{"type":"boolean"},"readyForRelease":{"type":"boolean","const":false},"claim":{"type":"string"}}},"blockers":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["rank","priority","status","checkId","group","title","summary","evidence","remediation"],"properties":{"rank":{"type":"integer","minimum":1},"priority":{"type":"string","enum":["P0","P1"]},"status":{"type":"string","enum":["fail","warning"]},"checkId":{"type":"string"},"group":{"type":"string","enum":["page","manifest","embed","security","asset","runtime"]},"title":{"type":"string"},"summary":{"type":"string"},"evidence":{"type":["string","null"]},"remediation":{"type":"string"}}}},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["rank","priority","status","checkId","group","title","summary","evidence","remediation"],"properties":{"rank":{"type":"integer","minimum":1},"priority":{"type":"string","enum":["P0","P1"]},"status":{"type":"string","enum":["fail","warning"]},"checkId":{"type":"string"},"group":{"type":"string","enum":["page","manifest","embed","security","asset","runtime"]},"title":{"type":"string"},"summary":{"type":"string"},"evidence":{"type":["string","null"]},"remediation":{"type":"string"}}}},"prioritizedFindings":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["rank","priority","status","checkId","group","title","summary","evidence","remediation"],"properties":{"rank":{"type":"integer","minimum":1},"priority":{"type":"string","enum":["P0","P1"]},"status":{"type":"string","enum":["fail","warning"]},"checkId":{"type":"string"},"group":{"type":"string","enum":["page","manifest","embed","security","asset","runtime"]},"title":{"type":"string"},"summary":{"type":"string"},"evidence":{"type":["string","null"]},"remediation":{"type":"string"}}}},"orderedRemediationChecklist":{"type":"object","required":["ordered","steps","completionRule"],"properties":{"ordered":{"type":"boolean","const":true},"steps":{"type":"array","items":{"type":"object","required":["step","priority","checkId","artifact","change","acceptanceCriterion","sourceEvidence"],"properties":{"step":{"type":"integer","minimum":1},"priority":{"type":"string","enum":["P0","P1"]},"checkId":{"type":"string"},"artifact":{"type":"string"},"change":{"type":"string"},"acceptanceCriterion":{"type":"string"},"sourceEvidence":{"type":["string","null"]}}}},"completionRule":{"type":"string"}}},"contentEvidence":{"type":"object","additionalProperties":false,"required":["algorithm","pageBody","manifestBody","embedMetadata","scope"],"properties":{"algorithm":{"type":"string","const":"SHA-256"},"pageBody":{"$ref":"#/components/schemas/ContentDigest"},"manifestBody":{"$ref":"#/components/schemas/ContentDigest"},"embedMetadata":{"type":"object","required":["source","sha256","sizeBytes"],"properties":{"source":{"type":"string","const":"fc:miniapp content attribute"},"sha256":{"type":["string","null"]},"sizeBytes":{"type":["integer","null"],"minimum":0}}},"scope":{"type":"string"}}},"verificationLimitations":{"type":"object","required":["serverSideOnly","unverifiedChecks","requiredClientChecks","excludedClaims"],"properties":{"serverSideOnly":{"type":"boolean","const":true},"unverifiedChecks":{"type":"array","items":{"type":"object"}},"requiredClientChecks":{"type":"array","items":{"type":"string"}},"excludedClaims":{"type":"array","items":{"type":"string"}}}},"recovery":{"type":"object","additionalProperties":false,"required":["endpoint","method","authentication","retryPolicy"],"properties":{"endpoint":{"type":"string","format":"uri"},"method":{"type":"string","const":"POST"},"authentication":{"type":"string"},"retryPolicy":{"type":"string"}}},"repair":{"type":"object"},"report":{"type":"object","description":"Underlying Mini App Doctor static scan report, including its checks and referenced-asset observations."}}},"ContentDigest":{"type":"object","additionalProperties":false,"required":["url","sha256","sizeBytes"],"properties":{"url":{"type":"string","format":"uri"},"sha256":{"type":["string","null"]},"sizeBytes":{"type":["integer","null"],"minimum":0}}},"EligibilityResponse":{"type":"object","additionalProperties":false,"required":["eligibleForPaidAttempt","normalizedUrl","networkChecksPerformed","paidEndpoint","price"],"properties":{"eligibleForPaidAttempt":{"type":"boolean","const":true},"normalizedUrl":{"type":"string","format":"uri"},"networkChecksPerformed":{"type":"boolean","const":false},"paidEndpoint":{"type":"string","format":"uri"},"price":{"type":"object","required":["amount","currency","network"],"properties":{"amount":{"type":"string","const":"0.75"},"currency":{"type":"string","const":"USDC"},"network":{"type":"string","const":"eip155:8453"}}}}},"Error":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"},"retryPolicy":{"type":"string"}}},"DeepReleaseRequest":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^[Hh][Tt][Tt][Pp][Ss]://","minLength":1,"maxLength":2048,"description":"Public HTTPS launch URL whose final fetched URL must exactly equal miniapp.homeUrl, including query. Deep v1 can return GO only when every referenced image is PNG; JPEG/GIF/WebP force INDETERMINATE. Fragments are ignored; no credentials, secrets, or non-443 ports."}}},"DeepReleaseError":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string"},"retryPolicy":{"type":"string"}}},"DeepReleaseEligibility":{"type":"object","additionalProperties":false,"required":["eligibleForPaidAttempt","normalizedUrl","networkChecksPerformed","verificationBody","paidEndpoint","price","inputNotice","automaticRepurchaseAllowed"],"properties":{"eligibleForPaidAttempt":{"type":"boolean","const":true},"normalizedUrl":{"type":"string","format":"uri"},"networkChecksPerformed":{"type":"boolean","const":false},"verificationBody":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^[Hh][Tt][Tt][Pp][Ss]://","minLength":1,"maxLength":2048,"description":"Public HTTPS launch URL whose final fetched URL must exactly equal miniapp.homeUrl, including query. Deep v1 can return GO only when every referenced image is PNG; JPEG/GIF/WebP force INDETERMINATE. Fragments are ignored; no credentials, secrets, or non-443 ports."}}},"paidEndpoint":{"type":"string","const":"https://tlmnt.app/api/x402/miniapp-deep-release"},"price":{"type":"object","additionalProperties":false,"required":["amount","currency","network"],"properties":{"amount":{"type":"string","const":"5.99"},"currency":{"type":"string","const":"USDC"},"network":{"type":"string","const":"eip155:8453"}}},"inputNotice":{"type":"string"},"automaticRepurchaseAllowed":{"type":"boolean","const":false}}},"DeepReleaseTarget":{"type":"object","additionalProperties":false,"required":["requestedUrl","finalUrl","hostname","manifestUrl"],"properties":{"requestedUrl":{"type":"string","format":"uri"},"finalUrl":{"type":"string","format":"uri"},"hostname":{"type":"string","minLength":1},"manifestUrl":{"type":"string","format":"uri"}}},"DeepReleaseDecision":{"type":"object","additionalProperties":false,"required":["value","scope","readyForRelease","serverSideGatePassed","readyForClientVerification","nextAction","rule","passCount","blockerCount","indeterminateCount","statement"],"properties":{"value":{"type":"string","enum":["GO","NO_GO","INDETERMINATE"]},"scope":{"type":"string","const":"pinned-server-side-release-evidence"},"readyForRelease":{"type":"boolean","const":false},"serverSideGatePassed":{"type":"boolean"},"readyForClientVerification":{"type":"boolean"},"nextAction":{"type":"string","enum":["RUN_CLIENT_VERIFICATION","REVIEW_AND_FIX_BLOCKERS","REVIEW_AND_RESOLVE_INDETERMINATE_EVIDENCE"]},"rule":{"type":"string"},"passCount":{"type":"integer","minimum":0},"blockerCount":{"type":"integer","minimum":0},"indeterminateCount":{"type":"integer","minimum":0},"statement":{"type":"string","minLength":1}}},"DeepReleasePatchHint":{"type":"object","additionalProperties":false,"required":["op","artifact","path","valueHint","reason","acceptanceCriterion","requiresNewSignature"],"properties":{"op":{"type":"string","enum":["add","replace","remove"]},"artifact":{"type":"string","enum":["manifest","entry-html","asset","http-response"]},"path":{"type":"string"},"valueHint":{"type":"string"},"reason":{"type":"string"},"acceptanceCriterion":{"type":"string"},"requiresNewSignature":{"type":"boolean"}}},"DeepReleasePatchOperation":{"type":"object","additionalProperties":false,"required":["order","op","artifact","path","valueHint","reason","acceptanceCriterion","requiresNewSignature"],"properties":{"order":{"type":"integer","minimum":1},"op":{"type":"string","enum":["add","replace","remove"]},"artifact":{"type":"string","enum":["manifest","entry-html","asset","http-response"]},"path":{"type":"string"},"valueHint":{"type":"string"},"reason":{"type":"string"},"acceptanceCriterion":{"type":"string"},"requiresNewSignature":{"type":"boolean"}}},"DeepReleaseCheck":{"type":"object","additionalProperties":false,"required":["id","category","status","summary","evidence"],"properties":{"id":{"type":"string"},"category":{"type":"string","enum":["page","security","manifest-schema","association","embed-schema","asset"]},"status":{"type":"string","enum":["PASS","NO_GO","INDETERMINATE"]},"summary":{"type":"string"},"evidence":{"type":["object","array","string","number","boolean","null"]},"patch":{"type":"object","additionalProperties":false,"required":["op","artifact","path","valueHint","reason","acceptanceCriterion","requiresNewSignature"],"properties":{"op":{"type":"string","enum":["add","replace","remove"]},"artifact":{"type":"string","enum":["manifest","entry-html","asset","http-response"]},"path":{"type":"string"},"valueHint":{"type":"string"},"reason":{"type":"string"},"acceptanceCriterion":{"type":"string"},"requiresNewSignature":{"type":"boolean"}}}}},"DeepReleaseAssociation":{"type":"object","additionalProperties":false,"required":["status","summary","signature","decoded","optimism"],"properties":{"status":{"type":"string","enum":["PASS","NO_GO","INDETERMINATE"]},"summary":{"type":"string"},"signature":{"type":"object","additionalProperties":false,"required":["verified","serialization","signingInput","headerSha256","payloadSha256","signatureSha256"],"properties":{"verified":{"type":"boolean"},"serialization":{"type":["string","null"],"enum":["raw-bytes",null]},"signingInput":{"type":"string","const":"original-header.original-payload"},"headerSha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"payloadSha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"signatureSha256":{"type":"string","pattern":"^[0-9a-f]{64}$"}}},"decoded":{"type":"object","additionalProperties":false,"required":["fid","type","key","domain"],"properties":{"fid":{"type":["integer","null"]},"type":{"type":["string","null"],"enum":["custody","auth",null]},"key":{"type":["string","null"]},"domain":{"type":["string","null"]}}},"optimism":{"type":"object","additionalProperties":false,"required":["chainId","rpcUrl","blockNumber","blockHash","blockTimestamp","blockAgeSeconds","latestBlockNumber","latestBlockAgeSeconds","finalized","idRegistry","keyRegistry","idRegistryCodeHash","keyRegistryCodeHash","keyRegistryIdRegistry","keyRegistryMigrated","custody","custodyId","authKeyState","authKeyType"],"properties":{"chainId":{"type":"integer","const":10},"rpcUrl":{"type":"string","format":"uri"},"blockNumber":{"type":["integer","null"]},"blockHash":{"type":["string","null"]},"blockTimestamp":{"type":["integer","null"]},"blockAgeSeconds":{"type":["integer","null"]},"latestBlockNumber":{"type":["integer","null"]},"latestBlockAgeSeconds":{"type":["integer","null"]},"finalized":{"type":"boolean"},"idRegistry":{"type":"string"},"keyRegistry":{"type":"string"},"idRegistryCodeHash":{"type":["string","null"]},"keyRegistryCodeHash":{"type":["string","null"]},"keyRegistryIdRegistry":{"type":["string","null"]},"keyRegistryMigrated":{"type":["boolean","null"]},"custody":{"type":["string","null"]},"custodyId":{"type":["string","null"]},"authKeyState":{"type":["integer","null"]},"authKeyType":{"type":["integer","null"]}}}}},"DeepReleaseAsset":{"type":"object","additionalProperties":false,"required":["role","index","manifestPath","sourceValidation","requestedUrl","finalUrl","status","httpStatus","contentType","actualBytes","fetchConsumedBytes","sha256","magicType","width","height","aspectRatio","alpha","expected","findings"],"properties":{"role":{"type":"string","enum":["icon","splash","screenshot","hero","og","manifest-image","embed","embed-splash"]},"index":{"type":["integer","null"]},"manifestPath":{"type":"string"},"sourceValidation":{"type":"string","enum":["validated","raw-unvalidated"]},"requestedUrl":{"type":"string"},"finalUrl":{"type":"string"},"status":{"type":"string","enum":["PASS","NO_GO","INDETERMINATE"]},"httpStatus":{"type":["integer","null"]},"contentType":{"type":["string","null"]},"actualBytes":{"type":["integer","null"]},"fetchConsumedBytes":{"type":"integer","minimum":0},"sha256":{"type":["string","null"],"pattern":"^[0-9a-f]{64}$"},"magicType":{"type":["string","null"],"enum":["png","jpeg","gif","webp","unknown",null]},"width":{"type":["integer","null"]},"height":{"type":["integer","null"]},"aspectRatio":{"type":["string","null"]},"alpha":{"type":"object","additionalProperties":false,"required":["status","evidence"],"properties":{"status":{"type":"string","enum":["present","absent","unknown"]},"evidence":{"type":"string"}}},"expected":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}}}},"DeepReleaseAssetCoverage":{"type":"object","additionalProperties":false,"required":["candidateCount","uniqueUrlCount","inspectedCount","uniqueFetchedBytes","aggregateChargedBytes","chargingRule","maxCandidateCount","maxAggregateBytes","completeWithinBounds"],"properties":{"candidateCount":{"type":"integer","minimum":0,"maximum":10},"uniqueUrlCount":{"type":"integer","minimum":0,"maximum":10},"inspectedCount":{"type":"integer","minimum":0,"maximum":10},"uniqueFetchedBytes":{"type":"integer","minimum":0,"maximum":30000000},"aggregateChargedBytes":{"type":"integer","minimum":0,"maximum":30000000},"chargingRule":{"type":"string","const":"complete bytes and partial streamed bytes are charged; oversize responses charge their enforced read cap; pre-body failures charge zero"},"maxCandidateCount":{"type":"integer","const":10},"maxAggregateBytes":{"type":"integer","const":30000000},"completeWithinBounds":{"type":"boolean","description":"True only when every candidate's complete bytes and hash were captured within the byte/count budgets. It is byte-fetch/hash coverage, not format-verification completeness and not a GO signal."}}},"DeepReleaseExternalRequestBudget":{"type":"object","additionalProperties":false,"required":["limit","used","sampledLabels"],"properties":{"limit":{"type":"integer","const":40},"used":{"type":"integer","minimum":0,"maximum":40},"sampledLabels":{"type":"array","maxItems":32,"items":{"type":"string"}}}},"DeepReleaseTransportEvidence":{"type":"object","additionalProperties":false,"required":["requestedUrl","finalUrl","status","contentType","insecureRedirect","error","bodySha256","bodySizeBytes"],"properties":{"requestedUrl":{"type":"string"},"finalUrl":{"type":"string"},"status":{"type":["integer","null"]},"contentType":{"type":["string","null"]},"insecureRedirect":{"type":"boolean"},"error":{"type":["string","null"]},"bodySha256":{"type":["string","null"],"pattern":"^[0-9a-f]{64}$"},"bodySizeBytes":{"type":["integer","null"]}}},"DeepReleasePolicySnapshot":{"type":"object","additionalProperties":false,"required":["id","ruleSetVersion","implementationRevision","decisionSemantics","gateRules","nonGatingObservationIds","packages","upstreamCommits","optimism","imagePolicy","fetchPolicy","sha256"],"properties":{"id":{"type":"string"},"ruleSetVersion":{"type":"integer","minimum":1},"implementationRevision":{"type":"string"},"decisionSemantics":{"type":"string"},"gateRules":{"type":"object","minProperties":8,"additionalProperties":{"type":["string","array","object","boolean","number"]}},"nonGatingObservationIds":{"type":"array","items":{"type":"string"}},"packages":{"type":"object","minProperties":4,"additionalProperties":{"type":"object","required":["name","version"],"properties":{"name":{"type":"string"},"version":{"type":"string"},"npmIntegrity":{"type":"string"},"resolvedZod":{"type":"string"}}}},"upstreamCommits":{"type":"object","additionalProperties":false,"required":["miniapps","jfsAuthMonorepo","contracts"],"properties":{"miniapps":{"type":"string"},"jfsAuthMonorepo":{"type":"string"},"contracts":{"type":"string"}}},"optimism":{"type":"object","additionalProperties":false,"required":["chainId","idRegistry","idRegistryCodeHash","keyRegistry","keyRegistryCodeHash","finalizedMaxAgeSeconds","latestMaxAgeSeconds"],"properties":{"chainId":{"type":"integer","const":10},"idRegistry":{"type":"string"},"idRegistryCodeHash":{"type":"string"},"keyRegistry":{"type":"string"},"keyRegistryCodeHash":{"type":"string"},"finalizedMaxAgeSeconds":{"type":"integer"},"latestMaxAgeSeconds":{"type":"integer"}}},"imagePolicy":{"type":"object","minProperties":7,"additionalProperties":{"type":"string"}},"fetchPolicy":{"type":"object","minProperties":10,"additionalProperties":{"type":["string","number","array","object"]}},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"}}},"DeepReleaseMachinePatchPlan":{"type":"object","additionalProperties":false,"required":["deterministic","basis","executable","format","operations","completionRule"],"properties":{"deterministic":{"type":"boolean","const":true},"basis":{"type":"string","const":"captured-evidence-and-pinned-policy"},"executable":{"type":"boolean","const":false},"format":{"type":"string","const":"ordered-structured-remediation-hints"},"operations":{"type":"array","items":{"$ref":"#/components/schemas/DeepReleasePatchOperation"}},"completionRule":{"type":"string"}}},"DeepReleaseRecovery":{"type":"object","additionalProperties":false,"required":["endpoint","method","authentication","retryPolicy"],"properties":{"endpoint":{"type":"string","const":"https://tlmnt.app/api/x402/miniapp-deep-release/recovery"},"method":{"type":"string","const":"POST"},"authentication":{"type":"string"},"retryPolicy":{"type":"string"}}},"DeepReleaseRepurchasePolicy":{"type":"object","additionalProperties":false,"required":["automatic","operatorApprovalRequired","recoveryDoesNotRecompute","instruction"],"properties":{"automatic":{"type":"boolean","const":false},"operatorApprovalRequired":{"type":"boolean","const":true},"recoveryDoesNotRecompute":{"type":"boolean","const":true},"instruction":{"type":"string"}}},"DeepReleaseDecisionRecord":{"type":"object","additionalProperties":false,"required":["policySha256","target","transport","checks","decision","embed","association","assets","assetCoverage","observations","externalRequestBudget"],"properties":{"policySha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"target":{"$ref":"#/components/schemas/DeepReleaseTarget"},"transport":{"type":"object","additionalProperties":false,"required":["page","manifest"],"properties":{"page":{"$ref":"#/components/schemas/DeepReleaseTransportEvidence"},"manifest":{"$ref":"#/components/schemas/DeepReleaseTransportEvidence"}}},"checks":{"type":"array","items":{"$ref":"#/components/schemas/DeepReleaseCheck"}},"decision":{"$ref":"#/components/schemas/DeepReleaseDecision"},"embed":{"type":"object","additionalProperties":false,"required":["sha256","sizeBytes"],"properties":{"sha256":{"type":["string","null"],"pattern":"^[0-9a-f]{64}$"},"sizeBytes":{"type":["integer","null"]}}},"association":{"oneOf":[{"$ref":"#/components/schemas/DeepReleaseAssociation"},{"type":"null"}]},"assets":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/DeepReleaseAsset"}},"assetCoverage":{"$ref":"#/components/schemas/DeepReleaseAssetCoverage"},"observations":{"type":"array","items":{"type":"string"}},"externalRequestBudget":{"$ref":"#/components/schemas/DeepReleaseExternalRequestBudget"}}},"DeepReleaseEvidence":{"type":"object","additionalProperties":false,"required":["algorithm","pageBody","manifestBody","embedMetadata","bundleSha256","bundleScope","canonicalization","decisionRecordManifest","externalRequestBudget"],"properties":{"algorithm":{"type":"string","const":"SHA-256"},"pageBody":{"type":"object","additionalProperties":false,"required":["url","sha256","sizeBytes"],"properties":{"url":{"type":"string"},"sha256":{"type":["string","null"],"pattern":"^[0-9a-f]{64}$"},"sizeBytes":{"type":["integer","null"]}}},"manifestBody":{"type":"object","additionalProperties":false,"required":["url","sha256","sizeBytes"],"properties":{"url":{"type":"string"},"sha256":{"type":["string","null"],"pattern":"^[0-9a-f]{64}$"},"sizeBytes":{"type":["integer","null"]}}},"embedMetadata":{"type":"object","additionalProperties":false,"required":["source","sha256","sizeBytes"],"properties":{"source":{"type":"string","const":"head fc:miniapp content attribute"},"sha256":{"type":["string","null"],"pattern":"^[0-9a-f]{64}$"},"sizeBytes":{"type":["integer","null"]}}},"bundleSha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"bundleScope":{"type":"string","const":"canonical-returned-evidence-and-decision-record-v1"},"canonicalization":{"type":"string","const":"recursive-json-sorted-object-keys-no-whitespace-v1"},"decisionRecordManifest":{"$ref":"#/components/schemas/DeepReleaseDecisionRecord"},"externalRequestBudget":{"$ref":"#/components/schemas/DeepReleaseExternalRequestBudget"}}},"DeepReleaseDossier":{"type":"object","additionalProperties":false,"required":["schemaVersion","product","generatedAt","target","decision","policySnapshot","checks","machinePatchPlan","association","assets","assetCoverage","observations","evidence","limitations","recovery","repurchasePolicy"],"properties":{"schemaVersion":{"type":"integer","const":1},"product":{"type":"string","const":"Mini App Doctor Pinned Server-Side Release Gate"},"generatedAt":{"type":"string","format":"date-time"},"target":{"$ref":"#/components/schemas/DeepReleaseTarget"},"decision":{"$ref":"#/components/schemas/DeepReleaseDecision"},"policySnapshot":{"$ref":"#/components/schemas/DeepReleasePolicySnapshot"},"checks":{"type":"array","items":{"$ref":"#/components/schemas/DeepReleaseCheck"}},"machinePatchPlan":{"$ref":"#/components/schemas/DeepReleaseMachinePatchPlan"},"association":{"oneOf":[{"$ref":"#/components/schemas/DeepReleaseAssociation"},{"type":"null"}]},"assets":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/DeepReleaseAsset"}},"assetCoverage":{"$ref":"#/components/schemas/DeepReleaseAssetCoverage"},"observations":{"type":"array","items":{"type":"string"}},"evidence":{"$ref":"#/components/schemas/DeepReleaseEvidence"},"limitations":{"type":"array","items":{"type":"string"}},"recovery":{"$ref":"#/components/schemas/DeepReleaseRecovery"},"repurchasePolicy":{"$ref":"#/components/schemas/DeepReleaseRepurchasePolicy"}}}}}}