dev.malpercio.cards.witness

cards.malpercio.dev

Documentation

An appview's signed observation of a card changing hands, written into the appview's own repo. Triggered by a dev.malpercio.cards.item appearing on the firehose. Accepted witnesses form a prev-linked chain per give; exactly one accepted witness exists per (give, hop). Rejected witnesses explain why a claimant's item is not recognized. The chain is durable against player-side deletions and auditable by replaying the firehose.

main record

An appview's signed observation of a card changing hands, written into the appview's own repo. Triggered by a dev.malpercio.cards.item appearing on the firehose. Accepted witnesses form a prev-linked chain per give; exactly one accepted witness exists per (give, hop). Rejected witnesses explain why a claimant's item is not recognized. The chain is durable against player-side deletions and auditable by replaying the firehose.

Record Key tid Timestamp-based ID

Properties

detail string Optional

Rejected only. Human-readable specifics, e.g. the URI of the item that won.

maxLength: 512 bytes
from string did Optional

Sender of the transfer, if any.

give string at-uri Required

Root give this observation concerns.

holder string did Required

Repo owner of item. For accepted witnesses, the recognized holder after this hop.

hop integer Optional

Accepted only. 0 = received from provider, n = nth transfer.

minimum: 0
item ref com.atproto.repo.strongRef Required

The claimant's item as seen. Pinned so the observation stands even if the item is later deleted.

reason string Optional

Rejected only. superseded: another item was already accepted at this hop. not-holder: the transfer's sender was not the recognized holder. expired: transfer.expiresAt passed before the item appeared. invalid: the records fail structural verification (recipient, CID, revoked give).

Known values: superseded, not-holder, expired, invalid
seenAt string datetime Required

An RFC 3339 formatted timestamp.

status string Required

No description available.

Known values: accepted, rejected
View raw schema
{
  "description": "An appview's signed observation of a card changing hands, written into the appview's own repo. Triggered by a dev.malpercio.cards.item appearing on the firehose. Accepted witnesses form a prev-linked chain per give; exactly one accepted witness exists per (give, hop). Rejected witnesses explain why a claimant's item is not recognized. The chain is durable against player-side deletions and auditable by replaying the firehose.",
  "key": "tid",
  "record": {
    "properties": {
      "detail": {
        "description": "Rejected only. Human-readable specifics, e.g. the URI of the item that won.",
        "maxLength": 512,
        "type": "string"
      },
      "from": {
        "description": "Sender of the transfer, if any.",
        "format": "did",
        "type": "string"
      },
      "give": {
        "description": "Root give this observation concerns.",
        "format": "at-uri",
        "type": "string"
      },
      "holder": {
        "description": "Repo owner of item. For accepted witnesses, the recognized holder after this hop.",
        "format": "did",
        "type": "string"
      },
      "hop": {
        "description": "Accepted only. 0 = received from provider, n = nth transfer.",
        "minimum": 0,
        "type": "integer"
      },
      "item": {
        "description": "The claimant's item as seen. Pinned so the observation stands even if the item is later deleted.",
        "ref": "com.atproto.repo.strongRef",
        "type": "ref"
      },
      "prev": {
        "description": "Accepted only. The accepted witness for hop-1.",
        "ref": "com.atproto.repo.strongRef",
        "type": "ref"
      },
      "reason": {
        "description": "Rejected only. superseded: another item was already accepted at this hop. not-holder: the transfer's sender was not the recognized holder. expired: transfer.expiresAt passed before the item appeared. invalid: the records fail structural verification (recipient, CID, revoked give).",
        "knownValues": [
          "superseded",
          "not-holder",
          "expired",
          "invalid"
        ],
        "type": "string"
      },
      "seenAt": {
        "format": "datetime",
        "type": "string"
      },
      "status": {
        "knownValues": [
          "accepted",
          "rejected"
        ],
        "type": "string"
      },
      "transfer": {
        "description": "The transfer as seen, absent at hop 0.",
        "ref": "com.atproto.repo.strongRef",
        "type": "ref"
      }
    },
    "required": [
      "give",
      "item",
      "holder",
      "status",
      "seenAt"
    ],
    "type": "object"
  },
  "type": "record"
}

Lexicon Garden

@