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.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.amount", sort: "maxLength", value: "50" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.paymentNetwork", 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.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.paymentRail", sort: "maxLength", value: "50" }
  • 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.currency", sort: "maxLength", value: "10" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.amount", sort: "maxLength", value: "50" }
  • ConstraintAdded ConstraintAdded { vertex_id: "org.hypercerts.funding.receipt:body.paymentNetwork", sort: "maxLength", value: "50" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.funding.receipt:body.for", sort: "format" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.funding.receipt:body.from", sort: "ref" }

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 -
            "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)."
20 24
          },
21 25
          "for": {
22 -
            "type": "string",
23 -
            "format": "at-uri",
24 -
            "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."
25 29
          },
26 30
          "from": {
27 -
            "ref": "app.certified.defs#did",
28 -
            "type": "ref",
29 -
            "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."
30 38
          },
31 39
          "notes": {
32 40
            "type": "string",
33 41
            "maxLength": 500,
34 42
            "description": "Optional notes or additional context for this funding receipt."
35 43
          },
36 44
          "amount": {
37 45
            "type": "string",
38 -
            "description": "Amount of funding received."
46 +
            "maxLength": 50,
47 +
            "description": "Amount of funding received as a numeric string (e.g. '1000.50')."
39 48
          },
40 49
          "currency": {
41 50
            "type": "string",
51 +
            "maxLength": 10,
42 52
            "description": "Currency of the payment (e.g. EUR, USD, ETH)."
43 53
          },
44 54
          "createdAt": {
45 55
            "type": "string",
46 56
            "format": "datetime",
47 57
            "description": "Client-declared timestamp when this receipt record was created."
48 58
          },
49 59
          "occurredAt": {
50 60
            "type": "string",
51 61
            "format": "datetime",
52 62
            "description": "Timestamp when the payment occurred."
53 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 +
          },
54 69
          "paymentRail": {
55 70
            "type": "string",
71 +
            "maxLength": 50,
56 72
            "description": "How the funds were transferred (e.g. bank_transfer, credit_card, onchain, cash, check, payment_processor)."
57 73
          },
58 74
          "transactionId": {
59 75
            "type": "string",
76 +
            "maxLength": 256,
60 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."
61 78
          },
62 79
          "paymentNetwork": {
63 80
            "type": "string",
81 +
            "maxLength": 50,
64 82
            "description": "Optional network within the payment rail (e.g. arbitrum, ethereum, sepa, visa, paypal)."
65 83
          }
66 84
        }
67 85
      },
68 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)."
69 101
    }
70 102
  },
71 103
  "$type": "com.atproto.lexicon.schema",
72 104
  "lexicon": 1
73 105
}

Compare Other Versions

Lexicon Garden

@