---
title: "Create or Replace Flow"
method: PUT
path: "/flows/{flowId}"
tags: ["Flows"]
---

# Create or Replace Flow

`PUT /flows/{flowId}`

Create or replace the flow metadata.

## Request body

- union — Describes a Flow
  - object — Describes a Flow (common properties to all Flows, imported by type-specific specifications)
    - `id` string, required — Flow identifier
    - `source_id` string, required — Source identifier
    - `label` string — Freeform string label for the flow
    - `description` string — Freeform text describing the flow
    - `created_by` string — A string identifier for the entity that created the flow. Implementations SHOULD set suitable default values for `created_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `updated_by` string — A string identifier for the entity that updated the flow metadata most recently. Implementations SHOULD set suitable default values for `updated_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `tags` Tags — Key value is a freeform string.
    - `metadata_version` string — A change to the flow metadata, not including metadata_version, last_update or segments, results in a new version. If the metadata_version for flow instances is identical then the metadata is identical.
    - `generation` integer — An indication of how many lossy encodings the flow content has been through. A flow with a higher generation may contain less of the original information than a flow with a lower generation.
    - `created` string, date-time — The date-time the flow was created in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `metadata_updated` string, date-time — The date-time the flow metadata was updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `segments_updated` string, date-time — The date-time the flow segments were updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `read_only` boolean — If set to 'true', implementations SHOULD reject client requests to update Flow metadata (other than the read_only property), Flow Segments and media objects
    - `codec` string, required — A MIME type identification of the (lossy or lossless) coding used for the flow content.
    - `container` string — The container MIME type for flow segments.
    - `avg_bit_rate` integer — The average bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `max_bit_rate` integer — The maximum bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `segment_duration` object — The target flow segment duration in seconds. The duration for each segment may vary around this target value. See also the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote for how this property can be used to calculate buffer sizes.
      - `numerator` integer, required — numerator
      - `denominator` integer — denominator
    - `timerange` string — A timerange of timestamps. It is represented using one or two timestamps with inclusivity and exclusivity markers. E.g. * `[0:0_10:0)` represents 10 seconds of media starting at timestamp `0:0` and ending before `10:0`. * `(5:0_` represents a timerange starting after `5:0` and to eternity. * `[1694429247:0_1694429248:0)` is a 1 second TAI timerange starting at 2023-09-11T10:46:50.0Z UTC. * `[1694429247:0]` is an instantaneous TAI timerange at 2023-09-11T10:46:50.0Z UTC. This is equivalent to `[1694429247:0_1694429247:0]`. The short syntax is preferred due to ease of identification as instantaneous. Instantaneous TimeRanges cannot use exclusive markers (i.e. `(` or `)`). * A `[` or `]` indicates that bound is inclusive, and a `(` or `)` indicates that bound is exclusive. Details of the format can be found in the [Timestamps in TAMS](https://github.com/bbc/tams/blob/main/docs/appnotes/0008-timestamps-in-TAMS.md) application note.
    - `flow_collection` Collectionitem[]
      - `id` string, required — Source or Flow Identifier of the member of this collection. Sources must only collect Sources, and Flows must only collect Flows. Must already be registered in TAMS
      - `role` string, required — A human-readable role of the element in this collection (e.g. 'R' to denote a right audio channel in a collection of mono audio Sources)
      - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
        - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
        - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
        - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
          - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
          - `channel_range` string — Inclusive range of (zero-based) container channel numbers
        - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
          - `pid` integer — The packet ID for the elementary stream packets
        - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
          - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
          - `track_id` integer — The track ID in the package
        - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
          - `track_id` integer — The track ID
    - `collected_by` string[] — Flows that reference this Flow to include it in a collection. This attribute is intended to be read-only. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
      - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
      - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
      - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
        - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
        - `channel_range` string — Inclusive range of (zero-based) container channel numbers
      - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
        - `pid` integer — The packet ID for the elementary stream packets
      - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
        - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
        - `track_id` integer — The track ID in the package
      - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
        - `track_id` integer — The track ID
    - `format` 'urn:x-nmos:format:video', required — The primary content type URN for the flow.
    - `essence_parameters` object, required — Describes the parameters of the essence inside this video Flow
      - `frame_rate` object — The fixed number of frames per second. If this parameter is unset, the frame_rate is either unknown or variable.
        - `numerator` integer, required — numerator
        - `denominator` integer — denominator
      - `frame_width` integer, required — The width of the picture in pixels.
      - `frame_height` integer, required — The height of the picture in pixels.
      - `bit_depth` integer — The number of significant bits used to represent the video component sample. If codec is `video/raw`, bit_depth must be set.
      - `interlace_mode` 'progressive' | 'interlaced_tff' | 'interlaced_bff' | 'interlaced_psf' — Interlaced video mode for frames in this Flow
      - `colorspace` 'BT601' | 'BT709' | 'BT2020' | 'BT2100' — Colorspace used for the video
      - `transfer_characteristic` 'SDR' | 'HLG' | 'PQ' — Transfer characteristic
      - `aspect_ratio` object — The display aspect ratio. i.e. display_width / display_height
        - `numerator` integer, required — numerator
        - `denominator` integer, required — denominator
      - `pixel_aspect_ratio` object — The pixel aspect ratio. This is usually 1:1 (i.e. square pixels) for modern video. Some, usually older, video formats use non-square pixels e.g. some Standard Definition video. This is where that may be indicated.
        - `numerator` integer, required — numerator
        - `denominator` integer, required — denominator
      - `component_type` 'YCbCr' | 'RGB' — Picture component representation.
      - `horiz_chroma_subs` integer — Horizontal chroma component sub-sampling. When unc_type is set to a YUV type, horiz_chroma_subs must be set.
      - `vert_chroma_subs` integer — Vertical chroma component sub-sampling. When unc_type is set to a YUV type, vert_chroma_subs must be set.
      - `unc_parameters` object
        - `unc_type` 'planar' | 'YUYV' | 'UYVY' | 'AYUV' | 'v210' | 'v216' | 'RGB' | 'RGBx' | 'xRGB' | 'BGRx' | 'xBGR' | 'RGBA' | 'ARGB' | 'BGRA' | 'ABGR' | 'alpha', required — Uncompressed picture packing type. If codec is `video/raw`, unc_type must be set.
      - `avc_parameters` object
        - `profile` integer, required — AVC / H.264 profile byte. For more information on the use of this property in codec strings, see https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#using_the_codecs_parameter
        - `level` integer, required — AVC / H.264 level byte. For more information on the use of this property in codec strings, see https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#using_the_codecs_parameter
        - `flags` integer, required — AVC / H.264 flags byte. For more information on the use of this property in codec strings, see https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#using_the_codecs_parameter
  - object — Describes a Flow (common properties to all Flows, imported by type-specific specifications)
    - `id` string, required — Flow identifier
    - `source_id` string, required — Source identifier
    - `label` string — Freeform string label for the flow
    - `description` string — Freeform text describing the flow
    - `created_by` string — A string identifier for the entity that created the flow. Implementations SHOULD set suitable default values for `created_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `updated_by` string — A string identifier for the entity that updated the flow metadata most recently. Implementations SHOULD set suitable default values for `updated_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `tags` Tags — Key value is a freeform string.
    - `metadata_version` string — A change to the flow metadata, not including metadata_version, last_update or segments, results in a new version. If the metadata_version for flow instances is identical then the metadata is identical.
    - `generation` integer — An indication of how many lossy encodings the flow content has been through. A flow with a higher generation may contain less of the original information than a flow with a lower generation.
    - `created` string, date-time — The date-time the flow was created in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `metadata_updated` string, date-time — The date-time the flow metadata was updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `segments_updated` string, date-time — The date-time the flow segments were updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `read_only` boolean — If set to 'true', implementations SHOULD reject client requests to update Flow metadata (other than the read_only property), Flow Segments and media objects
    - `codec` string, required — A MIME type identification of the (lossy or lossless) coding used for the flow content.
    - `container` string — The container MIME type for flow segments.
    - `avg_bit_rate` integer — The average bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `max_bit_rate` integer — The maximum bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `segment_duration` object — The target flow segment duration in seconds. The duration for each segment may vary around this target value. See also the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote for how this property can be used to calculate buffer sizes.
      - `numerator` integer, required — numerator
      - `denominator` integer — denominator
    - `timerange` string — A timerange of timestamps. It is represented using one or two timestamps with inclusivity and exclusivity markers. E.g. * `[0:0_10:0)` represents 10 seconds of media starting at timestamp `0:0` and ending before `10:0`. * `(5:0_` represents a timerange starting after `5:0` and to eternity. * `[1694429247:0_1694429248:0)` is a 1 second TAI timerange starting at 2023-09-11T10:46:50.0Z UTC. * `[1694429247:0]` is an instantaneous TAI timerange at 2023-09-11T10:46:50.0Z UTC. This is equivalent to `[1694429247:0_1694429247:0]`. The short syntax is preferred due to ease of identification as instantaneous. Instantaneous TimeRanges cannot use exclusive markers (i.e. `(` or `)`). * A `[` or `]` indicates that bound is inclusive, and a `(` or `)` indicates that bound is exclusive. Details of the format can be found in the [Timestamps in TAMS](https://github.com/bbc/tams/blob/main/docs/appnotes/0008-timestamps-in-TAMS.md) application note.
    - `flow_collection` Collectionitem[]
      - `id` string, required — Source or Flow Identifier of the member of this collection. Sources must only collect Sources, and Flows must only collect Flows. Must already be registered in TAMS
      - `role` string, required — A human-readable role of the element in this collection (e.g. 'R' to denote a right audio channel in a collection of mono audio Sources)
      - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
        - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
        - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
        - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
          - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
          - `channel_range` string — Inclusive range of (zero-based) container channel numbers
        - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
          - `pid` integer — The packet ID for the elementary stream packets
        - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
          - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
          - `track_id` integer — The track ID in the package
        - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
          - `track_id` integer — The track ID
    - `collected_by` string[] — Flows that reference this Flow to include it in a collection. This attribute is intended to be read-only. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
      - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
      - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
      - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
        - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
        - `channel_range` string — Inclusive range of (zero-based) container channel numbers
      - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
        - `pid` integer — The packet ID for the elementary stream packets
      - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
        - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
        - `track_id` integer — The track ID in the package
      - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
        - `track_id` integer — The track ID
    - `format` 'urn:x-nmos:format:audio', required — The primary content type URN for the flow.
    - `essence_parameters` object, required — Describes the parameters of the essence inside this audio Flow
      - `sample_rate` integer, required — The fixed number of samples per second.
      - `channels` integer, required — The channel count.
      - `bit_depth` integer — The number of significant bits used to represent the audio sample. The minumum number of bytes then equals `round_up(bit_depth / 8)`. If codec is `audio/x-raw-int` bit_depth must be set. If codec is `audio/x-raw-float` bit_depth must be set to 32 or 64
      - `codec_parameters` object
        - `coded_frame_size` integer — The fixed number of samples per coded audio frame.
        - `mp4_oti` integer — The MPEG-4 Object Type Identification. For more information on the use of this property in codec strings, see https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#mpeg-4_audio
      - `unc_parameters` object
        - `unc_type` 'interleaved' | 'planar' | 'pairs', required — The uncompressed audio multi-channel representation type. If codec is `audio/x-raw-int` or `audio/x-raw-float`, unc_type must be set.
  - object — Describes a Flow (common properties to all Flows, imported by type-specific specifications)
    - `id` string, required — Flow identifier
    - `source_id` string, required — Source identifier
    - `label` string — Freeform string label for the flow
    - `description` string — Freeform text describing the flow
    - `created_by` string — A string identifier for the entity that created the flow. Implementations SHOULD set suitable default values for `created_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `updated_by` string — A string identifier for the entity that updated the flow metadata most recently. Implementations SHOULD set suitable default values for `updated_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `tags` Tags — Key value is a freeform string.
    - `metadata_version` string — A change to the flow metadata, not including metadata_version, last_update or segments, results in a new version. If the metadata_version for flow instances is identical then the metadata is identical.
    - `generation` integer — An indication of how many lossy encodings the flow content has been through. A flow with a higher generation may contain less of the original information than a flow with a lower generation.
    - `created` string, date-time — The date-time the flow was created in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `metadata_updated` string, date-time — The date-time the flow metadata was updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `segments_updated` string, date-time — The date-time the flow segments were updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `read_only` boolean — If set to 'true', implementations SHOULD reject client requests to update Flow metadata (other than the read_only property), Flow Segments and media objects
    - `codec` string, required — A MIME type identification of the (lossy or lossless) coding used for the flow content.
    - `container` string — The container MIME type for flow segments.
    - `avg_bit_rate` integer — The average bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `max_bit_rate` integer — The maximum bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `segment_duration` object — The target flow segment duration in seconds. The duration for each segment may vary around this target value. See also the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote for how this property can be used to calculate buffer sizes.
      - `numerator` integer, required — numerator
      - `denominator` integer — denominator
    - `timerange` string — A timerange of timestamps. It is represented using one or two timestamps with inclusivity and exclusivity markers. E.g. * `[0:0_10:0)` represents 10 seconds of media starting at timestamp `0:0` and ending before `10:0`. * `(5:0_` represents a timerange starting after `5:0` and to eternity. * `[1694429247:0_1694429248:0)` is a 1 second TAI timerange starting at 2023-09-11T10:46:50.0Z UTC. * `[1694429247:0]` is an instantaneous TAI timerange at 2023-09-11T10:46:50.0Z UTC. This is equivalent to `[1694429247:0_1694429247:0]`. The short syntax is preferred due to ease of identification as instantaneous. Instantaneous TimeRanges cannot use exclusive markers (i.e. `(` or `)`). * A `[` or `]` indicates that bound is inclusive, and a `(` or `)` indicates that bound is exclusive. Details of the format can be found in the [Timestamps in TAMS](https://github.com/bbc/tams/blob/main/docs/appnotes/0008-timestamps-in-TAMS.md) application note.
    - `flow_collection` Collectionitem[]
      - `id` string, required — Source or Flow Identifier of the member of this collection. Sources must only collect Sources, and Flows must only collect Flows. Must already be registered in TAMS
      - `role` string, required — A human-readable role of the element in this collection (e.g. 'R' to denote a right audio channel in a collection of mono audio Sources)
      - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
        - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
        - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
        - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
          - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
          - `channel_range` string — Inclusive range of (zero-based) container channel numbers
        - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
          - `pid` integer — The packet ID for the elementary stream packets
        - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
          - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
          - `track_id` integer — The track ID in the package
        - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
          - `track_id` integer — The track ID
    - `collected_by` string[] — Flows that reference this Flow to include it in a collection. This attribute is intended to be read-only. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
      - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
      - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
      - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
        - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
        - `channel_range` string — Inclusive range of (zero-based) container channel numbers
      - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
        - `pid` integer — The packet ID for the elementary stream packets
      - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
        - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
        - `track_id` integer — The track ID in the package
      - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
        - `track_id` integer — The track ID
    - `format` 'urn:x-nmos:format:data', required — The primary content type URN for the flow.
    - `essence_parameters` object, required — Describes the parameters of the essence inside this data Flow
      - `data_type` string — The type of information encoded in the flow, identified using a URN. e.g. The data_type may be urn:x-tams:data:bounding-box, and the codec `application/json`.
  - object — Describes a Flow (common properties to all Flows, imported by type-specific specifications)
    - `id` string, required — Flow identifier
    - `source_id` string, required — Source identifier
    - `label` string — Freeform string label for the flow
    - `description` string — Freeform text describing the flow
    - `created_by` string — A string identifier for the entity that created the flow. Implementations SHOULD set suitable default values for `created_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `updated_by` string — A string identifier for the entity that updated the flow metadata most recently. Implementations SHOULD set suitable default values for `updated_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `tags` Tags — Key value is a freeform string.
    - `metadata_version` string — A change to the flow metadata, not including metadata_version, last_update or segments, results in a new version. If the metadata_version for flow instances is identical then the metadata is identical.
    - `generation` integer — An indication of how many lossy encodings the flow content has been through. A flow with a higher generation may contain less of the original information than a flow with a lower generation.
    - `created` string, date-time — The date-time the flow was created in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `metadata_updated` string, date-time — The date-time the flow metadata was updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `segments_updated` string, date-time — The date-time the flow segments were updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `read_only` boolean — If set to 'true', implementations SHOULD reject client requests to update Flow metadata (other than the read_only property), Flow Segments and media objects
    - `codec` string — A MIME type identification of the (lossy or lossless) coding used for the flow content.
    - `container` string — The container MIME type for flow segments.
    - `avg_bit_rate` integer — The average bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `max_bit_rate` integer — The maximum bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `segment_duration` object — The target flow segment duration in seconds. The duration for each segment may vary around this target value. See also the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote for how this property can be used to calculate buffer sizes.
      - `numerator` integer, required — numerator
      - `denominator` integer — denominator
    - `timerange` string — A timerange of timestamps. It is represented using one or two timestamps with inclusivity and exclusivity markers. E.g. * `[0:0_10:0)` represents 10 seconds of media starting at timestamp `0:0` and ending before `10:0`. * `(5:0_` represents a timerange starting after `5:0` and to eternity. * `[1694429247:0_1694429248:0)` is a 1 second TAI timerange starting at 2023-09-11T10:46:50.0Z UTC. * `[1694429247:0]` is an instantaneous TAI timerange at 2023-09-11T10:46:50.0Z UTC. This is equivalent to `[1694429247:0_1694429247:0]`. The short syntax is preferred due to ease of identification as instantaneous. Instantaneous TimeRanges cannot use exclusive markers (i.e. `(` or `)`). * A `[` or `]` indicates that bound is inclusive, and a `(` or `)` indicates that bound is exclusive. Details of the format can be found in the [Timestamps in TAMS](https://github.com/bbc/tams/blob/main/docs/appnotes/0008-timestamps-in-TAMS.md) application note.
    - `flow_collection` Collectionitem[]
      - `id` string, required — Source or Flow Identifier of the member of this collection. Sources must only collect Sources, and Flows must only collect Flows. Must already be registered in TAMS
      - `role` string, required — A human-readable role of the element in this collection (e.g. 'R' to denote a right audio channel in a collection of mono audio Sources)
      - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
        - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
        - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
        - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
          - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
          - `channel_range` string — Inclusive range of (zero-based) container channel numbers
        - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
          - `pid` integer — The packet ID for the elementary stream packets
        - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
          - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
          - `track_id` integer — The track ID in the package
        - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
          - `track_id` integer — The track ID
    - `collected_by` string[] — Flows that reference this Flow to include it in a collection. This attribute is intended to be read-only. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
      - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
      - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
      - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
        - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
        - `channel_range` string — Inclusive range of (zero-based) container channel numbers
      - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
        - `pid` integer — The packet ID for the elementary stream packets
      - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
        - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
        - `track_id` integer — The track ID in the package
      - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
        - `track_id` integer — The track ID
    - `format` 'urn:x-nmos:format:multi', required — The primary content type URN for the flow.

## Response `201`

The flow has been created.

- union — Describes a Flow
  - object — Describes a Flow (common properties to all Flows, imported by type-specific specifications)
    - `id` string, required — Flow identifier
    - `source_id` string, required — Source identifier
    - `label` string — Freeform string label for the flow
    - `description` string — Freeform text describing the flow
    - `created_by` string — A string identifier for the entity that created the flow. Implementations SHOULD set suitable default values for `created_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `updated_by` string — A string identifier for the entity that updated the flow metadata most recently. Implementations SHOULD set suitable default values for `updated_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `tags` Tags — Key value is a freeform string.
    - `metadata_version` string — A change to the flow metadata, not including metadata_version, last_update or segments, results in a new version. If the metadata_version for flow instances is identical then the metadata is identical.
    - `generation` integer — An indication of how many lossy encodings the flow content has been through. A flow with a higher generation may contain less of the original information than a flow with a lower generation.
    - `created` string, date-time — The date-time the flow was created in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `metadata_updated` string, date-time — The date-time the flow metadata was updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `segments_updated` string, date-time — The date-time the flow segments were updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `read_only` boolean — If set to 'true', implementations SHOULD reject client requests to update Flow metadata (other than the read_only property), Flow Segments and media objects
    - `codec` string, required — A MIME type identification of the (lossy or lossless) coding used for the flow content.
    - `container` string — The container MIME type for flow segments.
    - `avg_bit_rate` integer — The average bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `max_bit_rate` integer — The maximum bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `segment_duration` object — The target flow segment duration in seconds. The duration for each segment may vary around this target value. See also the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote for how this property can be used to calculate buffer sizes.
      - `numerator` integer, required — numerator
      - `denominator` integer — denominator
    - `timerange` string — A timerange of timestamps. It is represented using one or two timestamps with inclusivity and exclusivity markers. E.g. * `[0:0_10:0)` represents 10 seconds of media starting at timestamp `0:0` and ending before `10:0`. * `(5:0_` represents a timerange starting after `5:0` and to eternity. * `[1694429247:0_1694429248:0)` is a 1 second TAI timerange starting at 2023-09-11T10:46:50.0Z UTC. * `[1694429247:0]` is an instantaneous TAI timerange at 2023-09-11T10:46:50.0Z UTC. This is equivalent to `[1694429247:0_1694429247:0]`. The short syntax is preferred due to ease of identification as instantaneous. Instantaneous TimeRanges cannot use exclusive markers (i.e. `(` or `)`). * A `[` or `]` indicates that bound is inclusive, and a `(` or `)` indicates that bound is exclusive. Details of the format can be found in the [Timestamps in TAMS](https://github.com/bbc/tams/blob/main/docs/appnotes/0008-timestamps-in-TAMS.md) application note.
    - `flow_collection` Collectionitem[]
      - `id` string, required — Source or Flow Identifier of the member of this collection. Sources must only collect Sources, and Flows must only collect Flows. Must already be registered in TAMS
      - `role` string, required — A human-readable role of the element in this collection (e.g. 'R' to denote a right audio channel in a collection of mono audio Sources)
      - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
        - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
        - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
        - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
          - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
          - `channel_range` string — Inclusive range of (zero-based) container channel numbers
        - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
          - `pid` integer — The packet ID for the elementary stream packets
        - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
          - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
          - `track_id` integer — The track ID in the package
        - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
          - `track_id` integer — The track ID
    - `collected_by` string[] — Flows that reference this Flow to include it in a collection. This attribute is intended to be read-only. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
      - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
      - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
      - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
        - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
        - `channel_range` string — Inclusive range of (zero-based) container channel numbers
      - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
        - `pid` integer — The packet ID for the elementary stream packets
      - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
        - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
        - `track_id` integer — The track ID in the package
      - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
        - `track_id` integer — The track ID
    - `format` 'urn:x-nmos:format:video', required — The primary content type URN for the flow.
    - `essence_parameters` object, required — Describes the parameters of the essence inside this video Flow
      - `frame_rate` object — The fixed number of frames per second. If this parameter is unset, the frame_rate is either unknown or variable.
        - `numerator` integer, required — numerator
        - `denominator` integer — denominator
      - `frame_width` integer, required — The width of the picture in pixels.
      - `frame_height` integer, required — The height of the picture in pixels.
      - `bit_depth` integer — The number of significant bits used to represent the video component sample. If codec is `video/raw`, bit_depth must be set.
      - `interlace_mode` 'progressive' | 'interlaced_tff' | 'interlaced_bff' | 'interlaced_psf' — Interlaced video mode for frames in this Flow
      - `colorspace` 'BT601' | 'BT709' | 'BT2020' | 'BT2100' — Colorspace used for the video
      - `transfer_characteristic` 'SDR' | 'HLG' | 'PQ' — Transfer characteristic
      - `aspect_ratio` object — The display aspect ratio. i.e. display_width / display_height
        - `numerator` integer, required — numerator
        - `denominator` integer, required — denominator
      - `pixel_aspect_ratio` object — The pixel aspect ratio. This is usually 1:1 (i.e. square pixels) for modern video. Some, usually older, video formats use non-square pixels e.g. some Standard Definition video. This is where that may be indicated.
        - `numerator` integer, required — numerator
        - `denominator` integer, required — denominator
      - `component_type` 'YCbCr' | 'RGB' — Picture component representation.
      - `horiz_chroma_subs` integer — Horizontal chroma component sub-sampling. When unc_type is set to a YUV type, horiz_chroma_subs must be set.
      - `vert_chroma_subs` integer — Vertical chroma component sub-sampling. When unc_type is set to a YUV type, vert_chroma_subs must be set.
      - `unc_parameters` object
        - `unc_type` 'planar' | 'YUYV' | 'UYVY' | 'AYUV' | 'v210' | 'v216' | 'RGB' | 'RGBx' | 'xRGB' | 'BGRx' | 'xBGR' | 'RGBA' | 'ARGB' | 'BGRA' | 'ABGR' | 'alpha', required — Uncompressed picture packing type. If codec is `video/raw`, unc_type must be set.
      - `avc_parameters` object
        - `profile` integer, required — AVC / H.264 profile byte. For more information on the use of this property in codec strings, see https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#using_the_codecs_parameter
        - `level` integer, required — AVC / H.264 level byte. For more information on the use of this property in codec strings, see https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#using_the_codecs_parameter
        - `flags` integer, required — AVC / H.264 flags byte. For more information on the use of this property in codec strings, see https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#using_the_codecs_parameter
  - object — Describes a Flow (common properties to all Flows, imported by type-specific specifications)
    - `id` string, required — Flow identifier
    - `source_id` string, required — Source identifier
    - `label` string — Freeform string label for the flow
    - `description` string — Freeform text describing the flow
    - `created_by` string — A string identifier for the entity that created the flow. Implementations SHOULD set suitable default values for `created_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `updated_by` string — A string identifier for the entity that updated the flow metadata most recently. Implementations SHOULD set suitable default values for `updated_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `tags` Tags — Key value is a freeform string.
    - `metadata_version` string — A change to the flow metadata, not including metadata_version, last_update or segments, results in a new version. If the metadata_version for flow instances is identical then the metadata is identical.
    - `generation` integer — An indication of how many lossy encodings the flow content has been through. A flow with a higher generation may contain less of the original information than a flow with a lower generation.
    - `created` string, date-time — The date-time the flow was created in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `metadata_updated` string, date-time — The date-time the flow metadata was updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `segments_updated` string, date-time — The date-time the flow segments were updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `read_only` boolean — If set to 'true', implementations SHOULD reject client requests to update Flow metadata (other than the read_only property), Flow Segments and media objects
    - `codec` string, required — A MIME type identification of the (lossy or lossless) coding used for the flow content.
    - `container` string — The container MIME type for flow segments.
    - `avg_bit_rate` integer — The average bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `max_bit_rate` integer — The maximum bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `segment_duration` object — The target flow segment duration in seconds. The duration for each segment may vary around this target value. See also the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote for how this property can be used to calculate buffer sizes.
      - `numerator` integer, required — numerator
      - `denominator` integer — denominator
    - `timerange` string — A timerange of timestamps. It is represented using one or two timestamps with inclusivity and exclusivity markers. E.g. * `[0:0_10:0)` represents 10 seconds of media starting at timestamp `0:0` and ending before `10:0`. * `(5:0_` represents a timerange starting after `5:0` and to eternity. * `[1694429247:0_1694429248:0)` is a 1 second TAI timerange starting at 2023-09-11T10:46:50.0Z UTC. * `[1694429247:0]` is an instantaneous TAI timerange at 2023-09-11T10:46:50.0Z UTC. This is equivalent to `[1694429247:0_1694429247:0]`. The short syntax is preferred due to ease of identification as instantaneous. Instantaneous TimeRanges cannot use exclusive markers (i.e. `(` or `)`). * A `[` or `]` indicates that bound is inclusive, and a `(` or `)` indicates that bound is exclusive. Details of the format can be found in the [Timestamps in TAMS](https://github.com/bbc/tams/blob/main/docs/appnotes/0008-timestamps-in-TAMS.md) application note.
    - `flow_collection` Collectionitem[]
      - `id` string, required — Source or Flow Identifier of the member of this collection. Sources must only collect Sources, and Flows must only collect Flows. Must already be registered in TAMS
      - `role` string, required — A human-readable role of the element in this collection (e.g. 'R' to denote a right audio channel in a collection of mono audio Sources)
      - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
        - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
        - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
        - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
          - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
          - `channel_range` string — Inclusive range of (zero-based) container channel numbers
        - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
          - `pid` integer — The packet ID for the elementary stream packets
        - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
          - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
          - `track_id` integer — The track ID in the package
        - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
          - `track_id` integer — The track ID
    - `collected_by` string[] — Flows that reference this Flow to include it in a collection. This attribute is intended to be read-only. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
      - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
      - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
      - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
        - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
        - `channel_range` string — Inclusive range of (zero-based) container channel numbers
      - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
        - `pid` integer — The packet ID for the elementary stream packets
      - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
        - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
        - `track_id` integer — The track ID in the package
      - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
        - `track_id` integer — The track ID
    - `format` 'urn:x-nmos:format:audio', required — The primary content type URN for the flow.
    - `essence_parameters` object, required — Describes the parameters of the essence inside this audio Flow
      - `sample_rate` integer, required — The fixed number of samples per second.
      - `channels` integer, required — The channel count.
      - `bit_depth` integer — The number of significant bits used to represent the audio sample. The minumum number of bytes then equals `round_up(bit_depth / 8)`. If codec is `audio/x-raw-int` bit_depth must be set. If codec is `audio/x-raw-float` bit_depth must be set to 32 or 64
      - `codec_parameters` object
        - `coded_frame_size` integer — The fixed number of samples per coded audio frame.
        - `mp4_oti` integer — The MPEG-4 Object Type Identification. For more information on the use of this property in codec strings, see https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#mpeg-4_audio
      - `unc_parameters` object
        - `unc_type` 'interleaved' | 'planar' | 'pairs', required — The uncompressed audio multi-channel representation type. If codec is `audio/x-raw-int` or `audio/x-raw-float`, unc_type must be set.
  - object — Describes a Flow (common properties to all Flows, imported by type-specific specifications)
    - `id` string, required — Flow identifier
    - `source_id` string, required — Source identifier
    - `label` string — Freeform string label for the flow
    - `description` string — Freeform text describing the flow
    - `created_by` string — A string identifier for the entity that created the flow. Implementations SHOULD set suitable default values for `created_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `updated_by` string — A string identifier for the entity that updated the flow metadata most recently. Implementations SHOULD set suitable default values for `updated_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `tags` Tags — Key value is a freeform string.
    - `metadata_version` string — A change to the flow metadata, not including metadata_version, last_update or segments, results in a new version. If the metadata_version for flow instances is identical then the metadata is identical.
    - `generation` integer — An indication of how many lossy encodings the flow content has been through. A flow with a higher generation may contain less of the original information than a flow with a lower generation.
    - `created` string, date-time — The date-time the flow was created in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `metadata_updated` string, date-time — The date-time the flow metadata was updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `segments_updated` string, date-time — The date-time the flow segments were updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `read_only` boolean — If set to 'true', implementations SHOULD reject client requests to update Flow metadata (other than the read_only property), Flow Segments and media objects
    - `codec` string, required — A MIME type identification of the (lossy or lossless) coding used for the flow content.
    - `container` string — The container MIME type for flow segments.
    - `avg_bit_rate` integer — The average bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `max_bit_rate` integer — The maximum bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `segment_duration` object — The target flow segment duration in seconds. The duration for each segment may vary around this target value. See also the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote for how this property can be used to calculate buffer sizes.
      - `numerator` integer, required — numerator
      - `denominator` integer — denominator
    - `timerange` string — A timerange of timestamps. It is represented using one or two timestamps with inclusivity and exclusivity markers. E.g. * `[0:0_10:0)` represents 10 seconds of media starting at timestamp `0:0` and ending before `10:0`. * `(5:0_` represents a timerange starting after `5:0` and to eternity. * `[1694429247:0_1694429248:0)` is a 1 second TAI timerange starting at 2023-09-11T10:46:50.0Z UTC. * `[1694429247:0]` is an instantaneous TAI timerange at 2023-09-11T10:46:50.0Z UTC. This is equivalent to `[1694429247:0_1694429247:0]`. The short syntax is preferred due to ease of identification as instantaneous. Instantaneous TimeRanges cannot use exclusive markers (i.e. `(` or `)`). * A `[` or `]` indicates that bound is inclusive, and a `(` or `)` indicates that bound is exclusive. Details of the format can be found in the [Timestamps in TAMS](https://github.com/bbc/tams/blob/main/docs/appnotes/0008-timestamps-in-TAMS.md) application note.
    - `flow_collection` Collectionitem[]
      - `id` string, required — Source or Flow Identifier of the member of this collection. Sources must only collect Sources, and Flows must only collect Flows. Must already be registered in TAMS
      - `role` string, required — A human-readable role of the element in this collection (e.g. 'R' to denote a right audio channel in a collection of mono audio Sources)
      - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
        - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
        - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
        - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
          - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
          - `channel_range` string — Inclusive range of (zero-based) container channel numbers
        - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
          - `pid` integer — The packet ID for the elementary stream packets
        - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
          - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
          - `track_id` integer — The track ID in the package
        - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
          - `track_id` integer — The track ID
    - `collected_by` string[] — Flows that reference this Flow to include it in a collection. This attribute is intended to be read-only. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
      - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
      - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
      - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
        - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
        - `channel_range` string — Inclusive range of (zero-based) container channel numbers
      - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
        - `pid` integer — The packet ID for the elementary stream packets
      - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
        - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
        - `track_id` integer — The track ID in the package
      - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
        - `track_id` integer — The track ID
    - `format` 'urn:x-nmos:format:data', required — The primary content type URN for the flow.
    - `essence_parameters` object, required — Describes the parameters of the essence inside this data Flow
      - `data_type` string — The type of information encoded in the flow, identified using a URN. e.g. The data_type may be urn:x-tams:data:bounding-box, and the codec `application/json`.
  - object — Describes a Flow (common properties to all Flows, imported by type-specific specifications)
    - `id` string, required — Flow identifier
    - `source_id` string, required — Source identifier
    - `label` string — Freeform string label for the flow
    - `description` string — Freeform text describing the flow
    - `created_by` string — A string identifier for the entity that created the flow. Implementations SHOULD set suitable default values for `created_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `updated_by` string — A string identifier for the entity that updated the flow metadata most recently. Implementations SHOULD set suitable default values for `updated_by` based on the principal accessing the system, and MAY permit clients to edit the value, subject to suitable permissions-based limitations.
    - `tags` Tags — Key value is a freeform string.
    - `metadata_version` string — A change to the flow metadata, not including metadata_version, last_update or segments, results in a new version. If the metadata_version for flow instances is identical then the metadata is identical.
    - `generation` integer — An indication of how many lossy encodings the flow content has been through. A flow with a higher generation may contain less of the original information than a flow with a lower generation.
    - `created` string, date-time — The date-time the flow was created in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `metadata_updated` string, date-time — The date-time the flow metadata was updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `segments_updated` string, date-time — The date-time the flow segments were updated in a given context, e.g. in the store. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `read_only` boolean — If set to 'true', implementations SHOULD reject client requests to update Flow metadata (other than the read_only property), Flow Segments and media objects
    - `codec` string — A MIME type identification of the (lossy or lossless) coding used for the flow content.
    - `container` string — The container MIME type for flow segments.
    - `avg_bit_rate` integer — The average bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `max_bit_rate` integer — The maximum bit rate of the flow segments in 1000 bits/second. A precise definition can be found in the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote.
    - `segment_duration` object — The target flow segment duration in seconds. The duration for each segment may vary around this target value. See also the [Setting Flow Bit Rate Properties](https://github.com/bbc/tams/blob/main/docs/appnotes/0013-setting-flow-bit-rate-properties.md) AppNote for how this property can be used to calculate buffer sizes.
      - `numerator` integer, required — numerator
      - `denominator` integer — denominator
    - `timerange` string — A timerange of timestamps. It is represented using one or two timestamps with inclusivity and exclusivity markers. E.g. * `[0:0_10:0)` represents 10 seconds of media starting at timestamp `0:0` and ending before `10:0`. * `(5:0_` represents a timerange starting after `5:0` and to eternity. * `[1694429247:0_1694429248:0)` is a 1 second TAI timerange starting at 2023-09-11T10:46:50.0Z UTC. * `[1694429247:0]` is an instantaneous TAI timerange at 2023-09-11T10:46:50.0Z UTC. This is equivalent to `[1694429247:0_1694429247:0]`. The short syntax is preferred due to ease of identification as instantaneous. Instantaneous TimeRanges cannot use exclusive markers (i.e. `(` or `)`). * A `[` or `]` indicates that bound is inclusive, and a `(` or `)` indicates that bound is exclusive. Details of the format can be found in the [Timestamps in TAMS](https://github.com/bbc/tams/blob/main/docs/appnotes/0008-timestamps-in-TAMS.md) application note.
    - `flow_collection` Collectionitem[]
      - `id` string, required — Source or Flow Identifier of the member of this collection. Sources must only collect Sources, and Flows must only collect Flows. Must already be registered in TAMS
      - `role` string, required — A human-readable role of the element in this collection (e.g. 'R' to denote a right audio channel in a collection of mono audio Sources)
      - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
        - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
        - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
        - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
          - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
          - `channel_range` string — Inclusive range of (zero-based) container channel numbers
        - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
          - `pid` integer — The packet ID for the elementary stream packets
        - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
          - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
          - `track_id` integer — The track ID in the package
        - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
          - `track_id` integer — The track ID
    - `collected_by` string[] — Flows that reference this Flow to include it in a collection. This attribute is intended to be read-only. Implementations SHOULD ignore this if given in a PUT request, and instead manage it internally
    - `container_mapping` Containermapping — Defines the location of Flow essence data in a container track
      - `track_index` integer — A zero-based and sequential track index in the container. This assumes a reliable ordering of tracks
      - `format_track_index` integer — A zero-based and sequential track index in the container for a particular Flow format. A container with a video and 2 audio tracks would have a format_track_index 0 for the video Flow and format_track_index 0 and 1 for the audio Flows. This assumes a reliable ordering of tracks for each Flow format
      - `audio_track` object — Mapping for channels in audio tracks to the Flow channels
        - `channel_numbers` integer[] — Array of (zero-based) container channel numbers in Flow order
        - `channel_range` string — Inclusive range of (zero-based) container channel numbers
      - `mp2ts_container` object — Mapping to MPEG-2 Transport Stream containers, ISO/IEC 13818-1 or ITU-T Recommendation H.222.0
        - `pid` integer — The packet ID for the elementary stream packets
      - `mxf_container` object — Mapping to Material Exchange Format containers, SMPTE ST 377-1
        - `package_uid` string — The package UID. Either a SMPTE UMID URN or UUID URN
        - `track_id` integer — The track ID in the package
      - `isobmff_container` object — Mapping to ISO Base Media File Format (e.g. MP4 and MOV) containers, ISO/IEC 14496-12
        - `track_id` integer — The track ID
    - `format` 'urn:x-nmos:format:multi', required — The primary content type URN for the flow.

## Other responses

- `204` — No content. The flow has been updated.
- `400` — Bad request. Invalid flow JSON.
- `403` — Forbidden. You do not have permission to modify this flow. It may be marked read-only.
- `404` — The requested Flow ID in the path is invalid.

## Changes

- **2025-04-24** `b01aaf8cffe2` — 16 breaking, 26 warning, 40 info
  - added the new required request property `oneOf[subschema #1: Video Flow]/allOf[subschema #1: Flow Core]/flow_collection/items/id`
  - added the new required request property `oneOf[subschema #1: Video Flow]/allOf[subschema #1: Flow Core]/flow_collection/items/role`
  - added the new required request property `oneOf[subschema #2: Audio Flow]/allOf[subschema #1: Flow Core]/flow_collection/items/id`
  - added the new required request property `oneOf[subschema #2: Audio Flow]/allOf[subschema #1: Flow Core]/flow_collection/items/role`
  - …78 more

[Change history](https://skmtc.dev/aws-samples/apis/time-addressable-media-store/changes/flows/:flowId/put.md)

---

[API](https://skmtc.dev/aws-samples/apis/time-addressable-media-store.md) · [All operations](https://skmtc.dev/aws-samples/apis/time-addressable-media-store/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/aws-samples/time-addressable-media-store/revisions/b01aaf8cffe2/schema)
