org.hypercerts.funding.receipt
Schema Diff
+42 -10
Compatibility Analysis
Breaking Changes Detected
12 breaking changes, 28 non-breaking changes.
Breaking Changes (12)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.hypercerts.funding.receipt#text", src: "org.hypercerts.funding.receipt#text", tgt: "org.hypercerts.funding.receipt#text.value", kind: "prop", name: Some("value") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "org.hypercerts.funding.receipt:body", src: "org.hypercerts.funding.receipt:body", tgt: "org.hypercerts.funding.receipt:body.from", kind: "prop", name: Some("from") }
- RemovedEdge RemovedEdge { src: "org.hypercerts.funding.receipt:body.from", tgt: "app.certified.defs#did", kind: "ref", name: None }
- KindChanged KindChanged { vertex_id: "org.hypercerts.funding.receipt:body.for", old_kind: "string", new_kind: "ref" }
- KindChanged KindChanged { vertex_id: "org.hypercerts.funding.receipt:body.from", old_kind: "ref", new_kind: "union" }
- KindChanged KindChanged { vertex_id: "org.hypercerts.funding.receipt:body.to", old_kind: "string", new_kind: "union" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.paymentNetwork", sort: "maxLength", value: "50" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.currency", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.for", sort: "ref", value: "com.atproto.repo.strongRef" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.transactionId", sort: "maxLength", value: "256" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.amount", sort: "maxLength", value: "50" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.paymentRail", sort: "maxLength", value: "50" }
Non-Breaking Changes (28)
- AddedVertex AddedVertex { vertex_id: "app.certified.signature.defs#list" }
- AddedVertex AddedVertex { vertex_id: "com.atproto.repo.strongRef" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.funding.receipt#text" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.funding.receipt#text.value" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.funding.receipt:body.from:variant0" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.funding.receipt:body.from:variant1" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.funding.receipt:body.from:variant2" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.funding.receipt:body.signatures" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.funding.receipt:body.to:variant0" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.funding.receipt:body.to:variant1" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.funding.receipt:body.to:variant2" }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body", tgt: "org.hypercerts.funding.receipt:body.signatures", kind: "prop", name: Some("signatures") }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body.for", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body.from", tgt: "org.hypercerts.funding.receipt:body.from:variant0", kind: "variant", name: Some("#text") }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body.from", tgt: "org.hypercerts.funding.receipt:body.from:variant1", kind: "variant", name: Some("app.certified.defs#did") }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body.from", tgt: "org.hypercerts.funding.receipt:body.from:variant2", kind: "variant", name: Some("com.atproto.repo.strongRef") }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body.from:variant0", tgt: "org.hypercerts.funding.receipt#text", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body.from:variant1", tgt: "app.certified.defs#did", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body.from:variant2", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body.signatures", tgt: "app.certified.signature.defs#list", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body.to", tgt: "org.hypercerts.funding.receipt:body.to:variant0", kind: "variant", name: Some("#text") }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body.to", tgt: "org.hypercerts.funding.receipt:body.to:variant1", kind: "variant", name: Some("app.certified.defs#did") }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body.to", tgt: "org.hypercerts.funding.receipt:body.to:variant2", kind: "variant", name: Some("com.atproto.repo.strongRef") }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body.to:variant0", tgt: "org.hypercerts.funding.receipt#text", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body.to:variant1", tgt: "app.certified.defs#did", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.hypercerts.funding.receipt:body.to:variant2", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.funding.receipt:body.from", sort: "ref" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.funding.receipt:body.for", sort: "format" }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.certified.signature.defs#list" }AddedVertex { vertex_id: "com.atproto.repo.strongRef" }AddedVertex { vertex_id: "org.hypercerts.funding.receipt#text" }AddedVertex { vertex_id: "org.hypercerts.funding.receipt#text.value" }AddedVertex { vertex_id: "org.hypercerts.funding.receipt:body.from:variant0" }AddedVertex { vertex_id: "org.hypercerts.funding.receipt:body.from:variant1" }AddedVertex { vertex_id: "org.hypercerts.funding.receipt:body.from:variant2" }AddedVertex { vertex_id: "org.hypercerts.funding.receipt:body.signatures" }AddedVertex { vertex_id: "org.hypercerts.funding.receipt:body.to:variant0" }AddedVertex { vertex_id: "org.hypercerts.funding.receipt:body.to:variant1" }AddedVertex { vertex_id: "org.hypercerts.funding.receipt:body.to:variant2" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.paymentRail", sort: "maxLength", value: "50" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.amount", sort: "maxLength", value: "50" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.transactionId", sort: "maxLength", value: "256" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.currency", sort: "maxLength", value: "10" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.for", sort: "ref", value: "com.atproto.repo.strongRef" }
- ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.paymentNetwork", sort: "maxLength", value: "50" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.funding.receipt:body.from", sort: "ref" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.funding.receipt:body.for", sort: "format" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "org.hypercerts.funding.receipt#text", src: "org.hypercerts.funding.receipt#text", tgt: "org.hypercerts.funding.receipt#text.value", kind: "prop", name: Some("value") }
- Breaking: RequiredEdgeRemoved { vertex_id: "org.hypercerts.funding.receipt:body", src: "org.hypercerts.funding.receipt:body", tgt: "org.hypercerts.funding.receipt:body.from", kind: "prop", name: Some("from") }
- Breaking: RemovedEdge { src: "org.hypercerts.funding.receipt:body.from", tgt: "app.certified.defs#did", kind: "ref", name: None }
- Breaking: KindChanged { vertex_id: "org.hypercerts.funding.receipt:body.for", old_kind: "string", new_kind: "ref" }
- Breaking: KindChanged { vertex_id: "org.hypercerts.funding.receipt:body.from", old_kind: "ref", new_kind: "union" }
- Breaking: KindChanged { vertex_id: "org.hypercerts.funding.receipt:body.to", old_kind: "string", new_kind: "union" }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body", tgt: "org.hypercerts.funding.receipt:body.signatures", kind: "prop", name: Some("signatures") }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body.for", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body.from", tgt: "org.hypercerts.funding.receipt:body.from:variant0", kind: "variant", name: Some("#text") }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body.from", tgt: "org.hypercerts.funding.receipt:body.from:variant1", kind: "variant", name: Some("app.certified.defs#did") }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body.from", tgt: "org.hypercerts.funding.receipt:body.from:variant2", kind: "variant", name: Some("com.atproto.repo.strongRef") }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body.from:variant0", tgt: "org.hypercerts.funding.receipt#text", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body.from:variant1", tgt: "app.certified.defs#did", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body.from:variant2", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body.signatures", tgt: "app.certified.signature.defs#list", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body.to", tgt: "org.hypercerts.funding.receipt:body.to:variant0", kind: "variant", name: Some("#text") }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body.to", tgt: "org.hypercerts.funding.receipt:body.to:variant1", kind: "variant", name: Some("app.certified.defs#did") }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body.to", tgt: "org.hypercerts.funding.receipt:body.to:variant2", kind: "variant", name: Some("com.atproto.repo.strongRef") }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body.to:variant0", tgt: "org.hypercerts.funding.receipt#text", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body.to:variant1", tgt: "app.certified.defs#did", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.hypercerts.funding.receipt:body.to:variant2", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "Records a funding receipt for a payment from one user to another user. It may be recorded by the recipient, by the sender, or by a third party. The sender may remain anonymous.",
6
6
"key": "tid",
7
7
"record": {
8
8
"properties": {
9
9
"amount": {
10
-
"description": "Amount of funding received.",
10
+
"description": "Amount of funding received as a numeric string (e.g. '1000.50').",
11
+
"maxLength": 50,
11
12
"type": "string"
12
13
},
13
14
"createdAt": {
14
15
"description": "Client-declared timestamp when this receipt record was created.",
15
16
"format": "datetime",
16
17
"type": "string"
17
18
},
18
19
"currency": {
19
20
"description": "Currency of the payment (e.g. EUR, USD, ETH).",
21
+
"maxLength": 10,
20
22
"type": "string"
21
23
},
22
24
"for": {
23
-
"description": "Optional reference to the activity, project, or organization this funding relates to.",
24
-
"format": "at-uri",
25
-
"type": "string"
25
+
"description": "Optional strong reference to the activity, project, or organization this funding relates to.",
26
+
"ref": "com.atproto.repo.strongRef",
27
+
"type": "ref"
26
28
},
27
29
"from": {
28
-
"description": "DID of the sender who transferred the funds. Leave empty if sender wants to stay anonymous.",
29
-
"ref": "app.certified.defs#did",
30
-
"type": "ref"
30
+
"description": "The sender of the funds (a free-text string, an account DID, or a strong reference to a record). Optional — omit to represent anonymity.",
31
+
"refs": [
32
+
"#text",
33
+
"app.certified.defs#did",
34
+
"com.atproto.repo.strongRef"
35
+
],
36
+
"type": "union"
31
37
},
32
38
"notes": {
33
39
"description": "Optional notes or additional context for this funding receipt.",
34
40
"maxLength": 500,
35
41
"type": "string"
36
42
},
37
43
"occurredAt": {
38
44
"description": "Timestamp when the payment occurred.",
39
45
"format": "datetime",
40
46
"type": "string"
41
47
},
42
48
"paymentNetwork": {
43
49
"description": "Optional network within the payment rail (e.g. arbitrum, ethereum, sepa, visa, paypal).",
50
+
"maxLength": 50,
44
51
"type": "string"
45
52
},
46
53
"paymentRail": {
47
54
"description": "How the funds were transferred (e.g. bank_transfer, credit_card, onchain, cash, check, payment_processor).",
55
+
"maxLength": 50,
48
56
"type": "string"
49
57
},
58
+
"signatures": {
59
+
"description": "Optional cryptographic signatures attesting to this record's content.",
60
+
"ref": "app.certified.signature.defs#list",
61
+
"type": "ref"
62
+
},
50
63
"to": {
51
-
"description": "The recipient of the funds. Can be identified by DID or a clear-text name.",
52
-
"type": "string"
64
+
"description": "The recipient of the funds (a free-text string, an account DID, or a strong reference to a record).",
65
+
"refs": [
66
+
"#text",
67
+
"app.certified.defs#did",
68
+
"com.atproto.repo.strongRef"
69
+
],
70
+
"type": "union"
53
71
},
54
72
"transactionId": {
55
73
"description": "Identifier of the underlying payment transaction (e.g. bank reference, onchain transaction hash, or processor-specific ID). Use paymentNetwork to specify the network where applicable.",
74
+
"maxLength": 256,
56
75
"type": "string"
57
76
}
58
77
},
59
78
"required": [
60
-
"from",
61
79
"to",
62
80
"amount",
63
81
"currency",
64
82
"createdAt"
65
83
],
66
84
"type": "object"
67
85
},
68
86
"type": "record"
87
+
},
88
+
"text": {
89
+
"description": "A free-text string value (e.g. a display name, wallet address, or other identifier).",
90
+
"properties": {
91
+
"value": {
92
+
"description": "The string value.",
93
+
"maxLength": 2048,
94
+
"type": "string"
95
+
}
96
+
},
97
+
"required": [
98
+
"value"
99
+
],
100
+
"type": "object"
69
101
}
70
102
},
71
103
"id": "org.hypercerts.funding.receipt",
72
104
"lexicon": 1
73
105
}