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

4 breaking changes, 16 non-breaking changes.

Breaking Changes (4)
  • 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#text.value", sort: "maxLength", value: "2048" }
Non-Breaking Changes (16)
  • 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#text", tgt: "org.hypercerts.funding.receipt#text.value", kind: "prop", name: Some("value") }
  • 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.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") }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.funding.receipt:body.to", sort: "maxLength" }

Migration Guidance

Added Elements

  • 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#text.value", sort: "maxLength", value: "2048" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "org.hypercerts.funding.receipt:body.to", sort: "maxLength" }

Additional Notes

  • 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#text", tgt: "org.hypercerts.funding.receipt#text.value", kind: "prop", name: Some("value") }
  • 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.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") }
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
          },
57 64
          "paymentRail": {
58 65
            "type": "string",
59 66
            "maxLength": 50,
60 67
            "description": "How the funds were transferred (e.g. bank_transfer, credit_card, onchain, cash, check, payment_processor)."
61 68
          },
62 69
          "transactionId": {
63 70
            "type": "string",
64 71
            "maxLength": 256,
65 72
            "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 73
          },
67 74
          "paymentNetwork": {
68 75
            "type": "string",
69 76
            "maxLength": 50,
70 77
            "description": "Optional network within the payment rail (e.g. arbitrum, ethereum, sepa, visa, paypal)."
71 78
          }
72 79
        }
73 80
      },
74 81
      "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."
82 +
    },
83 +
    "text": {
84 +
      "type": "object",
85 +
      "required": [
86 +
        "value"
87 +
      ],
88 +
      "properties": {
89 +
        "value": {
90 +
          "type": "string",
91 +
          "maxLength": 2048,
92 +
          "description": "The string value."
93 +
        }
94 +
      },
95 +
      "description": "A free-text string value (e.g. a display name, wallet address, or other identifier)."
75 96
    }
76 97
  },
77 98
  "$type": "com.atproto.lexicon.schema",
78 99
  "lexicon": 1
79 100
}

Compare Other Versions

Lexicon Garden

@