org.hypercerts.funding.receipt

hypercerts.org

Schema Diff

+31 -10

From

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

To

CID
bafyreiegjbli7rm...
Indexed At
2026-04-07 22:42 UTC
View this version

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.for", sort: "format" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.funding.receipt:body.from", sort: "ref" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.funding.receipt:body.to", sort: "maxLength" }

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
}

Compare Other Versions

Lexicon Garden

@