cards.sunshine.scan

sunshine.cards

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "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>.",
      "key": "any",
      "record": {
        "properties": {
          "card": {
            "description": "The scanned card's public record.",
            "format": "at-uri",
            "type": "string"
          },
          "counter": {
            "description": "The tag's read counter for this tap.",
            "maximum": 16777215,
            "minimum": 1,
            "type": "integer"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "signatures": {
            "items": {
              "refs": [
                "#signature"
              ],
              "type": "union"
            },
            "minLength": 1,
            "type": "array"
          }
        },
        "required": [
          "card",
          "counter",
          "createdAt",
          "signatures"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "signature": {
      "description": "A badge.blue inline signature: https://badge.blue",
      "properties": {
        "cid": {
          "format": "cid",
          "type": "string"
        },
        "issuer": {
          "format": "did",
          "type": "string"
        },
        "key": {
          "description": "DID URL of the signing key, eg. did:web:sunshine.cards#attestation.",
          "maxLength": 2048,
          "type": "string"
        },
        "signature": {
          "maxLength": 64,
          "minLength": 64,
          "type": "bytes"
        }
      },
      "required": [
        "key",
        "issuer",
        "cid",
        "signature"
      ],
      "type": "object"
    }
  },
  "id": "cards.sunshine.scan",
  "lexicon": 1
}

Validate Record

Validate a record against cards.sunshine.scan

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:web:sunshine.cards
CID
bafyreiezuac6hwzyj4jypqf7hdd5wjwiw4ud5qeclkxw4efuhacifwlu3q
Indexed At
2026-10-12 20:15 UTC
AT-URI
at://did:web:sunshine.cards/com.atproto.lexicon.schema/cards.sunshine.scan

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • cards.sunshine.verify procedurenot from the namespace authority

    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.

  • A Sunshine Card's public details. The record key is the card's UID.

  • network.attested.signature objectnot from the namespace authority

    An inline attestation: an ECDSA signature over a canonical attestation CID, embedded directly in a record's `signatures` array. The CID is computed from the record (signatures stripped), this entry's metadata (cid/signa…

  • cards.sunshine.cardAdmin recordnot from the namespace authority

    A card's secrets, kept in its creator's deck. The record key is the card's UID, as 14 upper-case hex characters.

  • A cryptographic signature attesting to a claim

Lexicon Garden

@