fyi.atstore.listing.detail

atstore.fyi

Documentation

Public protocol or app listing in the AT Store directory. Images are stored as repo blobs (Kitchen-style); the web app caches HTTPS URLs in Postgres separately.

main record

Public protocol or app listing in the AT Store directory. Images are stored as repo blobs (Kitchen-style); the web app caches HTTPS URLs in Postgres separately.

Record Key tid Timestamp-based ID

Properties

appTags array of string Optional

No description available.

maxLength: 64 items
categorySlug array of string Required

Browse category keys (e.g. protocol/pds). First entry is the primary category for legacy surfaces.

maxLength: 32 itemsminLength: 1 items
createdAt string datetime Required

An RFC 3339 formatted timestamp.

description string Optional

No description available.

maxLength: 20000 bytes
externalUrl string uri Required

Primary product or project URL.

maxLength: 2048 bytes
heroImage blob Optional

Hero / cover image blob.

maxSize: 12.0 MB
icon blob Required

Square / app icon (uploaded to repo via com.atproto.repo.uploadBlob).

maxSize: 2.0 MB
migratedFromAtUri string at-uri Optional

When this listing.detail record supersedes a prior record in another repo (e.g. moved from the AT Store publisher to a product owner PDS), the at:// URI of that prior fyi.atstore.listing.detail record.

maxLength: 8192 bytes
name string Required

No description available.

maxLength: 640 bytes
productAccountDid string Optional

Bluesky DID for the product, app, or tool (not the AT Store publisher). Handle is resolved and stored in Postgres only.

maxLength: 2048 bytes
screenshots array of blob Optional

No description available.

maxLength: 20 items
slug string Required

Stable URL slug; unique within the publishing account.

maxLength: 512 bytesminLength: 1 bytes
tagline string Required

No description available.

maxLength: 300 bytes
updatedAt string datetime Required

An RFC 3339 formatted timestamp.

View raw schema
{
  "key": "tid",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "slug",
      "name",
      "tagline",
      "externalUrl",
      "icon",
      "categorySlug",
      "createdAt",
      "updatedAt"
    ],
    "properties": {
      "icon": {
        "type": "blob",
        "accept": [
          "image/png",
          "image/jpeg",
          "image/webp",
          "image/gif",
          "image/svg+xml"
        ],
        "maxSize": 2000000,
        "description": "Square / app icon (uploaded to repo via com.atproto.repo.uploadBlob)."
      },
      "name": {
        "type": "string",
        "maxLength": 640
      },
      "slug": {
        "type": "string",
        "maxLength": 512,
        "minLength": 1,
        "description": "Stable URL slug; unique within the publishing account."
      },
      "links": {
        "type": "array",
        "items": {
          "ref": "#link",
          "type": "ref"
        },
        "maxLength": 12,
        "description": "Relevant links for the app, including trust/compliance, support, and project resources."
      },
      "appTags": {
        "type": "array",
        "items": {
          "type": "string",
          "maxLength": 96
        },
        "maxLength": 64
      },
      "tagline": {
        "type": "string",
        "maxLength": 300
      },
      "createdAt": {
        "type": "string",
        "format": "datetime"
      },
      "heroImage": {
        "type": "blob",
        "accept": [
          "image/png",
          "image/jpeg",
          "image/webp",
          "image/gif",
          "image/svg+xml"
        ],
        "maxSize": 12000000,
        "description": "Hero / cover image blob."
      },
      "updatedAt": {
        "type": "string",
        "format": "datetime"
      },
      "description": {
        "type": "string",
        "maxLength": 20000
      },
      "externalUrl": {
        "type": "string",
        "format": "uri",
        "maxLength": 2048,
        "description": "Primary product or project URL."
      },
      "screenshots": {
        "type": "array",
        "items": {
          "type": "blob",
          "accept": [
            "image/png",
            "image/jpeg",
            "image/webp",
            "image/gif",
            "image/svg+xml"
          ],
          "maxSize": 12000000
        },
        "maxLength": 20
      },
      "categorySlug": {
        "type": "array",
        "items": {
          "type": "string",
          "maxLength": 256
        },
        "maxLength": 32,
        "minLength": 1,
        "description": "Browse category keys (e.g. protocol/pds). First entry is the primary category for legacy surfaces."
      },
      "migratedFromAtUri": {
        "type": "string",
        "format": "at-uri",
        "maxLength": 8192,
        "description": "When this listing.detail record supersedes a prior record in another repo (e.g. moved from the AT Store publisher to a product owner PDS), the at:// URI of that prior fyi.atstore.listing.detail record."
      },
      "productAccountDid": {
        "type": "string",
        "maxLength": 2048,
        "description": "Bluesky DID for the product, app, or tool (not the AT Store publisher). Handle is resolved and stored in Postgres only."
      }
    }
  },
  "description": "Public protocol or app listing in the AT Store directory. Images are stored as repo blobs (Kitchen-style); the web app caches HTTPS URLs in Postgres separately."
}
link object

No description available.

Properties

label string Optional

Optional human-readable label, especially useful when type is 'other'.

maxLength: 100 bytesmaxGraphemes: 50 graphemes
type string Required

The kind of link.

maxLength: 32 bytes
Known values: privacy, terms, support, contact, docs, blog, changelog, source, status, community, donate, license, other
url string uri Required

The destination URL.

maxLength: 2048 bytes
View raw schema
{
  "type": "object",
  "required": [
    "type",
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048,
      "description": "The destination URL."
    },
    "type": {
      "type": "string",
      "maxLength": 32,
      "description": "The kind of link.",
      "knownValues": [
        "privacy",
        "terms",
        "support",
        "contact",
        "docs",
        "blog",
        "changelog",
        "source",
        "status",
        "community",
        "donate",
        "license",
        "other"
      ]
    },
    "label": {
      "type": "string",
      "maxLength": 100,
      "description": "Optional human-readable label, especially useful when type is 'other'.",
      "maxGraphemes": 50
    }
  }
}

Lexicon Garden

@