{"openapi":"3.1.1","info":{"title":"Open Media Essentials API","version":"1.0.0","description":"HTTP APIs for Open Media Essentials — episode playback (segments, subtitles, ingest) and TMDB-compatible reference catalog documents.\n\n## Playback\nEpisode manifest and ingest API — segment cues, subtitle URLs, MKV upload, open segment dumps, and signed-in contributor API keys.\n\n## Catalog\nRead-only catalog API with TMDB-compatible URL paths.\n\nEach endpoint returns a **single JSON document** that already includes detail data and every configured append response. You do not need to chain TMDB calls for credits, images, videos, seasons, or episodes.\n\n### Movies — `GET /3/movie/{movie_id}`\n\nReturns the movie detail payload plus: `alternative_titles`, `credits`, `external_ids`, `images`, `keywords`, `lists`, `recommendations`, `release_dates`, `reviews`, `similar`, `translations`, `videos`, `watch/providers`. When `belongs_to_collection` is set, `collection_details` is included.\n\n### TV — `GET /3/tv/{series_id}`\n\nReturns the series detail payload plus hydrated `seasons[]`, optional flattened `episodes[]`, and: `aggregate_credits`, `content_ratings`, `credits`, `episode_groups`, `external_ids`, `images`, `keywords`, `lists`, `recommendations`, `reviews`, `screened_theatrically`, `similar`, `translations`, `videos`, `watch/providers`.\n\n### Errors\n\nMissing catalog entries return HTTP 404 with TMDB-style `{ success: false, status_code, status_message }`.\n\n### Compatibility\n\nPaths mirror [TMDB API v3](https://developer.themoviedb.org/docs/getting-started) so existing clients can point at this host. Response shapes follow TMDB conventions but may include extra fields from ingestion."},"servers":[{"url":"http://metadata.kilr.dk"}],"externalDocs":{"description":"TMDB API reference","url":"https://developer.themoviedb.org/reference/getting-started"},"tags":[{"name":"Movies","description":"Complete movie documents (detail + all movie appends)."},{"name":"TV","description":"Complete TV documents (detail, seasons, episodes, and TV appends)."}],"paths":{"/health":{"get":{"operationId":"health","summary":"Health check","tags":["System"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true}},"required":["ok"]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}},"required":["defined","code","status","message","data"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/manifest":{"get":{"operationId":"manifest","summary":"Episode manifest","description":"Returns intro/credits segment cues and subtitle URLs for an episode. Match by TMDB ID, season, episode, and played duration. Merges local ingest, scrape, submit, and third-party providers (SkipDB, IntroDB, TheIntroDB, SkipMe.db) at runtime with confidence-aware per-type selection. For best subtitle alignment, use POST /manifest with an English reference track.","tags":["Public"],"parameters":[{"name":"tmdb","in":"query","required":true,"schema":{"type":"integer","minimum":0,"description":"TMDB series or movie ID"},"allowEmptyValue":true,"allowReserved":true},{"name":"season","in":"query","required":true,"schema":{"type":"integer","minimum":0,"description":"Season number (use 0 for movies)"},"allowEmptyValue":true,"allowReserved":true},{"name":"episode","in":"query","required":true,"schema":{"type":"integer","minimum":0,"description":"Episode number (use 0 for movies)"},"allowEmptyValue":true,"allowReserved":true},{"name":"duration_ms","in":"query","required":true,"schema":{"type":"integer","minimum":0,"description":"Played media duration in milliseconds — picks the closest matching ingest"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"segments":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["intro","credits","recap","preview","commercial"],"type":"string","description":"Segment kind"},"start_seconds":{"type":"number","description":"Segment start time in seconds"},"end_seconds":{"type":"number","description":"Segment end time in seconds"},"source":{"enum":["ingest","scrape","submit","skipdb","introdb","theintrodb","skipme"],"type":"string","description":"Which data source supplied this segment"},"confidence":{"type":"number","minimum":0,"maximum":1,"description":"Provider confidence 0–1 when available"},"match":{"enum":["exact","shifted","agnostic","out-of-range"],"type":"string","description":"How well the segment matches the requested stream duration"},"adjusted":{"type":"boolean","description":"True when timestamps were shifted for stream drift"},"offset_ms":{"type":"number","description":"Milliseconds shifted when adjusted"}},"required":["type","start_seconds","end_seconds"]},"description":"Intro, credits, recap, and other exposed segment cues"},"subtitles":{"type":"array","items":{"type":"object","properties":{"language":{"type":"string","description":"ISO 639-1 language code (e.g. en, da, es)"},"url":{"type":"string","format":"uri","description":"Public VTT or SRT subtitle URL"},"offset_ms":{"type":"integer","description":"Milliseconds to add to cue timestamps when subtitle_sync_offset_ms was applied"}},"required":["language","url"]},"description":"Subtitle tracks for the episode, one entry per language"},"intro_length_estimate_ms":{"type":"integer","minimum":0,"description":"Season-level estimated intro length when no intro segment exists (from SkipDB)"},"subtitle_sync_offset_ms":{"type":"integer","description":"Milliseconds added to segment timestamps and subtitle cues when reference_subtitle sync succeeded"},"subtitle_sync_confidence":{"type":"number","minimum":0,"maximum":1,"description":"Confidence of the reference subtitle alignment (0–1)"}},"required":["segments","subtitles"],"examples":[{"segments":[{"type":"intro","start_seconds":0,"end_seconds":45.2},{"type":"credits","start_seconds":1320.5,"end_seconds":1380}],"subtitles":[{"language":"en","url":"http://localhost:9000/media/sharex/abc123/White.Collar.S01E01.en.vtt"},{"language":"da","url":"http://localhost:9000/media/sharex/abc123/White.Collar.S01E01.da.vtt"}]}]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}},"required":["defined","code","status","message","data"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{"type":"object","properties":{"error":{"const":"Not found"}},"required":["error"]}},"required":["defined","code","status","message","data"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}},"post":{"operationId":"manifestPost","summary":"Episode manifest with subtitle sync","description":"Same as GET /manifest, with optional multipart field reference_subtitle — an English SRT or VTT from the player. Highly recommended: we match cue text against stored ingest subtitles to compute subtitle_sync_offset_ms, then shift segment timestamps and subtitle offsets to your stream.","tags":["Public"],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"tmdb":{"type":"integer","minimum":0,"description":"TMDB series or movie ID"},"season":{"type":"integer","minimum":0,"description":"Season number (use 0 for movies)"},"episode":{"type":"integer","minimum":0,"description":"Episode number (use 0 for movies)"},"duration_ms":{"type":"integer","minimum":0,"description":"Played media duration in milliseconds — picks the closest matching ingest"},"reference_subtitle":{"type":"string","contentMediaType":"*/*","description":"English SRT or VTT from the player — used to align segment and subtitle timestamps (highly recommended)"}},"required":["tmdb","season","episode","duration_ms"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"segments":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["intro","credits","recap","preview","commercial"],"type":"string","description":"Segment kind"},"start_seconds":{"type":"number","description":"Segment start time in seconds"},"end_seconds":{"type":"number","description":"Segment end time in seconds"},"source":{"enum":["ingest","scrape","submit","skipdb","introdb","theintrodb","skipme"],"type":"string","description":"Which data source supplied this segment"},"confidence":{"type":"number","minimum":0,"maximum":1,"description":"Provider confidence 0–1 when available"},"match":{"enum":["exact","shifted","agnostic","out-of-range"],"type":"string","description":"How well the segment matches the requested stream duration"},"adjusted":{"type":"boolean","description":"True when timestamps were shifted for stream drift"},"offset_ms":{"type":"number","description":"Milliseconds shifted when adjusted"}},"required":["type","start_seconds","end_seconds"]},"description":"Intro, credits, recap, and other exposed segment cues"},"subtitles":{"type":"array","items":{"type":"object","properties":{"language":{"type":"string","description":"ISO 639-1 language code (e.g. en, da, es)"},"url":{"type":"string","format":"uri","description":"Public VTT or SRT subtitle URL"},"offset_ms":{"type":"integer","description":"Milliseconds to add to cue timestamps when subtitle_sync_offset_ms was applied"}},"required":["language","url"]},"description":"Subtitle tracks for the episode, one entry per language"},"intro_length_estimate_ms":{"type":"integer","minimum":0,"description":"Season-level estimated intro length when no intro segment exists (from SkipDB)"},"subtitle_sync_offset_ms":{"type":"integer","description":"Milliseconds added to segment timestamps and subtitle cues when reference_subtitle sync succeeded"},"subtitle_sync_confidence":{"type":"number","minimum":0,"maximum":1,"description":"Confidence of the reference subtitle alignment (0–1)"}},"required":["segments","subtitles"],"examples":[{"segments":[{"type":"intro","start_seconds":0,"end_seconds":45.2},{"type":"credits","start_seconds":1320.5,"end_seconds":1380}],"subtitles":[{"language":"en","url":"http://localhost:9000/media/sharex/abc123/White.Collar.S01E01.en.vtt"},{"language":"da","url":"http://localhost:9000/media/sharex/abc123/White.Collar.S01E01.da.vtt"}]}]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}},"required":["defined","code","status","message","data"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{"type":"object","properties":{"error":{"const":"Not found"}},"required":["error"]}},"required":["defined","code","status","message","data"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/ingest":{"post":{"operationId":"ingest","summary":"Ingest stripped MKV","description":"Upload a stripped subtitle-only TV episode MKV as multipart/form-data. Requires a user API key or INGEST_API_KEY. Optional X-Batch-Id and X-Machine-Id headers tag the submission run and host. Filename must include season, episode, and provider (e.g. White.Collar.S01E01.DSNP.mkv). TMDB matching is automatic and happens after ingest. Full MKV processing happens client-side via the ome CLI before upload.","tags":["Ingest"],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","contentMediaType":"*/*","description":"Stripped subtitle-only MKV (video/audio removed client-side before upload)"},"uploader":{"type":"string","description":"R2 uploader prefix (defaults to R2_UPLOADER_DEFAULT)"},"batch_id":{"type":"string","maxLength":128,"description":"Optional batch identifier for a multi-title ingest run"},"machine_id":{"type":"string","maxLength":128,"description":"Optional machine identifier for the submitting host"}},"required":["file"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"content_key":{"type":"string","description":"Canonical slug/season-episode/provider key"},"skipped":{"type":"boolean","description":"True when an identical file was already ingested"},"queued":{"type":"boolean","description":"True when a new ffprobe job was queued"},"queue_id":{"type":"string","format":"uuid","description":"Probe queue job ID"},"public_url":{"type":"string","format":"uri","description":"Public MKV URL after upload"}},"required":["content_key","skipped","queued"],"examples":[{"content_key":"white-collar/s01e01/dsnp","skipped":false,"queued":true,"queue_id":"550e8400-e29b-41d4-a716-446655440000","public_url":"http://localhost:9000/media/sharex/abc123/White.Collar.S01E01.DSNP.mkv"}]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}},"required":["defined","code","status","message","data"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}},"security":[{"apiKey":[]}]}},"/scrape":{"post":{"operationId":"scrape","summary":"Store scraped segment data","description":"Accepts normalized segment markers captured by the browser extension from a streaming provider's website. Requires a signed-in user's API key or INGEST_API_KEY. Optional batch_id and machine_id tag the submission run and host. Background TMDB linking is optional and off by default.","tags":["Scrape"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","minLength":2,"maxLength":8,"description":"Short provider code (e.g. 'nf', 'amzn', 'atvp'). Lowercased on storage."},"source_url":{"type":"string","format":"uri","description":"Page URL the scrape was captured from"},"raw":{"description":"Raw provider response for debugging/audit"},"batch_id":{"type":"string","maxLength":128,"description":"Optional batch identifier for a multi-title submission run"},"machine_id":{"type":"string","maxLength":128,"description":"Optional machine identifier for the submitting host"},"episodes":{"type":"array","items":{"type":"object","properties":{"show_title":{"type":"string","minLength":1,"description":"Title of the show"},"show_slug":{"type":"string","minLength":1,"description":"Lowercased, hyphenated show title used in content_key"},"season":{"type":"integer","minimum":0,"description":"Season number"},"episode":{"type":"integer","minimum":0,"description":"Episode number"},"episode_id":{"type":"string","minLength":1,"description":"Provider's internal episode ID"},"episode_title":{"type":"string","minLength":1,"description":"Episode title"},"synopsis":{"type":"string","description":"Episode synopsis / description"},"runtime_seconds":{"type":"integer","minimum":0,"description":"Episode runtime in seconds"},"artwork_url":{"type":"string","format":"uri","description":"Episode thumbnail URL"},"segments":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["intro","credits","recap","preview","commercial"],"type":"string","description":"Segment kind (intro, credits, recap, preview)"},"start_seconds":{"type":"number","minimum":0,"description":"Start of the segment, in seconds"},"end_seconds":{"type":"number","minimum":0,"description":"End of the segment, in seconds"}},"required":["type","start_seconds","end_seconds"]},"description":"Segment markers scraped for this episode (intro, credits, recap, preview)"}},"required":["show_title","show_slug","season","episode","episode_id","episode_title","runtime_seconds","segments"]},"minItems":1,"description":"Episodes captured in this scrape"}},"required":["provider","source_url","episodes"],"examples":[{"provider":"nf","source_url":"https://www.netflix.com/title/70242311","episodes":[{"show_title":"Orange Is the New Black","show_slug":"orange-is-the-new-black","season":1,"episode":1,"episode_id":"70259443","episode_title":"I Wasn't Ready","runtime_seconds":3152,"segments":[{"type":"intro","start_seconds":0,"end_seconds":84.125}]}]}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider code, lowercased"},"stored":{"type":"integer","description":"Number of episode captures stored in this call"},"content_keys":{"type":"array","items":{"type":"string"},"description":"Content keys of the episodes that were just stored"}},"required":["provider","stored","content_keys"],"examples":[{"provider":"nf","stored":1,"content_keys":["orange-is-the-new-black/s01e01/nf"]}]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}},"required":["defined","code","status","message","data"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}},"security":[{"apiKey":[]}]}},"/segments/submit":{"post":{"operationId":"submitSegments","summary":"Submit segment timestamps","description":"Store segment markers for a TMDB episode without uploading an MKV. Requires a user API key or INGEST_API_KEY. Data is merged into GET /manifest with submit priority above third-party providers.","tags":["Submit"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tmdb_id":{"type":"integer","minimum":0,"description":"TMDB series ID"},"season":{"type":"integer","minimum":0,"description":"Season number"},"episode":{"type":"integer","minimum":0,"description":"Episode number"},"title":{"type":"string","description":"Optional show title for display"},"duration_ms":{"type":"integer","minimum":0,"description":"Stream duration in milliseconds"},"batch_id":{"type":"string","maxLength":128},"machine_id":{"type":"string","maxLength":128},"segments":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["intro","credits","recap","preview","commercial"],"type":"string","description":"Segment kind"},"start_ms":{"type":"integer","minimum":0,"description":"Segment start in milliseconds"},"end_ms":{"type":"integer","minimum":0,"description":"Segment end in milliseconds"}},"required":["type","start_ms","end_ms"]},"minItems":1,"description":"Segment markers to store for this episode"}},"required":["tmdb_id","season","episode","segments"],"examples":[{"tmdb_id":1396,"season":1,"episode":1,"duration_ms":3600000,"segments":[{"type":"intro","start_ms":229500,"end_ms":246500},{"type":"credits","start_ms":3434000,"end_ms":3500000}]}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"content_key":{"type":"string","description":"Canonical content key for the submission"},"stored":{"type":"integer","description":"Number of segment markers stored"}},"required":["content_key","stored"],"examples":[{"content_key":"tmdb-1396/s01e01/submit","stored":2}]}}}},"400":{"description":"400","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Bad Request"},"data":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}},"required":["defined","code","status","message","data"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"defined":{"const":true},"code":{"const":"NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Not Found"},"data":{}},"required":["defined","code","status","message"]},{"type":"object","properties":{"defined":{"const":false},"code":{"type":"string"},"status":{"type":"number"},"message":{"type":"string"},"data":{}},"required":["defined","code","status","message"]}]}}}}}}},"/dump":{"get":{"operationId":"dump","summary":"Open segment data dump","description":"Public JSON export of all segment timestamps (ingest + scrape). Subtitles are not included. Licensed ODbL 1.0 + Service Provider Reciprocity.","tags":["Public"],"responses":{"200":{"description":"Segment dump JSON"}}}},"/api/keys":{"get":{"operationId":"listApiKeys","summary":"List API keys","description":"Lists active API keys for the signed-in user. Requires a session cookie.","tags":["Auth"],"responses":{"200":{"description":"API key list"}}},"post":{"operationId":"createApiKey","summary":"Create API key","description":"Creates a new user API key. The full secret is returned once. Requires a session cookie.","tags":["Auth"],"responses":{"201":{"description":"Created API key"}}},"delete":{"operationId":"revokeApiKey","summary":"Revoke API key","description":"Revokes a user API key by id. Requires a session cookie.","tags":["Auth"],"responses":{"200":{"description":"Revoked"}}}},"/3/movie/{movie_id}":{"get":{"operationId":"getMovie","summary":"Get movie by TMDB ID","description":"Returns one JSON object with the movie detail and every configured movie append (credits, images, videos, keywords, recommendations, and more). When the movie belongs to a collection, `collection_details` is included. Drop-in replacement for chaining multiple TMDB `/3/movie/{id}` requests.","tags":["Movies"],"parameters":[{"name":"movie_id","in":"path","required":true,"schema":{"type":"integer","minimum":0},"description":"TMDB movie ID (positive integer).","example":550}],"responses":{"200":{"description":"Complete movie document from the local catalog.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MovieDocument"},"example":{"id":550,"title":"Fight Club","overview":"A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking new form of therapy.","release_date":"1999-10-15","runtime":139,"genres":[{"id":18,"name":"Drama"}],"credits":{"cast":[{"id":819,"name":"Edward Norton","character":"The Narrator","order":0}],"crew":[{"id":7467,"name":"David Fincher","job":"Director","department":"Directing"}]},"images":{"backdrops":[],"posters":[]},"videos":{"results":[]},"keywords":{"keywords":[{"id":818,"name":"based on novel or book"}]},"collection_details":null}}}},"404":{"description":"No catalog entry exists for the requested movie ID.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TmdbNotFound"},"example":{"success":false,"status_code":34,"status_message":"The resource you requested could not be found."}}}}}}},"/3/tv/{series_id}":{"get":{"operationId":"getTv","summary":"Get TV series by TMDB ID","description":"Returns one JSON object with the series detail, fully hydrated `seasons[]`, optional flattened `episodes[]`, and every configured TV append (aggregate credits, content ratings, images, videos, and more). Drop-in replacement for chaining TMDB series, season, and episode requests.","tags":["TV"],"parameters":[{"name":"series_id","in":"path","required":true,"schema":{"type":"integer","minimum":0},"description":"TMDB TV series ID (positive integer).","example":87108}],"responses":{"200":{"description":"Complete TV document from the local catalog.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeriesDocument"},"example":{"id":87108,"name":"Chernobyl","overview":"The true story of one of the worst man-made catastrophes in history — the 1986 nuclear disaster at Chernobyl.","first_air_date":"2019-05-06","seasons":[{"id":116058,"season_number":1,"name":"Miniseries","episode_count":5,"episodes":[{"id":1621894,"episode_number":1,"name":"1:23:45","runtime":60}]}],"episodes":[{"id":1621894,"episode_number":1,"season_number":1,"name":"1:23:45","runtime":60}],"aggregate_credits":{"cast":[],"crew":[]},"content_ratings":{"results":[{"iso_3166_1":"US","rating":"TV-MA"}]}}}}},"404":{"description":"No catalog entry exists for the requested TV ID.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TmdbNotFound"},"example":{"success":false,"status_code":34,"status_message":"The resource you requested could not be found."}}}}}}},"/v1/movie/{movie_id}":{"get":{"operationId":"getMergedMovie","summary":"Get merged movie by TMDB ID","description":"Normalized movie document merging TMDB catalog data with optional IMDB extras. Cast/crew reference people by `person_tmdb_id` (join `/v1/person/{id}`).","tags":["Merged"],"parameters":[{"name":"movie_id","in":"path","required":true,"schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Merged movie document.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"original_language":{"type":"string"},"tmdb_genre_ids":{"type":"array","items":{"type":"number"}},"tmdb_keyword_ids":{"type":"array","items":{"type":"number"}},"tmdb_similar_to_tmdb_ids":{"type":"array","items":{"type":"number"}},"tmdb_recommended_tmdb_ids":{"type":"array","items":{"type":"number"}},"tmdb_company_ids":{"type":"array","items":{"type":"number"}},"cast_and_crew":{"type":"array","items":{"type":"object","properties":{"person_tmdb_id":{"type":"number"},"credit_tmdb_id":{"type":"string"},"type":{"enum":["Cast","Crew","GuestStar"],"type":"string"},"cast":{"type":"object","properties":{"character":{"type":"string"},"order":{"type":"number"}},"required":["character","order"]},"crew":{"type":"object","properties":{"job":{"type":"string"},"department":{"type":"string"}},"required":["job"]}},"required":["person_tmdb_id","credit_tmdb_id","type"]}},"air_date_unix_ms":{"type":"number"},"original_title":{"type":"string"},"title":{"type":"string"},"overview":{"type":"string"},"alternative_titles":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"country":{"type":"string"}},"required":["title","country"]}},"production_countries":{"type":"array","items":{"type":"string"}},"videos":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"key":{"type":"string"},"site":{"type":"string"},"type":{"type":"string"},"language":{"type":"string"},"url":{"type":"string"}},"required":["name"]}},"ids":{"type":"object","properties":{"tmdb_id":{"type":"number"},"imdb_id":{"type":"string"}},"required":["tmdb_id"]},"translations":{"type":"array","items":{"type":"object","properties":{"language":{"type":"string"},"title":{"type":"string"},"overview":{"type":"string"}},"required":["language","title"]}},"images":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"type":{"enum":["Poster","Backdrop","Profile","Still","Logo"],"type":"string"},"vote_count":{"type":"number"},"vote_average":{"type":"number"},"language":{"type":"string"}},"required":["path","type"]}},"average_runtime":{"type":"number"},"imdb_data":{"type":"object","properties":{"trivia":{"type":"array","items":{"type":"object","properties":{"users_interested":{"type":"number"},"users_voted":{"type":"number"},"text":{"type":"string"},"category":{"type":"string"},"id":{"type":"string"},"is_spoiler":{"type":"boolean"}},"required":["users_interested","users_voted","text","id","is_spoiler"]}},"technical_specifications":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["aspectRatio","soundMix","coloration","camera","filmLength","laboratory","negativeFormat","printedFormat","process"],"type":"string"},"value":{"type":"string"},"qualifiers_in_markdown_list":{"type":"array","items":{"type":"string"}}},"required":["type","value","qualifiers_in_markdown_list"]}},"quotes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"is_spoiler":{"type":"boolean"},"lines":{"type":"array","items":{"type":"object","properties":{"characters":{"type":"array","items":{"type":"object","properties":{"character":{"type":"string"},"imdb_id":{"type":"string"},"tmdb_id":{"type":"number"}},"required":["character"]}},"text":{"type":"string"}},"required":["characters","text"]}},"users_interested":{"type":"number"},"users_voted":{"type":"number"}},"required":["id","is_spoiler","lines","users_interested","users_voted"]}},"goofs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"is_spoiler":{"type":"boolean"},"text":{"type":"string"},"users_interested":{"type":"number"},"users_voted":{"type":"number"}},"required":["id","is_spoiler","text","users_interested","users_voted"]}},"filming_locations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filming_location":{"type":"string"},"attributes":{"type":"array","items":{"type":"string"}},"users_interested":{"type":"number"},"users_voted":{"type":"number"}},"required":["id","filming_location","attributes","users_interested","users_voted"]}},"awards":{"type":"array","items":{"type":"object","properties":{"award_name":{"type":"string"},"event":{"type":"object","properties":{"name":{"type":"string"},"imdb_id":{"type":"string"},"year":{"type":"number"}},"required":["name","imdb_id","year"]},"nomination":{"type":"object","properties":{"category":{"type":"string"},"is_winner":{"type":"boolean"},"winning_rank":{"type":"number"},"notes":{"type":"string"}},"required":["is_winner"]},"people":{"type":"array","items":{"type":"object","properties":{"imdb_id":{"type":"string"},"tmdb_id":{"type":"number"},"note":{"type":"string"}}}}},"required":["award_name","event","nomination","people"]}},"parent_guide_compact":{},"sha256":{"type":"string"}},"required":["trivia","technical_specifications","quotes","goofs","filming_locations","awards","sha256"]},"budget":{"type":"number"},"revenue":{"type":"number"},"collection_tmdb_id":{"type":"number"},"status":{"enum":["Rumored","Planned","InProduction","PostProduction","Released","Canceled"],"type":"string"},"non_theatrical_air_date_unix_ms":{"type":"number"}},"required":["id","original_language","tmdb_genre_ids","tmdb_keyword_ids","tmdb_similar_to_tmdb_ids","tmdb_recommended_tmdb_ids","tmdb_company_ids","cast_and_crew","original_title","alternative_titles","production_countries","videos","ids","translations","images","budget","revenue","status"]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"status_code":{"type":"number"},"status_message":{"type":"string"}},"required":["success","status_code","status_message"]}}}}}}},"/v1/tv/{series_id}":{"get":{"operationId":"getMergedTv","summary":"Get merged TV series by TMDB ID","description":"Normalized TV document with seasons/episodes. Episode credits omit people already listed at show level; join people via `person_tmdb_id`.","tags":["Merged"],"parameters":[{"name":"series_id","in":"path","required":true,"schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Merged TV document.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"original_language":{"type":"string"},"tmdb_genre_ids":{"type":"array","items":{"type":"number"}},"tmdb_keyword_ids":{"type":"array","items":{"type":"number"}},"tmdb_similar_to_tmdb_ids":{"type":"array","items":{"type":"number"}},"tmdb_recommended_tmdb_ids":{"type":"array","items":{"type":"number"}},"tmdb_company_ids":{"type":"array","items":{"type":"number"}},"cast_and_crew":{"type":"array","items":{"type":"object","properties":{"person_tmdb_id":{"type":"number"},"credit_tmdb_id":{"type":"string"},"type":{"enum":["Cast","Crew","GuestStar"],"type":"string"},"cast":{"type":"object","properties":{"character":{"type":"string"},"order":{"type":"number"}},"required":["character","order"]},"crew":{"type":"object","properties":{"job":{"type":"string"},"department":{"type":"string"}},"required":["job"]}},"required":["person_tmdb_id","credit_tmdb_id","type"]}},"air_date_unix_ms":{"type":"number"},"original_title":{"type":"string"},"title":{"type":"string"},"overview":{"type":"string"},"alternative_titles":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"country":{"type":"string"}},"required":["title","country"]}},"production_countries":{"type":"array","items":{"type":"string"}},"videos":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"key":{"type":"string"},"site":{"type":"string"},"type":{"type":"string"},"language":{"type":"string"},"url":{"type":"string"}},"required":["name"]}},"ids":{"type":"object","properties":{"tmdb_id":{"type":"number"},"imdb_id":{"type":"string"}},"required":["tmdb_id"]},"translations":{"type":"array","items":{"type":"object","properties":{"language":{"type":"string"},"title":{"type":"string"},"overview":{"type":"string"}},"required":["language","title"]}},"images":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"type":{"enum":["Poster","Backdrop","Profile","Still","Logo"],"type":"string"},"vote_count":{"type":"number"},"vote_average":{"type":"number"},"language":{"type":"string"}},"required":["path","type"]}},"average_runtime":{"type":"number"},"imdb_data":{"type":"object","properties":{"trivia":{"type":"array","items":{"type":"object","properties":{"users_interested":{"type":"number"},"users_voted":{"type":"number"},"text":{"type":"string"},"category":{"type":"string"},"id":{"type":"string"},"is_spoiler":{"type":"boolean"}},"required":["users_interested","users_voted","text","id","is_spoiler"]}},"technical_specifications":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["aspectRatio","soundMix","coloration","camera","filmLength","laboratory","negativeFormat","printedFormat","process"],"type":"string"},"value":{"type":"string"},"qualifiers_in_markdown_list":{"type":"array","items":{"type":"string"}}},"required":["type","value","qualifiers_in_markdown_list"]}},"quotes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"is_spoiler":{"type":"boolean"},"lines":{"type":"array","items":{"type":"object","properties":{"characters":{"type":"array","items":{"type":"object","properties":{"character":{"type":"string"},"imdb_id":{"type":"string"},"tmdb_id":{"type":"number"}},"required":["character"]}},"text":{"type":"string"}},"required":["characters","text"]}},"users_interested":{"type":"number"},"users_voted":{"type":"number"}},"required":["id","is_spoiler","lines","users_interested","users_voted"]}},"goofs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"is_spoiler":{"type":"boolean"},"text":{"type":"string"},"users_interested":{"type":"number"},"users_voted":{"type":"number"}},"required":["id","is_spoiler","text","users_interested","users_voted"]}},"filming_locations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filming_location":{"type":"string"},"attributes":{"type":"array","items":{"type":"string"}},"users_interested":{"type":"number"},"users_voted":{"type":"number"}},"required":["id","filming_location","attributes","users_interested","users_voted"]}},"awards":{"type":"array","items":{"type":"object","properties":{"award_name":{"type":"string"},"event":{"type":"object","properties":{"name":{"type":"string"},"imdb_id":{"type":"string"},"year":{"type":"number"}},"required":["name","imdb_id","year"]},"nomination":{"type":"object","properties":{"category":{"type":"string"},"is_winner":{"type":"boolean"},"winning_rank":{"type":"number"},"notes":{"type":"string"}},"required":["is_winner"]},"people":{"type":"array","items":{"type":"object","properties":{"imdb_id":{"type":"string"},"tmdb_id":{"type":"number"},"note":{"type":"string"}}}}},"required":["award_name","event","nomination","people"]}},"parent_guide_compact":{},"sha256":{"type":"string"}},"required":["trivia","technical_specifications","quotes","goofs","filming_locations","awards","sha256"]},"tmdb_network_ids":{"type":"array","items":{"type":"number"}},"seasons":{"type":"array","items":{"type":"object","properties":{"tmdb_id":{"type":"number"},"translations":{"type":"array","items":{"type":"object","properties":{"language":{"type":"string"},"title":{"type":"string"},"overview":{"type":"string"}},"required":["language","title"]}},"images":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"type":{"enum":["Poster","Backdrop","Profile","Still","Logo"],"type":"string"},"vote_count":{"type":"number"},"vote_average":{"type":"number"},"language":{"type":"string"}},"required":["path","type"]}},"season_number":{"type":"number"},"episodes":{"type":"array","items":{"type":"object","properties":{"translations":{"type":"array","items":{"type":"object","properties":{"language":{"type":"string"},"title":{"type":"string"},"overview":{"type":"string"}},"required":["language","title"]}},"season_number":{"type":"number"},"episode_number":{"type":"number"},"images":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"type":{"enum":["Poster","Backdrop","Profile","Still","Logo"],"type":"string"},"vote_count":{"type":"number"},"vote_average":{"type":"number"},"language":{"type":"string"}},"required":["path","type"]}},"air_date_unix_ms":{"type":"number"},"runtime":{"type":"number"},"videos":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"key":{"type":"string"},"site":{"type":"string"},"type":{"type":"string"},"language":{"type":"string"},"url":{"type":"string"}},"required":["name"]}},"tmdb_id":{"type":"number"},"title":{"type":"string"},"overview":{"type":"string"},"cast_and_crew":{"type":"array","items":{"type":"object","properties":{"person_tmdb_id":{"type":"number"},"credit_tmdb_id":{"type":"string"},"type":{"enum":["Cast","Crew","GuestStar"],"type":"string"},"cast":{"type":"object","properties":{"character":{"type":"string"},"order":{"type":"number"}},"required":["character","order"]},"crew":{"type":"object","properties":{"job":{"type":"string"},"department":{"type":"string"}},"required":["job"]}},"required":["person_tmdb_id","credit_tmdb_id","type"]}}},"required":["translations","season_number","episode_number","images","videos","tmdb_id","cast_and_crew"]}},"air_date_unix_ms":{"type":"number"},"videos":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"key":{"type":"string"},"site":{"type":"string"},"type":{"type":"string"},"language":{"type":"string"},"url":{"type":"string"}},"required":["name"]}},"tmdb_network_ids":{"type":"array","items":{"type":"number"}},"name":{"type":"string"},"overview":{"type":"string"}},"required":["tmdb_id","translations","images","season_number","episodes","videos","tmdb_network_ids"]}},"runtimes":{"type":"array","items":{"type":"number"}},"status":{"enum":["ReturningSeries","Planned","InProduction","Ended","Pilot","Canceled"],"type":"string"},"number_of_seasons":{"type":"number"},"number_of_episodes":{"type":"number"},"season_episode_count_map":{"type":"array","items":{"type":"array","prefixItems":[{"type":"number"},{"type":"number"}]}}},"required":["id","original_language","tmdb_genre_ids","tmdb_keyword_ids","tmdb_similar_to_tmdb_ids","tmdb_recommended_tmdb_ids","tmdb_company_ids","cast_and_crew","original_title","alternative_titles","production_countries","videos","ids","translations","images","tmdb_network_ids","seasons","runtimes","status","number_of_seasons","number_of_episodes","season_episode_count_map"]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"status_code":{"type":"number"},"status_message":{"type":"string"}},"required":["success","status_code","status_message"]}}}}}}},"/v1/person/{person_id}":{"get":{"operationId":"getMergedPerson","summary":"Get merged person by TMDB ID","description":"Canonical person document for joining cast/crew refs from merged media.","tags":["Merged"],"parameters":[{"name":"person_id","in":"path","required":true,"schema":{"type":"integer","minimum":0}}],"responses":{"200":{"description":"Merged person document.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"ids":{"type":"object","properties":{"tmdb_id":{"type":"number"},"imdb_id":{"type":"string"}},"required":["tmdb_id"]},"birthdate_unix_ms":{"type":"number"},"deathdate_unix_ms":{"type":"number"},"gender":{"type":"number"},"known_for_department":{"type":"string"},"place_of_birth":{"type":"string"},"biography":{"type":"string"},"images":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"type":{"enum":["Poster","Backdrop","Profile","Still","Logo"],"type":"string"},"vote_count":{"type":"number"},"vote_average":{"type":"number"},"language":{"type":"string"}},"required":["path","type"]}}},"required":["id","name","ids","gender","images"]}}}},"404":{"description":"404","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","const":false},"status_code":{"type":"number"},"status_message":{"type":"string"}},"required":["success","status_code","status_message"]}}}}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"User API key from Account settings (ome_…) or server INGEST_API_KEY for automation."}},"schemas":{"MovieDocument":{"type":"object","description":"Complete TMDB movie document. Includes the standard movie detail payload plus all movie append responses merged into one object. Additional TMDB fields may appear beyond those listed here.","required":["id"],"properties":{"id":{"type":"integer","description":"TMDB movie ID.","example":550},"title":{"type":"string","description":"Localized title.","example":"Fight Club"},"original_title":{"type":"string"},"overview":{"type":"string"},"tagline":{"type":"string"},"release_date":{"type":"string","format":"date","example":"1999-10-15"},"runtime":{"type":"integer","description":"Runtime in minutes.","example":139},"status":{"type":"string","example":"Released"},"genres":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}}}},"belongs_to_collection":{"type":["object","null"],"description":"Collection reference from movie detail.","additionalProperties":true},"collection_details":{"type":["object","null"],"description":"Full collection document when the movie belongs to a collection.","additionalProperties":true},"alternative_titles":{"type":"object","description":"Merged TMDB append response for `alternative_titles`.","additionalProperties":true},"credits":{"type":"object","description":"Merged TMDB append response for `credits`.","additionalProperties":true},"external_ids":{"type":"object","description":"Merged TMDB append response for `external_ids`.","additionalProperties":true},"images":{"type":"object","description":"Merged TMDB append response for `images`.","additionalProperties":true},"keywords":{"type":"object","description":"Merged TMDB append response for `keywords`.","additionalProperties":true},"lists":{"type":"object","description":"Merged TMDB append response for `lists`.","additionalProperties":true},"recommendations":{"type":"object","description":"Merged TMDB append response for `recommendations`.","additionalProperties":true},"release_dates":{"type":"object","description":"Merged TMDB append response for `release_dates`.","additionalProperties":true},"reviews":{"type":"object","description":"Merged TMDB append response for `reviews`.","additionalProperties":true},"similar":{"type":"object","description":"Merged TMDB append response for `similar`.","additionalProperties":true},"translations":{"type":"object","description":"Merged TMDB append response for `translations`.","additionalProperties":true},"videos":{"type":"object","description":"Merged TMDB append response for `videos`.","additionalProperties":true},"watch/providers":{"type":"object","description":"Merged TMDB append response for `watch/providers`.","additionalProperties":true}},"additionalProperties":true},"SeriesDocument":{"type":"object","description":"Complete TMDB TV document. Includes series detail, fully hydrated seasons (with nested episode stubs or full episodes), a flattened `episodes` array when enabled, and all TV append responses. Additional TMDB fields may appear beyond those listed here.","required":["id","seasons","episodes"],"properties":{"id":{"type":"integer","description":"TMDB TV series ID.","example":87108},"name":{"type":"string","example":"Chernobyl"},"original_name":{"type":"string"},"overview":{"type":"string"},"first_air_date":{"type":"string","format":"date"},"last_air_date":{"type":"string","format":"date"},"number_of_seasons":{"type":"integer"},"number_of_episodes":{"type":"integer"},"status":{"type":"string","example":"Ended"},"seasons":{"type":"array","description":"Season documents fetched from `/3/tv/{id}/season/{n}` with season append responses merged in.","items":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"integer"},"season_number":{"type":"integer"},"name":{"type":"string"},"episode_count":{"type":"integer"},"episodes":{"type":"array","description":"Episode stubs or full episode documents for the season.","items":{"type":"object","additionalProperties":true}}}}},"episodes":{"type":"array","description":"Flattened list of full episode documents across all seasons when episode hydration is enabled.","items":{"type":"object","additionalProperties":true}},"aggregate_credits":{"type":"object","description":"Merged TMDB append response for `aggregate_credits`.","additionalProperties":true},"content_ratings":{"type":"object","description":"Merged TMDB append response for `content_ratings`.","additionalProperties":true},"credits":{"type":"object","description":"Merged TMDB append response for `credits`.","additionalProperties":true},"episode_groups":{"type":"object","description":"Merged TMDB append response for `episode_groups`.","additionalProperties":true},"external_ids":{"type":"object","description":"Merged TMDB append response for `external_ids`.","additionalProperties":true},"images":{"type":"object","description":"Merged TMDB append response for `images`.","additionalProperties":true},"keywords":{"type":"object","description":"Merged TMDB append response for `keywords`.","additionalProperties":true},"lists":{"type":"object","description":"Merged TMDB append response for `lists`.","additionalProperties":true},"recommendations":{"type":"object","description":"Merged TMDB append response for `recommendations`.","additionalProperties":true},"reviews":{"type":"object","description":"Merged TMDB append response for `reviews`.","additionalProperties":true},"screened_theatrically":{"type":"object","description":"Merged TMDB append response for `screened_theatrically`.","additionalProperties":true},"similar":{"type":"object","description":"Merged TMDB append response for `similar`.","additionalProperties":true},"translations":{"type":"object","description":"Merged TMDB append response for `translations`.","additionalProperties":true},"videos":{"type":"object","description":"Merged TMDB append response for `videos`.","additionalProperties":true},"watch/providers":{"type":"object","description":"Merged TMDB append response for `watch/providers`.","additionalProperties":true}},"additionalProperties":true},"TmdbNotFound":{"type":"object","description":"TMDB-compatible error body returned when the catalog has no document for the requested ID.","required":["success","status_code","status_message"],"properties":{"success":{"type":"boolean","const":false},"status_code":{"type":"integer","example":34},"status_message":{"type":"string","example":"The resource you requested could not be found."}}}}}}