Vionlabs Docs
API Specs

Vionlabs Catalog API

External docs:SwaggerReDoc
GET
/catalog/v1/item

Authorization

AuthorizationBearer <token>

Stytch access token authentication. Requires BOTH:

  • Authorization: Bearer ACCESS_TOKEN
  • catalog query parameter

Example: Authorization: Bearer ACCESS_TOKEN ?catalog=my_catalog

In: header

Query Parameters

page_num?Page Num

Specifies a positional number of page with results

Default0
Range0 <= value
page_size?Page Size

Specifies a max number of results per page

Default500
Range1 <= value
allow_deleted?|

Flag to indicate whether previously deleted items should be included

Defaultfalse

Response Body

application/json

application/json

curl -X GET "https://example.com/catalog/v1/item"
[
  {
    "id": "string",
    "vionlabs_id": "string",
    "type": "standalone"
  }
]
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}
PUT
/catalog/v1/item

This operation performs an upsert on a catalog item:

  • if the item does not exist, it will be created and added to the catalog
  • if the item already exists, it is fully replaced; this is not a partial update
  • include every field that should be retained: omitted optional fields are cleared or reset to their default values rather than preserved from the existing item
  • to change a single field, first retrieve the item, apply the change locally, then submit the complete item
  • if the submitted item is identical to the existing item, the request succeeds but no changes are applied and no new processing job is triggered
  • if the same ID is uploaded with updated metadata and the same asset_info.file_uri, the catalog metadata is updated without triggering media reprocessing
  • changing asset_info.file_uri for an existing asset requires operations.force_asset_reprocess to be set to true; this deletes existing asset results and sends a reprocess event
  • for episodes, specify episodic hierarchy using 'extended_episodic_info' ('episodic_info' is rejected for episodes)
  • for seasons, specify parent series details using 'episodic_info'

For episodic content (series/season/episode) there are consequential actions that may occur within the episodic hierarchy as a result of a deletion. Please refer to Vionlabs developer documentation for full information on this aspect of system behavior.

Authorization

AuthorizationBearer <token>

Stytch access token authentication. Requires BOTH:

  • Authorization: Bearer ACCESS_TOKEN
  • catalog query parameter

Example: Authorization: Bearer ACCESS_TOKEN ?catalog=my_catalog

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PUT "https://example.com/catalog/v1/item" \  -H "Content-Type: application/json" \  -d '{    "id": "string",    "type": "standalone",    "title": "string"  }'
null
Empty
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}
GET
/catalog/v1/item/{type}/{inventory_id}

This operation returns the currently active version of the requested item in the catalog.

It should be noted that the Vionlabs catalog system is eventually consistent, so there may be a time lag between applying system updates and seeing changed information from this method.

Authorization

AuthorizationBearer <token>

Stytch access token authentication. Requires BOTH:

  • Authorization: Bearer ACCESS_TOKEN
  • catalog query parameter

Example: Authorization: Bearer ACCESS_TOKEN ?catalog=my_catalog

In: header

Path Parameters

type*ItemType

Item type

Value in"standalone" | "series" | "season" | "episode"
inventory_id*Inventory Id

Customer identifier for item as specified in catalog

Query Parameters

allow_deleted?|

Flag to indicate whether previously deleted items should be included

Defaultfalse
asset_model?|

If set to true, the item will be returned in the Asset-based model format. Otherwise, the item will be returned in the Metadata-based model format.This flag can only be enabled for episodes.

Defaultfalse

Response Body

application/json

application/json

curl -X GET "https://example.com/catalog/v1/item/standalone/string"
{
  "id": "string",
  "type": "standalone",
  "title": "string",
  "virtual": false,
  "tag": [
    "string"
  ],
  "poster_urls": [
    "string"
  ],
  "alternative_lang_title": [
    "string"
  ],
  "external_ids": [
    {
      "provider": "IMDB",
      "id": "string"
    }
  ],
  "metadata": {
    "genres": [
      "string"
    ],
    "keywords": [
      "string"
    ],
    "categorized_keywords": [
      {
        "category": "string",
        "keyword": "string"
      }
    ],
    "cast": [
      "string"
    ],
    "roles": [
      "string"
    ],
    "crew": [
      {
        "crew_member": "Jill Smith",
        "role": "producer"
      }
    ],
    "short_description": "string",
    "long_description": "string"
  },
  "ratings": [
    {
      "rating": "PG-13",
      "scheme": "MPAA"
    }
  ],
  "window_info": {
    "start": "string",
    "end": "string"
  },
  "release_year": 1901,
  "logo_urls": {
    "property1": "string",
    "property2": "string"
  },
  "episodic_info": {
    "series_id": "string",
    "season_id": "string",
    "season_number": 1,
    "episode_number": 1
  },
  "extended_episodic_info": {
    "series_id": "string",
    "series_title": "string",
    "season_id": "string",
    "season_title": "string",
    "season_number": 1,
    "episode_number": 1
  },
  "asset_info": {
    "file_uri": "string",
    "video_playback_uri": "string",
    "duration": 1,
    "asset_params": {}
  },
  "operations": {
    "deleted": false,
    "force_asset_reprocess": false
  },
  "timestamp": "string"
}
Empty
Empty
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}
PUT
/catalog/v1/delete/{type}/{inventory_id}

This operation will delete an item from the catalog

For episodic content (series/season/episode) there are consequential actions that may occur within the episodic hierarchy as a result of a deletion. Please refer to Vionlabs developer documentation for full information on this aspect of system behavior.

Note that it is also possible to delete an item from the catalog by performing an upsert with the operational delete flag set to true. This method is provided as a shortcut to delete whilst preserving all other item data in the system.

Authorization

AuthorizationBearer <token>

Stytch access token authentication. Requires BOTH:

  • Authorization: Bearer ACCESS_TOKEN
  • catalog query parameter

Example: Authorization: Bearer ACCESS_TOKEN ?catalog=my_catalog

In: header

Path Parameters

type*ItemType

Item type

Value in"standalone" | "series" | "season" | "episode"
inventory_id*Inventory Id

Customer identifier for item as specified in catalog

Response Body

application/json

application/json

curl -X PUT "https://example.com/catalog/v1/delete/standalone/string"
null
Empty
Empty
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}