com.publicdomainrelay.temp.market.receipts.x402
Schema Diff
+13 -1
Compatibility Analysis
Backward Compatible
Backward compatible. 4 non-breaking changes.
Non-Breaking Changes (4)
- AddedVertex AddedVertex { vertex_id: "com.publicdomainrelay.temp.market.receipts.x402:body.cid" }
- AddedVertex AddedVertex { vertex_id: "com.publicdomainrelay.temp.market.receipts.x402:body.signatures" }
- AddedEdge AddedEdge { src: "com.publicdomainrelay.temp.market.receipts.x402:body", tgt: "com.publicdomainrelay.temp.market.receipts.x402:body.cid", kind: "prop", name: Some("cid") }
- AddedEdge AddedEdge { src: "com.publicdomainrelay.temp.market.receipts.x402:body", tgt: "com.publicdomainrelay.temp.market.receipts.x402:body.signatures", kind: "prop", name: Some("signatures") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.publicdomainrelay.temp.market.receipts.x402:body.cid" }AddedVertex { vertex_id: "com.publicdomainrelay.temp.market.receipts.x402:body.signatures" }
Additional Notes
- Non-breaking: AddedEdge { src: "com.publicdomainrelay.temp.market.receipts.x402:body", tgt: "com.publicdomainrelay.temp.market.receipts.x402:body.cid", kind: "prop", name: Some("cid") }
- Non-breaking: AddedEdge { src: "com.publicdomainrelay.temp.market.receipts.x402:body", tgt: "com.publicdomainrelay.temp.market.receipts.x402:body.signatures", kind: "prop", name: Some("signatures") }
1
1
{
2
2
"id": "com.publicdomainrelay.temp.market.receipts.x402",
3
3
"defs": {
4
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
-
"accept"
10
+
"accept",
11
+
"cid",
12
+
"signatures"
11
13
],
12
14
"properties": {
15
+
"cid": {
16
+
"type": "string",
17
+
"format": "cid",
18
+
"description": "badge.blue attestation CID over the referenced accepts.x402 record, making this receipt a remote attestation proof: computed from the accepts.x402 record (signatures stripped), this receipt's metadata (cid/signatures stripped, repository = requester's repo DID added) as $sig, via DAG-CBOR + SHA-256 + CIDv1. Re-binding the proof-of-payment to a copy of the accepts.x402 in another repository fails verification — badge.blue's replay-attack prevention applied to payment receipts."
19
+
},
13
20
"accept": {
14
21
"ref": "com.atproto.repo.strongRef",
15
22
"type": "ref",
16
23
"description": "Strong reference to the com.publicdomainrelay.temp.market.accepts.x402 record that this payment settles."
24
+
},
25
+
"signatures": {
26
+
"ref": "network.attested.signature#signatures",
27
+
"type": "ref",
28
+
"description": "badge.blue attestations over this receipt. Must include the bidder's inline signature, attached at creation, so the proof-of-payment is non-repudiable."
17
29
}
18
30
}
19
31
},
20
32
"description": "Proof-of-payment receipt minted by the bidder in response to a successful x402-gated GET against the bids.x402 url. Returned (by AT-URI + CID) to the requester, which uses it as the payload of the higher-level com.publicdomainrelay.temp.market.accept so the bidder can verify payment before provisioning."
21
33
}
22
34
},
23
35
"$type": "com.atproto.lexicon.schema",
24
36
"lexicon": 1
25
37
}