# Download Video

After videos are streamed they are stored for later use. This set of APIS gives you access to these files.

Videos are either available as a HLS playlist or as a single MP4. Not all videos are available in all formats.

Some MP4 files may have a status of BUILDABLE, which means while they are not available currently they can be built. This operation will take a number of minutes.

While the HLS manifest files are available, this is purely to enable you to download the required content. They are not meant for public distribution. The links provided may expire.

## List available video files for a match

> List the video files for a match that are available for downloaded.

```json
{"openapi":"3.0.0","info":{"title":"DataCore API  - Handball","version":"v1"},"tags":[{"name":"Download Video","description":"After videos are streamed they are stored for later use.  This set of APIS gives you access to these files.\n\nVideos are either available as a HLS playlist or as a single MP4.  Not all videos are available in all formats.\n\nSome MP4 files may have a status of BUILDABLE, which means while they are not available currently they can be built.  This operation will take a number of minutes.\n\nWhile the HLS manifest files are available, this is purely to enable you to download the required content.  They are not meant for public distribution. The links provided may expire.\n\n"}],"servers":[{"url":"https://api.dc.connect.sportradar.com/v1","description":"Production server"},{"url":"https://api.dc.stg.connect-nonprod.sportradar.dev/v1","description":"NonProduction/Staging server"}],"security":[{"OAuth2":["read:video_files"]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oauth/token","scopes":{"orgId":"Authenticate based on a specific OrganizationId","read:orggroup":"Read data over multiple organizations using and *orggroup* code","write:organization":"Write/Update any data from below the organization","read:organization":"Read any data from the organization down","write:admin":"Perform administration API calls","write:admin_organization":"Ability to manage organizations","write:system":"Perform system configuration API calls"}}},"description":"You can create a JSON Web Token (JWT) using the [token](http://developer.connect.sportradar.com/token/#operation/getToken) API call. Each token is given a set of scopes/permissions. Each endpoint has a scope/permission that it requires to run.  If your token does not possess the correct scope then you will be unable to make the API call."}},"schemas":{"ResponseMetaData":{"type":"object","properties":{"version":{"type":"integer","description":"The version of the API in use for this call"},"codeVersion":{"type":"string","description":"A string indicating the version of the code that handled this request"},"code":{"type":"integer","description":"The HTTP response code for this request"},"time":{"type":"string","format":"date-time","description":"The date/time this request was made (in UTC)."},"fromCache":{"type":"boolean","description":"Was this request served directly from the cache?"},"count":{"type":"integer","description":"The number of records being returned"},"limit":{"type":"integer","description":"The record limit in place for this request"},"offset":{"type":"integer","description":"The record offset in place for this request"},"generationTime":{"type":"number","format":"float","description":"The number of seconds taken to generate this request."}}},"ResponseLinks":{"type":"object","properties":{"self":{"type":"string","format":"uri","description":"The URI referencing this request."},"next":{"type":"string","format":"uri","description":"The URI referencing the 'next' page, if more data is available."},"previous":{"type":"string","format":"uri","description":"The URI referencing the 'previous' page, if the request is not on the first page."}}},"IncludedData":{"type":"object","description":"Available if the request used the 'include' parameter.  It contains extra data about resources found in the data block.","properties":{"resources":{"type":"object","additionalProperties":{"description":"The type of resource","type":"object","enum":["league","organisation","persons"],"additionalProperties":{"type":"object","format":"uuid","description":"The id of the resource","additionalProperties":{"description":"The model for the resource as defined by the type and id"}}}}}},"Video_FilesModel":{"type":"object","additionalProperties":false,"properties":{"videoId":{"description":"The unique identifier of the video","type":"string","format":"uuid"},"organizationId":{"description":"The unique identifier of the organization","type":"string","readOnly":true},"organization":{"properties":{"resourceType":{"type":"string","enum":["organizations"]},"id":{"description":"Unique identifier for this resource","type":"string"}},"description":"The organization that this video file belongs to","type":"object"},"provider":{"description":"The code for the provider of the file","type":"string","maxLength":100},"locale":{"description":"The locale of the video","type":"string","minLength":5,"maxLength":5,"pattern":"^[a-z]{2,2}-[A-Z]{2,2}$"},"sourceNumber":{"description":"Unique identifier for the video source. This is unique for the provider/fixtureId/locale combination.  Unless the provider is supplying multiple sources per fixture/locale then this is normally 1.","type":"integer","format":"int32","default":1},"fixtureId":{"description":"The unique identifier of the match","type":"string","format":"uuid"},"fixture":{"properties":{"resourceType":{"type":"string","enum":["fixtures"]},"id":{"description":"Unique identifier for this resource","type":"string"}},"description":"The match","type":"object"},"resolution":{"description":"The resolution of the video input\n>- `1080` 1920 x 1080\n>- `288` 512 x 288\n>- `720` 1280 x 720\n","type":"string","enum":["288","720","1080"],"maxLength":30},"name":{"description":"The name/description of the video file","type":"string","maxLength":200},"feedType":{"description":"Type of video input\n>- `ADDITIONAL_ANGLE` Additional angle\n>- `LOW_LATENCY` Low Latency\n>- `PRIMARY` Primary\n","type":"string","enum":["PRIMARY","ADDITIONAL_ANGLE","LOW_LATENCY"],"maxLength":30},"content":{"description":"Content of the stream\n>- `CLEAN` Output signal is the same as the input signal\n>- `PROGRAM` Score overlays and other enhancements have been added to the stream\n","type":"string","enum":["CLEAN","PROGRAM"],"maxLength":30},"fps":{"description":"fps for the video stream","type":"integer","format":"int32","default":25},"origin":{"description":"The origin of the video file\n>- None None\n>- `STREAM` Streamed\n>- `UPLOAD` Uploaded\n>- `VENUE` Recorded in venue\n","type":"string","enum":["STREAM","VENUE","UPLOAD",null],"maxLength":30,"nullable":true},"format":{"description":"The format of the video file\n>- `HLS` A HLS play list\n>- `MP4` One MP4 file\n","type":"string","enum":["HLS","MP4"],"maxLength":30},"storageProvider":{"description":"Where the video file is stored?\n>- None None\n>- `5STREAM` 5stream\n>- `AV_SPORTRADAR` AV Sportradar\n>- `KEEMOTION` Keemotion\n>- `SYNERGY` Synergy\n","type":"string","enum":["5STREAM","AV_SPORTRADAR","KEEMOTION","SYNERGY",null],"maxLength":30,"nullable":true},"size":{"description":"Size (Mb) of the video (only given if a single file)","type":"number","format":"float","nullable":true},"length":{"description":"Lenth (mins) of the video","type":"number","format":"float","nullable":true},"encoding":{"description":"How is the video/audio encoded. codecs etc.","type":"string","maxLength":30},"status":{"description":"What is the status of the file?\n>- None None\n>- `AVAILABLE` Available for access\n>- `BUILDABLE` Not currently available - but can be built on request\n>- `PENDING` Being added - some parts may be available\n","type":"string","enum":["AVAILABLE","BUILDABLE","PENDING",null],"maxLength":30,"nullable":true},"startTime":{"description":"The time this recording started (UTC)","type":"string","format":"date-time"},"expiry":{"description":"When does this file expire? (UTC)","type":"string","format":"date-time","nullable":true},"updated":{"description":"Date/time last modified. In UTC","type":"string","format":"date-time","readOnly":true},"added":{"description":"Date/time added. In UTC","type":"string","format":"date-time","readOnly":true}},"title":"video file model"},"ErrorModel":{"type":"object","properties":{"code":{"type":"integer","description":"HTTP Error code indicating the type of error.  If there are multiple errors, then this will be the code of the first one.","format":"int32"},"message":{"type":"string","description":"A message indicating the reason for the error. If there are multiple errors, then this is the message for the first one."},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorListModel"}}}},"ErrorListModel":{"type":"object","properties":{"code":{"type":"integer","description":"HTTP Error code indicating the type of error.","format":"int32"},"reason":{"enum":["INVALID_DATA","NOT_FOUND","NOT_AUTHORISED","ERROR","DELETE_ERROR"],"description":"A short code indicating the type of error"},"message":{"type":"string","description":"A message indicating the reason for the error"},"rowNumber":{"type":"integer","description":"The row number of the payload that cause the error","format":"int32"}}}},"responses":{"ErrorResponse":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMetaData"},"error":{"$ref":"#/components/schemas/ErrorModel"}}}}}}},"parameters":{"added":{"name":"added","description":"Record was added after this date/time. In UTC.","schema":{"type":"string","format":"date-time"},"required":false,"in":"query"},"content":{"name":"content","description":"Content of the stream\n>- `CLEAN` Output signal is the same as the input signal\n>- `PROGRAM` Score overlays and other enhancements have been added to the stream\n","schema":{"type":"string","enum":["CLEAN","PROGRAM"],"maxLength":30},"required":false,"in":"query"},"external":{"name":"external","description":"A comma separated list of fields that will instead be interpreted as an externalId. See [External Ids](#section/Introduction/External-Ids) for more information.","schema":{"type":"string"},"required":false,"in":"query"},"feedType":{"name":"feedType","description":"Type of video input\n>- `ADDITIONAL_ANGLE` Additional angle\n>- `LOW_LATENCY` Low Latency\n>- `PRIMARY` Primary\n","schema":{"type":"string","enum":["PRIMARY","ADDITIONAL_ANGLE","LOW_LATENCY"],"maxLength":30},"required":false,"in":"query"},"fields":{"name":"fields","description":"A comma separated list of fields to display.  The response will only display these fields. See [Partial Response](#section/Partial-Response) section for more information.","schema":{"type":"string"},"required":false,"in":"query"},"video_file_format":{"name":"format","description":"The format of the video file\n>- `HLS` A HLS play list\n>- `MP4` One MP4 file\n","schema":{"type":"string","enum":["HLS","MP4"],"maxLength":30},"required":false,"in":"query"},"hideNull":{"name":"hideNull","description":"Don't display data fields with null values or empty structures","schema":{"type":"boolean"},"required":false,"in":"query"},"include":{"name":"include","description":"A comma separated list of resource types to include. See [Resource Inclusion](#section/Introduction/Resource-Inclusion) for more information.","schema":{"type":"string"},"required":false,"in":"query"},"limit":{"name":"limit","description":"The maximum number of records to return. See [Pagination](#section/Introduction/Pagination) for more information.","schema":{"type":"integer","format":"int32","maximum":1000,"minimum":1,"default":10},"required":false,"in":"query"},"locale":{"name":"locale","description":"The locale of the video","schema":{"type":"string","minLength":5,"maxLength":5},"required":false,"in":"query"},"offset":{"name":"offset","description":"The offset of the records. See [Pagination](#section/Introduction/Pagination) for more information.","schema":{"type":"integer","format":"int32"},"required":false,"in":"query"},"origin":{"name":"origin","description":"The origin of the video file\n>- `STREAM` Streamed\n>- `UPLOAD` Uploaded\n>- `VENUE` Recorded in venue\n","schema":{"type":"string","enum":["STREAM","VENUE","UPLOAD"],"maxLength":30},"required":false,"in":"query"},"provider":{"name":"provider","description":"The unique code for the video provider","schema":{"type":"string","maxLength":100},"required":false,"in":"query"},"sourceNumber":{"name":"sourceNumber","description":"Unique identifier for the video source","schema":{"type":"integer","format":"int32"},"required":false,"in":"query"},"video_file_status":{"name":"status","description":"What is the status of the file?\n>- `AVAILABLE` Available for access\n>- `BUILDABLE` Not currently available - but can be built on request\n>- `PENDING` Being added - some parts may be available\n","schema":{"type":"string","enum":["AVAILABLE","BUILDABLE","PENDING"],"maxLength":30},"required":false,"in":"query"},"storageProvider":{"name":"storageProvider","description":"Where the video file is stored?\n>- `5STREAM` 5stream\n>- `AV_SPORTRADAR` AV Sportradar\n>- `KEEMOTION` Keemotion\n>- `SYNERGY` Synergy\n","schema":{"type":"string","enum":["5STREAM","AV_SPORTRADAR","KEEMOTION","SYNERGY"],"maxLength":30},"required":false,"in":"query"},"updated":{"name":"updated","description":"Record was modified after this date/time. In UTC.","schema":{"type":"string","format":"date-time"},"required":false,"in":"query"}}},"paths":{"/handball/o/{organizationId}/fixtures/{fixtureId}/video/files":{"get":{"tags":["Download Video"],"summary":"List available video files for a match","description":"List the video files for a match that are available for downloaded.","operationId":"video_file_list","responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","title":"Video_Files Response","properties":{"meta":{"$ref":"#/components/schemas/ResponseMetaData"},"links":{"$ref":"#/components/schemas/ResponseLinks"},"included":{"$ref":"#/components/schemas/IncludedData"},"data":{"type":"array","description":"","items":{"$ref":"#/components/schemas/Video_FilesModel"}}}}}}},"default":{"$ref":"#/components/responses/ErrorResponse"}},"parameters":[{"$ref":"#/components/parameters/added"},{"$ref":"#/components/parameters/content"},{"$ref":"#/components/parameters/external"},{"$ref":"#/components/parameters/feedType"},{"$ref":"#/components/parameters/fields"},{"name":"fixtureId","description":"The unique identifier of the fixture","schema":{"type":"string","format":"uuid"},"required":true,"in":"path"},{"$ref":"#/components/parameters/video_file_format"},{"$ref":"#/components/parameters/hideNull"},{"$ref":"#/components/parameters/include"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/locale"},{"$ref":"#/components/parameters/offset"},{"name":"organizationId","description":"The unique identifier of the organization","schema":{"type":"string","minLength":5,"maxLength":5},"required":true,"in":"path"},{"$ref":"#/components/parameters/origin"},{"$ref":"#/components/parameters/provider"},{"$ref":"#/components/parameters/sourceNumber"},{"$ref":"#/components/parameters/video_file_status"},{"$ref":"#/components/parameters/storageProvider"},{"$ref":"#/components/parameters/updated"}]}}}}
```

## Add a new video file

> Add a new video file

```json
{"openapi":"3.0.0","info":{"title":"DataCore API  - Handball","version":"v1"},"tags":[{"name":"Download Video","description":"After videos are streamed they are stored for later use.  This set of APIS gives you access to these files.\n\nVideos are either available as a HLS playlist or as a single MP4.  Not all videos are available in all formats.\n\nSome MP4 files may have a status of BUILDABLE, which means while they are not available currently they can be built.  This operation will take a number of minutes.\n\nWhile the HLS manifest files are available, this is purely to enable you to download the required content.  They are not meant for public distribution. The links provided may expire.\n\n"}],"servers":[{"url":"https://api.dc.connect.sportradar.com/v1","description":"Production server"},{"url":"https://api.dc.stg.connect-nonprod.sportradar.dev/v1","description":"NonProduction/Staging server"}],"security":[{"OAuth2":["write:video_files"]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oauth/token","scopes":{"orgId":"Authenticate based on a specific OrganizationId","read:orggroup":"Read data over multiple organizations using and *orggroup* code","write:organization":"Write/Update any data from below the organization","read:organization":"Read any data from the organization down","write:admin":"Perform administration API calls","write:admin_organization":"Ability to manage organizations","write:system":"Perform system configuration API calls"}}},"description":"You can create a JSON Web Token (JWT) using the [token](http://developer.connect.sportradar.com/token/#operation/getToken) API call. Each token is given a set of scopes/permissions. Each endpoint has a scope/permission that it requires to run.  If your token does not possess the correct scope then you will be unable to make the API call."}},"schemas":{"ResponseMetaData":{"type":"object","properties":{"version":{"type":"integer","description":"The version of the API in use for this call"},"codeVersion":{"type":"string","description":"A string indicating the version of the code that handled this request"},"code":{"type":"integer","description":"The HTTP response code for this request"},"time":{"type":"string","format":"date-time","description":"The date/time this request was made (in UTC)."},"fromCache":{"type":"boolean","description":"Was this request served directly from the cache?"},"count":{"type":"integer","description":"The number of records being returned"},"limit":{"type":"integer","description":"The record limit in place for this request"},"offset":{"type":"integer","description":"The record offset in place for this request"},"generationTime":{"type":"number","format":"float","description":"The number of seconds taken to generate this request."}}},"ResponseLinks":{"type":"object","properties":{"self":{"type":"string","format":"uri","description":"The URI referencing this request."},"next":{"type":"string","format":"uri","description":"The URI referencing the 'next' page, if more data is available."},"previous":{"type":"string","format":"uri","description":"The URI referencing the 'previous' page, if the request is not on the first page."}}},"IncludedData":{"type":"object","description":"Available if the request used the 'include' parameter.  It contains extra data about resources found in the data block.","properties":{"resources":{"type":"object","additionalProperties":{"description":"The type of resource","type":"object","enum":["league","organisation","persons"],"additionalProperties":{"type":"object","format":"uuid","description":"The id of the resource","additionalProperties":{"description":"The model for the resource as defined by the type and id"}}}}}},"Video_FilesModel":{"type":"object","additionalProperties":false,"properties":{"videoId":{"description":"The unique identifier of the video","type":"string","format":"uuid"},"organizationId":{"description":"The unique identifier of the organization","type":"string","readOnly":true},"organization":{"properties":{"resourceType":{"type":"string","enum":["organizations"]},"id":{"description":"Unique identifier for this resource","type":"string"}},"description":"The organization that this video file belongs to","type":"object"},"provider":{"description":"The code for the provider of the file","type":"string","maxLength":100},"locale":{"description":"The locale of the video","type":"string","minLength":5,"maxLength":5,"pattern":"^[a-z]{2,2}-[A-Z]{2,2}$"},"sourceNumber":{"description":"Unique identifier for the video source. This is unique for the provider/fixtureId/locale combination.  Unless the provider is supplying multiple sources per fixture/locale then this is normally 1.","type":"integer","format":"int32","default":1},"fixtureId":{"description":"The unique identifier of the match","type":"string","format":"uuid"},"fixture":{"properties":{"resourceType":{"type":"string","enum":["fixtures"]},"id":{"description":"Unique identifier for this resource","type":"string"}},"description":"The match","type":"object"},"resolution":{"description":"The resolution of the video input\n>- `1080` 1920 x 1080\n>- `288` 512 x 288\n>- `720` 1280 x 720\n","type":"string","enum":["288","720","1080"],"maxLength":30},"name":{"description":"The name/description of the video file","type":"string","maxLength":200},"feedType":{"description":"Type of video input\n>- `ADDITIONAL_ANGLE` Additional angle\n>- `LOW_LATENCY` Low Latency\n>- `PRIMARY` Primary\n","type":"string","enum":["PRIMARY","ADDITIONAL_ANGLE","LOW_LATENCY"],"maxLength":30},"content":{"description":"Content of the stream\n>- `CLEAN` Output signal is the same as the input signal\n>- `PROGRAM` Score overlays and other enhancements have been added to the stream\n","type":"string","enum":["CLEAN","PROGRAM"],"maxLength":30},"fps":{"description":"fps for the video stream","type":"integer","format":"int32","default":25},"origin":{"description":"The origin of the video file\n>- None None\n>- `STREAM` Streamed\n>- `UPLOAD` Uploaded\n>- `VENUE` Recorded in venue\n","type":"string","enum":["STREAM","VENUE","UPLOAD",null],"maxLength":30,"nullable":true},"format":{"description":"The format of the video file\n>- `HLS` A HLS play list\n>- `MP4` One MP4 file\n","type":"string","enum":["HLS","MP4"],"maxLength":30},"storageProvider":{"description":"Where the video file is stored?\n>- None None\n>- `5STREAM` 5stream\n>- `AV_SPORTRADAR` AV Sportradar\n>- `KEEMOTION` Keemotion\n>- `SYNERGY` Synergy\n","type":"string","enum":["5STREAM","AV_SPORTRADAR","KEEMOTION","SYNERGY",null],"maxLength":30,"nullable":true},"size":{"description":"Size (Mb) of the video (only given if a single file)","type":"number","format":"float","nullable":true},"length":{"description":"Lenth (mins) of the video","type":"number","format":"float","nullable":true},"encoding":{"description":"How is the video/audio encoded. codecs etc.","type":"string","maxLength":30},"status":{"description":"What is the status of the file?\n>- None None\n>- `AVAILABLE` Available for access\n>- `BUILDABLE` Not currently available - but can be built on request\n>- `PENDING` Being added - some parts may be available\n","type":"string","enum":["AVAILABLE","BUILDABLE","PENDING",null],"maxLength":30,"nullable":true},"startTime":{"description":"The time this recording started (UTC)","type":"string","format":"date-time"},"expiry":{"description":"When does this file expire? (UTC)","type":"string","format":"date-time","nullable":true},"updated":{"description":"Date/time last modified. In UTC","type":"string","format":"date-time","readOnly":true},"added":{"description":"Date/time added. In UTC","type":"string","format":"date-time","readOnly":true}},"title":"video file model"},"ErrorModel":{"type":"object","properties":{"code":{"type":"integer","description":"HTTP Error code indicating the type of error.  If there are multiple errors, then this will be the code of the first one.","format":"int32"},"message":{"type":"string","description":"A message indicating the reason for the error. If there are multiple errors, then this is the message for the first one."},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorListModel"}}}},"ErrorListModel":{"type":"object","properties":{"code":{"type":"integer","description":"HTTP Error code indicating the type of error.","format":"int32"},"reason":{"enum":["INVALID_DATA","NOT_FOUND","NOT_AUTHORISED","ERROR","DELETE_ERROR"],"description":"A short code indicating the type of error"},"message":{"type":"string","description":"A message indicating the reason for the error"},"rowNumber":{"type":"integer","description":"The row number of the payload that cause the error","format":"int32"}}}},"responses":{"ErrorResponse":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMetaData"},"error":{"$ref":"#/components/schemas/ErrorModel"}}}}}}},"parameters":{"external":{"name":"external","description":"A comma separated list of fields that will instead be interpreted as an externalId. See [External Ids](#section/Introduction/External-Ids) for more information.","schema":{"type":"string"},"required":false,"in":"query"},"fields":{"name":"fields","description":"A comma separated list of fields to display.  The response will only display these fields. See [Partial Response](#section/Partial-Response) section for more information.","schema":{"type":"string"},"required":false,"in":"query"},"hideNull":{"name":"hideNull","description":"Don't display data fields with null values or empty structures","schema":{"type":"boolean"},"required":false,"in":"query"},"include":{"name":"include","description":"A comma separated list of resource types to include. See [Resource Inclusion](#section/Introduction/Resource-Inclusion) for more information.","schema":{"type":"string"},"required":false,"in":"query"}}},"paths":{"/handball/o/{organizationId}/fixtures/{fixtureId}/video/files":{"post":{"tags":["Download Video"],"summary":"Add a new video file","description":"Add a new video file","operationId":"video_file_insert","responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","title":"Video_Files Response","properties":{"meta":{"$ref":"#/components/schemas/ResponseMetaData"},"links":{"$ref":"#/components/schemas/ResponseLinks"},"included":{"$ref":"#/components/schemas/IncludedData"},"data":{"type":"array","description":"","items":{"$ref":"#/components/schemas/Video_FilesModel"}}}}}}},"default":{"$ref":"#/components/responses/ErrorResponse"}},"parameters":[{"$ref":"#/components/parameters/external"},{"$ref":"#/components/parameters/fields"},{"name":"fixtureId","description":"The unique identifier of the fixture","schema":{"type":"string","format":"uuid"},"required":true,"in":"path"},{"$ref":"#/components/parameters/hideNull"},{"$ref":"#/components/parameters/include"},{"name":"organizationId","description":"The unique identifier of the organization","schema":{"type":"string","minLength":5,"maxLength":5},"required":true,"in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"videoId":{"description":"The unique identifier of the video","type":"string","format":"uuid"},"provider":{"description":"The code for the provider of the file","type":"string","maxLength":100},"locale":{"description":"The locale of the video","type":"string","minLength":5,"maxLength":5,"pattern":"^[a-z]{2,2}-[A-Z]{2,2}$"},"sourceNumber":{"description":"Unique identifier for the video source. This is unique for the provider/fixtureId/locale combination.  Unless the provider is supplying multiple sources per fixture/locale then this is normally 1.","type":"integer","format":"int32","default":1},"fixtureId":{"description":"The unique identifier of the match","type":"string","format":"uuid"},"resolution":{"description":"The resolution of the video input\n>- `1080` 1920 x 1080\n>- `288` 512 x 288\n>- `720` 1280 x 720\n","type":"string","enum":["288","720","1080"],"maxLength":30},"name":{"description":"The name/description of the video file","type":"string","maxLength":200},"feedType":{"description":"Type of video input\n>- `ADDITIONAL_ANGLE` Additional angle\n>- `LOW_LATENCY` Low Latency\n>- `PRIMARY` Primary\n","type":"string","enum":["PRIMARY","ADDITIONAL_ANGLE","LOW_LATENCY"],"maxLength":30},"content":{"description":"Content of the stream\n>- `CLEAN` Output signal is the same as the input signal\n>- `PROGRAM` Score overlays and other enhancements have been added to the stream\n","type":"string","enum":["CLEAN","PROGRAM"],"maxLength":30},"fps":{"description":"fps for the video stream","type":"integer","format":"int32","default":25},"origin":{"description":"The origin of the video file\n>- None None\n>- `STREAM` Streamed\n>- `UPLOAD` Uploaded\n>- `VENUE` Recorded in venue\n","type":"string","enum":["STREAM","VENUE","UPLOAD",null],"maxLength":30,"nullable":true},"format":{"description":"The format of the video file\n>- `HLS` A HLS play list\n>- `MP4` One MP4 file\n","type":"string","enum":["HLS","MP4"],"maxLength":30},"storageProvider":{"description":"Where the video file is stored?\n>- None None\n>- `5STREAM` 5stream\n>- `AV_SPORTRADAR` AV Sportradar\n>- `KEEMOTION` Keemotion\n>- `SYNERGY` Synergy\n","type":"string","enum":["5STREAM","AV_SPORTRADAR","KEEMOTION","SYNERGY",null],"maxLength":30,"nullable":true},"size":{"description":"Size (Mb) of the video (only given if a single file)","type":"number","format":"float","nullable":true},"length":{"description":"Lenth (mins) of the video","type":"number","format":"float","nullable":true},"encoding":{"description":"How is the video/audio encoded. codecs etc.","type":"string","maxLength":30},"url":{"description":"The URL where the file can be found","type":"string","maxLength":200,"writeOnly":true},"status":{"description":"What is the status of the file?\n>- None None\n>- `AVAILABLE` Available for access\n>- `BUILDABLE` Not currently available - but can be built on request\n>- `PENDING` Being added - some parts may be available\n","type":"string","enum":["AVAILABLE","BUILDABLE","PENDING",null],"maxLength":30,"nullable":true},"startTime":{"description":"The time this recording started (UTC)","type":"string","format":"date-time"},"expiry":{"description":"When does this file expire? (UTC)","type":"string","format":"date-time","nullable":true}},"title":"video file post body","required":["provider","locale","sourceNumber","fixtureId","resolution","feedType","content","fps","url","startTime"]}}}}}}}}
```

## Download URL

> Generate a url to download a video file for a match. This link is only valid for 30 minutes.

```json
{"openapi":"3.0.0","info":{"title":"DataCore API  - Handball","version":"v1"},"tags":[{"name":"Download Video","description":"After videos are streamed they are stored for later use.  This set of APIS gives you access to these files.\n\nVideos are either available as a HLS playlist or as a single MP4.  Not all videos are available in all formats.\n\nSome MP4 files may have a status of BUILDABLE, which means while they are not available currently they can be built.  This operation will take a number of minutes.\n\nWhile the HLS manifest files are available, this is purely to enable you to download the required content.  They are not meant for public distribution. The links provided may expire.\n\n"}],"servers":[{"url":"https://api.dc.connect.sportradar.com/v1","description":"Production server"},{"url":"https://api.dc.stg.connect-nonprod.sportradar.dev/v1","description":"NonProduction/Staging server"}],"security":[{"OAuth2":["read:video_files"]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oauth/token","scopes":{"orgId":"Authenticate based on a specific OrganizationId","read:orggroup":"Read data over multiple organizations using and *orggroup* code","write:organization":"Write/Update any data from below the organization","read:organization":"Read any data from the organization down","write:admin":"Perform administration API calls","write:admin_organization":"Ability to manage organizations","write:system":"Perform system configuration API calls"}}},"description":"You can create a JSON Web Token (JWT) using the [token](http://developer.connect.sportradar.com/token/#operation/getToken) API call. Each token is given a set of scopes/permissions. Each endpoint has a scope/permission that it requires to run.  If your token does not possess the correct scope then you will be unable to make the API call."}},"schemas":{"ResponseMetaData":{"type":"object","properties":{"version":{"type":"integer","description":"The version of the API in use for this call"},"codeVersion":{"type":"string","description":"A string indicating the version of the code that handled this request"},"code":{"type":"integer","description":"The HTTP response code for this request"},"time":{"type":"string","format":"date-time","description":"The date/time this request was made (in UTC)."},"fromCache":{"type":"boolean","description":"Was this request served directly from the cache?"},"count":{"type":"integer","description":"The number of records being returned"},"limit":{"type":"integer","description":"The record limit in place for this request"},"offset":{"type":"integer","description":"The record offset in place for this request"},"generationTime":{"type":"number","format":"float","description":"The number of seconds taken to generate this request."}}},"ResponseLinks":{"type":"object","properties":{"self":{"type":"string","format":"uri","description":"The URI referencing this request."},"next":{"type":"string","format":"uri","description":"The URI referencing the 'next' page, if more data is available."},"previous":{"type":"string","format":"uri","description":"The URI referencing the 'previous' page, if the request is not on the first page."}}},"IncludedData":{"type":"object","description":"Available if the request used the 'include' parameter.  It contains extra data about resources found in the data block.","properties":{"resources":{"type":"object","additionalProperties":{"description":"The type of resource","type":"object","enum":["league","organisation","persons"],"additionalProperties":{"type":"object","format":"uuid","description":"The id of the resource","additionalProperties":{"description":"The model for the resource as defined by the type and id"}}}}}},"Video_Files_DownloadModel":{"type":"object","additionalProperties":false,"properties":{"videoId":{"description":"The unique identifier of the video","type":"string","format":"uuid","readOnly":true},"url":{"description":"The URL where the file can be found","type":"string","maxLength":200,"readOnly":true}},"title":"video file model"},"ErrorModel":{"type":"object","properties":{"code":{"type":"integer","description":"HTTP Error code indicating the type of error.  If there are multiple errors, then this will be the code of the first one.","format":"int32"},"message":{"type":"string","description":"A message indicating the reason for the error. If there are multiple errors, then this is the message for the first one."},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorListModel"}}}},"ErrorListModel":{"type":"object","properties":{"code":{"type":"integer","description":"HTTP Error code indicating the type of error.","format":"int32"},"reason":{"enum":["INVALID_DATA","NOT_FOUND","NOT_AUTHORISED","ERROR","DELETE_ERROR"],"description":"A short code indicating the type of error"},"message":{"type":"string","description":"A message indicating the reason for the error"},"rowNumber":{"type":"integer","description":"The row number of the payload that cause the error","format":"int32"}}}},"responses":{"ErrorResponse":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMetaData"},"error":{"$ref":"#/components/schemas/ErrorModel"}}}}}}},"parameters":{"external":{"name":"external","description":"A comma separated list of fields that will instead be interpreted as an externalId. See [External Ids](#section/Introduction/External-Ids) for more information.","schema":{"type":"string"},"required":false,"in":"query"},"fields":{"name":"fields","description":"A comma separated list of fields to display.  The response will only display these fields. See [Partial Response](#section/Partial-Response) section for more information.","schema":{"type":"string"},"required":false,"in":"query"},"hideNull":{"name":"hideNull","description":"Don't display data fields with null values or empty structures","schema":{"type":"boolean"},"required":false,"in":"query"},"include":{"name":"include","description":"A comma separated list of resource types to include. See [Resource Inclusion](#section/Introduction/Resource-Inclusion) for more information.","schema":{"type":"string"},"required":false,"in":"query"},"limit":{"name":"limit","description":"The maximum number of records to return. See [Pagination](#section/Introduction/Pagination) for more information.","schema":{"type":"integer","format":"int32","maximum":1000,"minimum":1,"default":10},"required":false,"in":"query"},"offset":{"name":"offset","description":"The offset of the records. See [Pagination](#section/Introduction/Pagination) for more information.","schema":{"type":"integer","format":"int32"},"required":false,"in":"query"}}},"paths":{"/handball/o/{organizationId}/video/files/{videoId}/url":{"get":{"tags":["Download Video"],"summary":"Download URL","description":"Generate a url to download a video file for a match. This link is only valid for 30 minutes.","operationId":"video_file_detail","responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","title":"Video_Files_Download Response","properties":{"meta":{"$ref":"#/components/schemas/ResponseMetaData"},"links":{"$ref":"#/components/schemas/ResponseLinks"},"included":{"$ref":"#/components/schemas/IncludedData"},"data":{"type":"array","description":"","items":{"$ref":"#/components/schemas/Video_Files_DownloadModel"}}}}}}},"default":{"$ref":"#/components/responses/ErrorResponse"}},"parameters":[{"$ref":"#/components/parameters/external"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/hideNull"},{"$ref":"#/components/parameters/include"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/offset"},{"name":"organizationId","description":"The unique identifier of the organization","schema":{"type":"string","minLength":5,"maxLength":5},"required":true,"in":"path"},{"name":"videoId","description":"The unique identifier of the video file","schema":{"type":"string","format":"uuid"},"required":true,"in":"path"}]}}}}
```

## Delete a video file

> Delete a video file

```json
{"openapi":"3.0.0","info":{"title":"DataCore API  - Handball","version":"v1"},"tags":[{"name":"Download Video","description":"After videos are streamed they are stored for later use.  This set of APIS gives you access to these files.\n\nVideos are either available as a HLS playlist or as a single MP4.  Not all videos are available in all formats.\n\nSome MP4 files may have a status of BUILDABLE, which means while they are not available currently they can be built.  This operation will take a number of minutes.\n\nWhile the HLS manifest files are available, this is purely to enable you to download the required content.  They are not meant for public distribution. The links provided may expire.\n\n"}],"servers":[{"url":"https://api.dc.connect.sportradar.com/v1","description":"Production server"},{"url":"https://api.dc.stg.connect-nonprod.sportradar.dev/v1","description":"NonProduction/Staging server"}],"security":[{"OAuth2":["write:video_files"]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oauth/token","scopes":{"orgId":"Authenticate based on a specific OrganizationId","read:orggroup":"Read data over multiple organizations using and *orggroup* code","write:organization":"Write/Update any data from below the organization","read:organization":"Read any data from the organization down","write:admin":"Perform administration API calls","write:admin_organization":"Ability to manage organizations","write:system":"Perform system configuration API calls"}}},"description":"You can create a JSON Web Token (JWT) using the [token](http://developer.connect.sportradar.com/token/#operation/getToken) API call. Each token is given a set of scopes/permissions. Each endpoint has a scope/permission that it requires to run.  If your token does not possess the correct scope then you will be unable to make the API call."}},"schemas":{"ResponseMetaData":{"type":"object","properties":{"version":{"type":"integer","description":"The version of the API in use for this call"},"codeVersion":{"type":"string","description":"A string indicating the version of the code that handled this request"},"code":{"type":"integer","description":"The HTTP response code for this request"},"time":{"type":"string","format":"date-time","description":"The date/time this request was made (in UTC)."},"fromCache":{"type":"boolean","description":"Was this request served directly from the cache?"},"count":{"type":"integer","description":"The number of records being returned"},"limit":{"type":"integer","description":"The record limit in place for this request"},"offset":{"type":"integer","description":"The record offset in place for this request"},"generationTime":{"type":"number","format":"float","description":"The number of seconds taken to generate this request."}}},"ResponseLinks":{"type":"object","properties":{"self":{"type":"string","format":"uri","description":"The URI referencing this request."},"next":{"type":"string","format":"uri","description":"The URI referencing the 'next' page, if more data is available."},"previous":{"type":"string","format":"uri","description":"The URI referencing the 'previous' page, if the request is not on the first page."}}},"IncludedData":{"type":"object","description":"Available if the request used the 'include' parameter.  It contains extra data about resources found in the data block.","properties":{"resources":{"type":"object","additionalProperties":{"description":"The type of resource","type":"object","enum":["league","organisation","persons"],"additionalProperties":{"type":"object","format":"uuid","description":"The id of the resource","additionalProperties":{"description":"The model for the resource as defined by the type and id"}}}}}},"Video_Files_DownloadModel":{"type":"object","additionalProperties":false,"properties":{"videoId":{"description":"The unique identifier of the video","type":"string","format":"uuid","readOnly":true},"url":{"description":"The URL where the file can be found","type":"string","maxLength":200,"readOnly":true}},"title":"video file model"},"ErrorModel":{"type":"object","properties":{"code":{"type":"integer","description":"HTTP Error code indicating the type of error.  If there are multiple errors, then this will be the code of the first one.","format":"int32"},"message":{"type":"string","description":"A message indicating the reason for the error. If there are multiple errors, then this is the message for the first one."},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorListModel"}}}},"ErrorListModel":{"type":"object","properties":{"code":{"type":"integer","description":"HTTP Error code indicating the type of error.","format":"int32"},"reason":{"enum":["INVALID_DATA","NOT_FOUND","NOT_AUTHORISED","ERROR","DELETE_ERROR"],"description":"A short code indicating the type of error"},"message":{"type":"string","description":"A message indicating the reason for the error"},"rowNumber":{"type":"integer","description":"The row number of the payload that cause the error","format":"int32"}}}},"responses":{"ErrorResponse":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/ResponseMetaData"},"error":{"$ref":"#/components/schemas/ErrorModel"}}}}}}},"parameters":{"external":{"name":"external","description":"A comma separated list of fields that will instead be interpreted as an externalId. See [External Ids](#section/Introduction/External-Ids) for more information.","schema":{"type":"string"},"required":false,"in":"query"},"fields":{"name":"fields","description":"A comma separated list of fields to display.  The response will only display these fields. See [Partial Response](#section/Partial-Response) section for more information.","schema":{"type":"string"},"required":false,"in":"query"},"forceDelete":{"name":"forceDelete","description":"Force a delete command to run and delete child records as well if there are existing records depending on the record.","schema":{"type":"boolean"},"required":false,"in":"query"},"hideNull":{"name":"hideNull","description":"Don't display data fields with null values or empty structures","schema":{"type":"boolean"},"required":false,"in":"query"},"include":{"name":"include","description":"A comma separated list of resource types to include. See [Resource Inclusion](#section/Introduction/Resource-Inclusion) for more information.","schema":{"type":"string"},"required":false,"in":"query"}}},"paths":{"/handball/o/{organizationId}/video/files/{videoId}":{"delete":{"tags":["Download Video"],"summary":"Delete a video file","description":"Delete a video file","operationId":"video_file_delete","responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","title":"Video_Files_Download Response","properties":{"meta":{"$ref":"#/components/schemas/ResponseMetaData"},"links":{"$ref":"#/components/schemas/ResponseLinks"},"included":{"$ref":"#/components/schemas/IncludedData"},"data":{"type":"array","description":"","items":{"$ref":"#/components/schemas/Video_Files_DownloadModel"}}}}}}},"default":{"$ref":"#/components/responses/ErrorResponse"}},"parameters":[{"$ref":"#/components/parameters/external"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/forceDelete"},{"$ref":"#/components/parameters/hideNull"},{"$ref":"#/components/parameters/include"},{"name":"organizationId","description":"The unique identifier of the organization","schema":{"type":"string","minLength":5,"maxLength":5},"required":true,"in":"path"},{"name":"videoId","description":"The unique identifier of the video file","schema":{"type":"string","format":"uuid"},"required":true,"in":"path"}]}}}}
```
