dev.malpercio.cards.witness
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"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"
}
},
"id": "dev.malpercio.cards.witness",
"lexicon": 1
}
Metadata
- DID
-
did:plc:kmg2eqexpdefljft34crzesc - CID
-
bafyreif4azxoism3verd4lodaaztjkiwedf6774i2exosu2ldd4dq2acpe - Indexed At
- 2026-10-20 23:53 UTC
- AT-URI
-
at://did:plc:kmg2eqexpdefljft34crzesc/com.atproto.lexicon.schema/dev.malpercio.cards.witness
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
dev.malpercio.cards.transfer record
Written by the current owner to hand a card to another DID. The recipient completes the transfer by writing a dev.malpercio.cards.item whose 'via' strongRefs this record. Repos are mutable, so an appview indexing the fi…
-
dev.malpercio.cards.item record
A card (or sealed pack) held by the repo owner. Not authoritative on its own: validity comes from the chain of strongRefs back to a provider give whose recipient matches the current owner at each hop. Blobs are the owne…