org.hypercerts.funding.receipt
Schema Diff
+31 -10
Compatibility Analysis
Breaking Changes Detected
7 breaking changes, 25 non-breaking changes.
Breaking Changes (7)
- 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.for", sort: "ref", value: "com.atproto.repo.strongRef" }
Non-Breaking Changes (25)
- 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.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.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.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.to", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.funding.receipt:body.for", sort: "format" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.funding.receipt:body.from", sort: "ref" }
Migration Guidance
Added Elements
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.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.for", sort: "ref", value: "com.atproto.repo.strongRef" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.funding.receipt:body.to", sort: "maxLength" }
- 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.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.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
10
"description": "Amount of funding received as a numeric string (e.g. '1000.50').",
11
11
"maxLength": 50,
12
12
"type": "string"
13
13
},
14
14
"createdAt": {
15
15
"description": "Client-declared timestamp when this receipt record was created.",
16
16
"format": "datetime",
17
17
"type": "string"
18
18
},
19
19
"currency": {
20
20
"description": "Currency of the payment (e.g. EUR, USD, ETH).",
21
21
"maxLength": 10,
22
22
"type": "string"
23
23
},
24
24
"for": {
25
-
"description": "Optional reference to the activity, project, or organization this funding relates to.",
26
-
"format": "at-uri",
27
-
"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"
28
28
},
29
29
"from": {
30
-
"description": "DID of the sender who transferred the funds. Leave empty if sender wants to stay anonymous.",
31
-
"ref": "app.certified.defs#did",
32
-
"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"
33
37
},
34
38
"notes": {
35
39
"description": "Optional notes or additional context for this funding receipt.",
36
40
"maxLength": 500,
37
41
"type": "string"
38
42
},
39
43
"occurredAt": {
40
44
"description": "Timestamp when the payment occurred.",
41
45
"format": "datetime",
42
46
"type": "string"
43
47
},
44
48
"paymentNetwork": {
45
49
"description": "Optional network within the payment rail (e.g. arbitrum, ethereum, sepa, visa, paypal).",
46
50
"maxLength": 50,
47
51
"type": "string"
48
52
},
49
53
"paymentRail": {
50
54
"description": "How the funds were transferred (e.g. bank_transfer, credit_card, onchain, cash, check, payment_processor).",
51
55
"maxLength": 50,
52
56
"type": "string"
53
57
},
54
58
"to": {
55
-
"description": "The recipient of the funds. Can be identified by DID or a clear-text name.",
56
-
"maxLength": 2048,
57
-
"type": "string"
59
+
"description": "The recipient of the funds (a free-text string, an account DID, or a strong reference to a record).",
60
+
"refs": [
61
+
"#text",
62
+
"app.certified.defs#did",
63
+
"com.atproto.repo.strongRef"
64
+
],
65
+
"type": "union"
58
66
},
59
67
"transactionId": {
60
68
"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.",
61
69
"maxLength": 256,
62
70
"type": "string"
63
71
}
64
72
},
65
73
"required": [
66
-
"from",
67
74
"to",
68
75
"amount",
69
76
"currency",
70
77
"createdAt"
71
78
],
72
79
"type": "object"
73
80
},
74
81
"type": "record"
82
+
},
83
+
"text": {
84
+
"description": "A free-text string value (e.g. a display name, wallet address, or other identifier).",
85
+
"properties": {
86
+
"value": {
87
+
"description": "The string value.",
88
+
"maxLength": 2048,
89
+
"type": "string"
90
+
}
91
+
},
92
+
"required": [
93
+
"value"
94
+
],
95
+
"type": "object"
75
96
}
76
97
},
77
98
"id": "org.hypercerts.funding.receipt",
78
99
"lexicon": 1
79
100
}