app.zeens.getPhotoFeed

zeens.app

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Retrieve a feed of Zeens photos with optional filters by camera, category, and engagement.",
      "output": {
        "encoding": "application/json"
      },
      "parameters": {
        "properties": {
          "aiFilter": {
            "description": "Filter by AI declaration: no-ai, ai-assisted, contains-ai.",
            "knownValues": [
              "no-ai",
              "ai-assisted",
              "contains-ai"
            ],
            "type": "string"
          },
          "cameraMake": {
            "description": "Filter by camera manufacturer (e.g. Sony, Canon, Fujifilm).",
            "type": "string"
          },
          "cameraModel": {
            "description": "Filter by camera model (e.g. A7R V, X-T5).",
            "type": "string"
          },
          "category": {
            "description": "Filter by photography category (e.g. landscape, portrait, street).",
            "type": "string"
          },
          "cursor": {
            "description": "Pagination cursor from previous response.",
            "type": "string"
          },
          "filmCamera": {
            "description": "Filter by the hand-typed film body in postMeta.film.camera, matched exactly (case-insensitively). Distinct from cameraModel, which matches EXIF — on a film scan the EXIF describes the scanner, so a film body only ever appears here.",
            "type": "string"
          },
          "filmLens": {
            "description": "Filter by the hand-typed film lens in postMeta.film.lens, matched exactly (case-insensitively). Distinct from `lens`, which matches EXIF with a substring.",
            "type": "string"
          },
          "lens": {
            "description": "Filter by lens model substring match.",
            "type": "string"
          },
          "limit": {
            "default": 50,
            "description": "Maximum number of results to return.",
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          },
          "sort": {
            "description": "Sort order. Default is reverse-chronological. 'popular' ranks by like count within the optional window. 'relevant' ranks keyword matches by where the term hit (text > alt > location > categories > exif) and applies only when 'keyword' is set.",
            "knownValues": [
              "popular",
              "relevant"
            ],
            "type": "string"
          }
        },
        "type": "params"
      },
      "target_collection": "app.zeens.postMeta",
      "type": "query"
    }
  },
  "id": "app.zeens.getPhotoFeed",
  "lexicon": 1
}

Validate Record

Validate a record against app.zeens.getPhotoFeed

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:pwpuqwge6g7xrjmfbw73uycw
CID
bafyreife73qv635fluf2h2l4sgvhampe5mlh7stuxann7weuo4ncexi4my
Indexed At
2026-10-22 16:31 UTC
AT-URI
at://did:plc:pwpuqwge6g7xrjmfbw73uycw/com.atproto.lexicon.schema/app.zeens.getPhotoFeed

Similar Lexicons

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

  • Aggregate distinct EXIF facet values (makes, models, lenses, apertures, focal lengths, camera/lens gear with counts) across all app.zeens.postMeta records. Powers the search UI's cascading filters and popular-gear chips…

  • Browse published zeens across users, newest first by publishedAt (the date the zeen became readable, stamped once and preserved across edits — not indexed_at, which reorders on a backfill). Drafts, page-less records a…

  • Get trending Zeens photos ranked by engagement within a time window.

  • Get Zeens photo posts carrying a hashtag, newest first or by popularity.

  • List photos with optional filters by author, album, tag, or visibility.

Lexicon Garden

@