{
  "components": {
    "schemas": {
      "ApiError": {
        "properties": {
          "error": {
            "properties": {
              "code": {
                "type": "string"
              },
              "details": {
                "type": "object"
              },
              "message": {
                "type": "string"
              },
              "request_id": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "CatalogCandidate": {
        "properties": {
          "author": {
            "type": [
              "string",
              "null"
            ]
          },
          "candidate_id": {
            "format": "uuid",
            "type": "string"
          },
          "confidence": {
            "type": "number"
          },
          "expires_at": {
            "format": "date-time",
            "type": "string"
          },
          "media_type": {
            "enum": [
              "ebook",
              "audiobook"
            ],
            "type": "string"
          },
          "narrator": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": "string"
          },
          "year": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "candidate_id",
          "expires_at",
          "media_type",
          "title",
          "confidence"
        ],
        "type": "object"
      },
      "CatalogCandidateSelectionResponse": {
        "properties": {
          "candidate_id": {
            "format": "uuid",
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/CatalogItem"
          },
          "selected": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "candidate_id",
          "selected",
          "item"
        ],
        "type": "object"
      },
      "CatalogEpisodesResponse": {
        "properties": {
          "cascacore_id": {
            "type": "string"
          },
          "episodes": {
            "items": {
              "$ref": "#/components/schemas/CatalogItem"
            },
            "type": "array"
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          },
          "season_number": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "cascacore_id",
          "episodes"
        ],
        "type": "object"
      },
      "CatalogIdentifyRequest": {
        "properties": {
          "duration_seconds": {
            "maximum": 86400,
            "minimum": 1,
            "type": "integer"
          },
          "fingerprint": {
            "maxLength": 262144,
            "minLength": 1,
            "type": "string"
          },
          "hints": {
            "type": [
              "object",
              "null"
            ]
          },
          "lookup_mode": {
            "default": "cache_then_fetch",
            "enum": [
              "cache_only",
              "cache_then_fetch"
            ],
            "type": "string"
          },
          "media_type": {
            "enum": [
              "music_track"
            ],
            "type": "string"
          },
          "source_app": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_app_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "strategy": {
            "enum": [
              "acoustic_fingerprint"
            ],
            "type": "string"
          }
        },
        "required": [
          "media_type",
          "strategy",
          "fingerprint",
          "duration_seconds"
        ],
        "type": "object"
      },
      "CatalogIdentifyResponse": {
        "properties": {
          "candidate_count": {
            "minimum": 0,
            "type": "integer"
          },
          "confidence": {
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          },
          "item": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CatalogItem"
              },
              {
                "type": "null"
              }
            ]
          },
          "match_evidence": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "matched": {
            "type": "boolean"
          }
        },
        "required": [
          "matched",
          "confidence",
          "candidate_count",
          "match_evidence"
        ],
        "type": "object"
      },
      "CatalogItem": {
        "properties": {
          "cascacore_id": {
            "type": "string"
          },
          "collections": {
            "items": {
              "type": "object"
            },
            "type": "array"
          },
          "confidence": {
            "type": "number"
          },
          "media_type": {
            "type": "string"
          },
          "popularity": {
            "type": "object"
          },
          "relationships": {
            "type": "object"
          },
          "sort_title": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "cascacore_id",
          "media_type",
          "title",
          "sort_title",
          "confidence",
          "relationships",
          "collections",
          "popularity"
        ],
        "type": "object"
      },
      "CatalogResolveRequest": {
        "properties": {
          "external_ids": {
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            },
            "default": {},
            "type": "object"
          },
          "lookup_mode": {
            "default": "cache_then_fetch",
            "enum": [
              "cache_only",
              "cache_then_fetch"
            ],
            "type": "string"
          },
          "media_type": {
            "enum": [
              "movie",
              "tv_show",
              "tv_episode",
              "music_artist",
              "music_album",
              "music_track",
              "ebook",
              "audiobook",
              "game",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "relationships": {
            "$ref": "#/components/schemas/Relationships"
          },
          "source_app": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_app_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "year": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "CatalogResolveResponse": {
        "properties": {
          "item": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CatalogItem"
              },
              {
                "type": "null"
              }
            ]
          },
          "matched": {
            "type": "boolean"
          }
        },
        "required": [
          "matched"
        ],
        "type": "object"
      },
      "CatalogSearchRequest": {
        "properties": {
          "external_ids": {
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            },
            "default": {},
            "type": "object"
          },
          "include_provider_candidates": {
            "default": false,
            "type": "boolean"
          },
          "limit": {
            "default": 20,
            "maximum": 50,
            "minimum": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "lookup_mode": {
            "default": "cache_then_fetch",
            "enum": [
              "cache_only",
              "cache_then_fetch"
            ],
            "type": "string"
          },
          "media_types": {
            "items": {
              "enum": [
                "movie",
                "tv_show",
                "tv_episode",
                "music_artist",
                "music_album",
                "music_track",
                "ebook",
                "audiobook",
                "game"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "profile_id": {
            "format": "uuid",
            "type": [
              "string",
              "null"
            ]
          },
          "query": {
            "minLength": 1,
            "type": "string"
          },
          "relationships": {
            "$ref": "#/components/schemas/Relationships"
          },
          "source_app": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_app_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "year": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "query",
          "media_types"
        ],
        "type": "object"
      },
      "CatalogSearchResponse": {
        "properties": {
          "candidates": {
            "items": {
              "$ref": "#/components/schemas/CatalogCandidate"
            },
            "type": "array"
          },
          "results": {
            "items": {
              "$ref": "#/components/schemas/CatalogItem"
            },
            "type": "array"
          }
        },
        "required": [
          "results"
        ],
        "type": "object"
      },
      "Relationships": {
        "properties": {
          "abridged": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "album": {
            "type": [
              "string",
              "null"
            ]
          },
          "album_artist": {
            "type": [
              "string",
              "null"
            ]
          },
          "artist": {
            "type": [
              "string",
              "null"
            ]
          },
          "author": {
            "type": [
              "string",
              "null"
            ]
          },
          "cast": {
            "items": {
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "content_rating": {
            "type": [
              "string",
              "null"
            ]
          },
          "developer": {
            "type": [
              "string",
              "null"
            ]
          },
          "disc_number": {
            "type": [
              "integer",
              "null"
            ]
          },
          "duration_seconds": {
            "type": [
              "integer",
              "null"
            ]
          },
          "episode_number": {
            "type": [
              "integer",
              "null"
            ]
          },
          "episode_overview": {
            "type": [
              "string",
              "null"
            ]
          },
          "episode_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "franchise": {
            "type": [
              "string",
              "null"
            ]
          },
          "genres": {
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "narrator": {
            "type": [
              "string",
              "null"
            ]
          },
          "parent_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "platforms": {
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "publisher": {
            "type": [
              "string",
              "null"
            ]
          },
          "season_count": {
            "type": [
              "integer",
              "null"
            ]
          },
          "season_episode_count": {
            "type": [
              "integer",
              "null"
            ]
          },
          "season_number": {
            "type": [
              "integer",
              "null"
            ]
          },
          "series_number": {
            "type": [
              "number",
              "null"
            ]
          },
          "series_overview": {
            "type": [
              "string",
              "null"
            ]
          },
          "series_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "track_number": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "type": "object"
      }
    },
    "securitySchemes": {
      "apiKey": {
        "in": "header",
        "name": "X-Cascacore-Api-Key",
        "type": "apiKey"
      },
      "bearerAuth": {
        "scheme": "bearer",
        "type": "http"
      },
      "installId": {
        "in": "header",
        "name": "X-Cascacore-Install-Id",
        "type": "apiKey"
      }
    }
  },
  "info": {
    "description": "Stable v1 media intelligence and prepaid credit API. Use one customer-owned installation key per app or device.",
    "title": "Cascacore API",
    "version": "1.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/v1/account/credits": {
      "get": {
        "operationId": "get__api_v1_account_credits",
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Get wallet balance",
        "tags": [
          "account"
        ],
        "x-cascacore-credits": "0"
      }
    },
    "/api/v1/account/usage": {
      "get": {
        "operationId": "get__api_v1_account_usage",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "List usage receipts",
        "tags": [
          "account"
        ],
        "x-cascacore-credits": "0"
      }
    },
    "/api/v1/artwork/{sha256}/download": {
      "get": {
        "operationId": "get__api_v1_artwork__sha256__download",
        "parameters": [
          {
            "in": "path",
            "name": "sha256",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Download paid-account artwork for local caching",
        "tags": [
          "artwork"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/availability/observations": {
      "post": {
        "operationId": "post__api_v1_availability_observations",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Submit regional availability metadata",
        "tags": [
          "availability"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/billing/rates": {
      "get": {
        "operationId": "get__api_v1_billing_rates",
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "List the active credit tariff",
        "tags": [
          "billing"
        ],
        "x-cascacore-credits": "0"
      }
    },
    "/api/v1/catalog/candidates/{candidate_id}/select": {
      "post": {
        "operationId": "post__api_v1_catalog_candidates__candidate_id__select",
        "parameters": [
          {
            "in": "path",
            "name": "candidate_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Cascacore-Request-Id",
            "required": true,
            "schema": {
              "maxLength": 128,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogCandidateSelectionResponse"
                }
              }
            },
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "409": {
            "description": "Candidate was already selected"
          },
          "410": {
            "description": "Candidate selection handle expired"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Select an ambiguous ebook or audiobook candidate",
        "tags": [
          "catalog"
        ],
        "x-cascacore-credits": "1",
        "x-cascacore-privacy": "candidate_id is opaque, installation-scoped, short-lived, and contains no provider identity.",
        "x-cascacore-rate-limit": "120/minute per installation"
      }
    },
    "/api/v1/catalog/collections/{cascacore_collection_id}": {
      "get": {
        "operationId": "get__api_v1_catalog_collections__cascacore_collection_id_",
        "parameters": [
          {
            "in": "path",
            "name": "cascacore_collection_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Get one media collection",
        "tags": [
          "catalog"
        ],
        "x-cascacore-credits": "1 / 25"
      }
    },
    "/api/v1/catalog/identify": {
      "post": {
        "operationId": "post__api_v1_catalog_identify",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CatalogIdentifyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogIdentifyResponse"
                }
              }
            },
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Identify a music track from a local acoustic fingerprint",
        "tags": [
          "catalog"
        ],
        "x-cascacore-credits": "2 / 25"
      }
    },
    "/api/v1/catalog/items/{cascacore_id}": {
      "get": {
        "operationId": "get__api_v1_catalog_items__cascacore_id_",
        "parameters": [
          {
            "in": "path",
            "name": "cascacore_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Get one catalog item",
        "tags": [
          "catalog"
        ],
        "x-cascacore-credits": "1 / 25"
      }
    },
    "/api/v1/catalog/items/{cascacore_id}/episodes": {
      "get": {
        "operationId": "get__api_v1_catalog_items__cascacore_id__episodes",
        "parameters": [
          {
            "in": "path",
            "name": "cascacore_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "season_number",
            "required": false,
            "schema": {
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "lookup_mode",
            "required": false,
            "schema": {
              "default": "cache_then_fetch",
              "enum": [
                "cache_only",
                "cache_then_fetch"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogEpisodesResponse"
                }
              }
            },
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          },
          "502": {
            "description": "Episode enrichment providers unavailable; not charged"
          }
        },
        "summary": "List a show's canonical episodes",
        "tags": [
          "catalog"
        ],
        "x-cascacore-credits": "1 / 25",
        "x-cascacore-privacy": "Returns Cascacore identities and customer-safe metadata only; provider identities, IDs, payloads, and source URLs are omitted.",
        "x-cascacore-rate-limit": "300/minute per installation"
      }
    },
    "/api/v1/catalog/items/{cascacore_id}/social-summary": {
      "get": {
        "operationId": "get__api_v1_catalog_items__cascacore_id__social_summary",
        "parameters": [
          {
            "in": "path",
            "name": "cascacore_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Get social context for a catalog item",
        "tags": [
          "catalog"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/catalog/resolve": {
      "post": {
        "operationId": "post__api_v1_catalog_resolve",
        "parameters": [
          {
            "description": "Bypass completed-row suppression and active negative misses. Requires lookup_mode=cache_then_fetch and uses the deep_enrichment tariff.",
            "in": "query",
            "name": "refresh",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CatalogResolveRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogResolveResponse"
                }
              }
            },
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Resolve an external media identity",
        "tags": [
          "catalog"
        ],
        "x-cascacore-credits": "2 / 25 / 50 forced refresh"
      }
    },
    "/api/v1/catalog/search": {
      "post": {
        "operationId": "post__api_v1_catalog_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CatalogSearchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogSearchResponse"
                }
              }
            },
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Search the normalized media catalog",
        "tags": [
          "catalog"
        ],
        "x-cascacore-credits": "2 / 25"
      }
    },
    "/api/v1/catalog/upsert": {
      "post": {
        "operationId": "post__api_v1_catalog_upsert",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Submit catalog metadata",
        "tags": [
          "catalog"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/discovery/lists": {
      "get": {
        "operationId": "get__api_v1_discovery_lists",
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "List discovery feeds",
        "tags": [
          "discovery"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/discovery/lists/{list_key}": {
      "get": {
        "operationId": "get__api_v1_discovery_lists__list_key_",
        "parameters": [
          {
            "in": "path",
            "name": "list_key",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Get a discovery feed",
        "tags": [
          "discovery"
        ],
        "x-cascacore-credits": "1 / 25"
      }
    },
    "/api/v1/events": {
      "post": {
        "operationId": "post__api_v1_events",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Record a playback or library event",
        "tags": [
          "events"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/media/markers": {
      "post": {
        "operationId": "post__api_v1_media_markers",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Submit or correct media markers",
        "tags": [
          "media"
        ],
        "x-cascacore-credits": "10"
      }
    },
    "/api/v1/media/markers/lookup": {
      "post": {
        "operationId": "post__api_v1_media_markers_lookup",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Look up start and end-credit markers",
        "tags": [
          "media"
        ],
        "x-cascacore-credits": "1 / 25"
      }
    },
    "/api/v1/profiles": {
      "post": {
        "operationId": "post__api_v1_profiles",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Create a viewer profile",
        "tags": [
          "profiles"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/profiles/{profile_id}": {
      "get": {
        "operationId": "get__api_v1_profiles__profile_id_",
        "parameters": [
          {
            "in": "path",
            "name": "profile_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Get a viewer profile",
        "tags": [
          "profiles"
        ],
        "x-cascacore-credits": "1"
      },
      "patch": {
        "operationId": "patch__api_v1_profiles__profile_id_",
        "parameters": [
          {
            "in": "path",
            "name": "profile_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Update profile identity",
        "tags": [
          "profiles"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/profiles/{profile_id}/privacy": {
      "patch": {
        "operationId": "patch__api_v1_profiles__profile_id__privacy",
        "parameters": [
          {
            "in": "path",
            "name": "profile_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Update profile privacy",
        "tags": [
          "profiles"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/profiles/{profile_id}/report": {
      "get": {
        "operationId": "get__api_v1_profiles__profile_id__report",
        "parameters": [
          {
            "in": "path",
            "name": "profile_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Get a profile media report",
        "tags": [
          "profiles"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/social/blocks": {
      "post": {
        "operationId": "post__api_v1_social_blocks",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Block a profile",
        "tags": [
          "social"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/social/friend-requests": {
      "get": {
        "operationId": "get__api_v1_social_friend_requests",
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "List pending friend requests",
        "tags": [
          "social"
        ],
        "x-cascacore-credits": "1"
      },
      "post": {
        "operationId": "post__api_v1_social_friend_requests",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Create a friend request",
        "tags": [
          "social"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/social/friend-requests/{request_id}/accept": {
      "post": {
        "operationId": "post__api_v1_social_friend_requests__request_id__accept",
        "parameters": [
          {
            "in": "path",
            "name": "request_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Accept a friend request",
        "tags": [
          "social"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/social/friend-requests/{request_id}/cancel": {
      "post": {
        "operationId": "post__api_v1_social_friend_requests__request_id__cancel",
        "parameters": [
          {
            "in": "path",
            "name": "request_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Cancel an outgoing friend request",
        "tags": [
          "social"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/social/friend-requests/{request_id}/decline": {
      "post": {
        "operationId": "post__api_v1_social_friend_requests__request_id__decline",
        "parameters": [
          {
            "in": "path",
            "name": "request_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Decline a friend request",
        "tags": [
          "social"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/social/friends": {
      "get": {
        "operationId": "get__api_v1_social_friends",
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "List friends",
        "tags": [
          "social"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/api/v1/social/reports": {
      "post": {
        "operationId": "post__api_v1_social_reports",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "summary": "Report a profile",
        "tags": [
          "social"
        ],
        "x-cascacore-credits": "1"
      }
    },
    "/oauth/device/authorize": {
      "post": {
        "operationId": "post__oauth_device_authorize",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "security": [],
        "summary": "Start a customer-owned application connection",
        "tags": [
          "authorize"
        ],
        "x-cascacore-credits": "0"
      }
    },
    "/oauth/device/token": {
      "post": {
        "operationId": "post__oauth_device_token",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or invalid installation credentials"
          },
          "402": {
            "description": "Insufficient credits"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal service failure; not charged"
          }
        },
        "security": [],
        "summary": "Poll for the approved one-time bearer credential",
        "tags": [
          "token"
        ],
        "x-cascacore-credits": "0"
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    },
    {
      "apiKey": [],
      "installId": []
    }
  ],
  "servers": [
    {
      "url": "https://core.casca.me"
    }
  ]
}