{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://spoolis.com/schema/outcome-receipt-v1.schema.json","title":"Spoolis outcome receipt v1","type":"object","additionalProperties":false,"required":["schema","environment","id","agreement","verification","evidence_root","condition_results","result","amounts","actors","issued_at","nonce","signing_key_id","signature","algorithm"],"properties":{"schema":{"const":"spoolis/outcome-receipt@1"},"environment":{"enum":["production","demo"]},"id":{"type":"string","pattern":"^ocr_[a-f0-9]{24}$"},"agreement":{"type":"object","additionalProperties":false,"required":["spool_id","agreement_version","agreement_hash"],"properties":{"spool_id":{"type":"string","pattern":"^spl_[A-Za-z0-9_-]+$"},"agreement_version":{"type":"integer","minimum":1},"agreement_hash":{"$ref":"#/$defs/digest"}}},"verification":{"type":"object","additionalProperties":false,"required":["plan_version","plan_hash","compiler_version","evidence_policy_version","run_id","run_digest","aggregation_policy"],"properties":{"plan_version":{"type":"string","minLength":1},"plan_hash":{"$ref":"#/$defs/digest"},"compiler_version":{"type":"string","minLength":1},"evidence_policy_version":{"type":"string","minLength":1},"run_id":{"type":"string","pattern":"^vr_[A-Za-z0-9_-]+$"},"run_digest":{"$ref":"#/$defs/digest"},"aggregation_policy":{"type":"object","additionalProperties":false,"required":["policy_id","policy_version"],"properties":{"policy_id":{"type":"string","minLength":1},"policy_version":{"type":"string","minLength":1}}}}},"evidence_root":{"$ref":"#/$defs/digest"},"condition_results":{"type":"array","items":{"$ref":"#/$defs/conditionResult"}},"result":{"$ref":"#/$defs/receiptResult"},"units":{"$ref":"#/$defs/units"},"amounts":{"type":"object","additionalProperties":false,"required":["earned","asset","decimals"],"properties":{"earned":{"$ref":"#/$defs/decimal"},"committed":{"$ref":"#/$defs/decimal"},"asset":{"type":"string","pattern":"^(?:[A-Z]{3}|[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}/[-.%a-zA-Z0-9]{1,128})$"},"decimals":{"type":"integer","minimum":0}}},"actors":{"type":"object","additionalProperties":false,"required":["payer","provider"],"properties":{"payer":{"$ref":"#/$defs/actor"},"provider":{"$ref":"#/$defs/actor"}}},"issued_at":{"type":"string","format":"date-time"},"execute_by":{"type":"string","format":"date-time"},"nonce":{"type":"string","minLength":1},"series":{"type":"object","additionalProperties":false,"required":["series_id","period"],"properties":{"series_id":{"type":"string","minLength":1},"period":{"type":"string","minLength":1}}},"supersedes":{"type":"object","additionalProperties":false,"required":["receipt_id","reason"],"properties":{"receipt_id":{"type":"string","pattern":"^ocr_[a-f0-9]{24}$"},"reason":{"enum":["verification_defect","appeal_reversal"]}}},"signing_key_id":{"$ref":"#/$defs/digest"},"signature":{"type":"string","contentEncoding":"base64","minLength":1},"algorithm":{"const":"Ed25519"}},"$defs":{"digest":{"type":"string","pattern":"^[a-f0-9]{64}$"},"decimal":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?$"},"subject":{"type":"string","pattern":"^[A-Za-z0-9_-]+:[^\\s]+$"},"receiptResult":{"enum":["pass","partial","fail","uncertain"]},"conditionResult":{"type":"object","additionalProperties":false,"required":["condition_id","requirement","result","method","verifier_id","verifier_version","evidence_refs"],"properties":{"condition_id":{"type":"string","minLength":1},"requirement":{"enum":["mandatory","optional"]},"result":{"enum":["pass","partial","fail","uncertain","not_evaluated","not_applicable"]},"method":{"enum":["deterministic","external_tool","ai_assisted","human_confirmed"]},"verifier_id":{"type":"string","minLength":1},"verifier_version":{"type":"string","minLength":1},"evidence_refs":{"type":"array","items":{"type":"string","pattern":"^ev_[A-Za-z0-9_-]+$"}},"evidence_provenance":{"type":"array","items":{"$ref":"#/$defs/evidenceProvenance"}},"confirmed_by":{"$ref":"#/$defs/subject"},"reason":{"type":"string"}}},"evidenceProvenance":{"type":"object","additionalProperties":false,"required":["evidence_ref","source_kind","capture_method","observed_at","verifier_id"],"properties":{"evidence_ref":{"type":"string","pattern":"^ev_[A-Za-z0-9_-]+$"},"source_kind":{"enum":["api_response","uploaded_json","uploaded_file","url_fetch","buyer_image","ocr_from_image","human_entry","carrier_event","external_tool_result"]},"capture_method":{"enum":["api_submission","file_upload","image_upload","http_fetch","ocr_extraction","human_confirmation","webhook","tool_invocation"]},"artifact_ref":{"type":"string","minLength":1},"observed_at":{"type":"string","format":"date-time"},"verifier_id":{"type":"string","minLength":1}}},"actor":{"type":"object","additionalProperties":false,"required":["subject","kind"],"properties":{"subject":{"$ref":"#/$defs/subject"},"kind":{"enum":["human","business","agent","marketplace","ephemeral"]},"also_known_as":{"type":"array","items":{"$ref":"#/$defs/subject"}}}},"units":{"type":"object","additionalProperties":false,"required":["total","accepted","rejected","earning_rule","rejection_summary","unit_results_digest"],"properties":{"total":{"type":"integer","minimum":0},"accepted":{"type":"integer","minimum":0},"rejected":{"type":"integer","minimum":0},"earning_rule":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type","unit_amount"],"properties":{"type":{"const":"per_unit"},"unit_amount":{"$ref":"#/$defs/decimal"}}},{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"const":"fixed"}}}]},"rejection_summary":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["reason","count"],"properties":{"reason":{"type":"string","minLength":1},"count":{"type":"integer","minimum":0}}}},"unit_results_digest":{"$ref":"#/$defs/digest"}}}}}