org.hypercerts.funding.receipt

hypercerts.org

Schema Diff

+42 -10

From

CID
bafyreihlqzardqq...
Indexed At
2026-02-18 19:48 UTC
View this version

To

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

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
}

Compare Other Versions

Lexicon Garden

@