cards.sunshine.verify
Checks a tap of a Sunshine Card. Called through the scanner's PDS (service auth), it also returns a signed scan record for the caller to write into the scanner's repo.
Details · procedure
| Kind | procedure |
|---|---|
| Authority | sunshine.cards |
| Indexed |
Procedure
procedure · POSTInput
application/jsonctr
stringThe read counter, in hex, from a plain-mirror tag.
minLength: 6maxLength: 6
The card's creator.
The tap's signature, in hex.
minLength: 16maxLength: 16
picc
stringThe encrypted serial number and counter, in hex, from an encrypted-mirror tag. Supply exactly one of ctr and picc.
minLength: 32maxLength: 32
The tag's serial number, in hex.
minLength: 14maxLength: 14
Output
application/jsoncard
unknownThe card's public details: a complete cards.sunshine.card record. Present when valid is true, and when reason is alreadyCollected. The card's record is only published once someone collects it, so this is the only place to find a new card's details.
proof
refWrite it whenever it's present, even when valid is false. When valid, it's the scan just made; when reason is alreadyCollected, it's the scanner's earlier scan of this card, signed again.
reason
stringmaxLength: 64knownValues: notGenuine | replayed | alreadyCollected | unknownCard
Errors
CreatorUnavailable
The creator's deck can't be reached. Retry the same tap; if that returns replayed, tap again.
#proof
objectA signed scan record, with the arguments com.atproto.repo.createRecord needs to write it.
Properties
The scanner: the repo to write to.
The signed cards.sunshine.scan record.
Similar lexicons
semantic matchLexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
Proof that this repo's owner scanned a Sunshine Card, signed by the instance that checked the tap. The record key is <creator DID>:<UID>:<counter>.