org.hypercerts.funding.receipt

hypercerts.org

Schema Diff

+36 -10

From

CID
bafyreih72qas7mk...
Indexed At
2026-03-19 20:27 UTC
View this version

To

CID
bafyreiaqvs4htzp...
Indexed At
2026-07-26 20:13 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

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

Compare Other Versions

Lexicon Garden

@