openapi: 3.0.2
info:
  title: Nucleus Client-Facing API
  description: Red Bee Media - Nucleus Client-Facing API
  version: 1.2.0
servers:
  - url: "https://media.api.redbeemedia.com/v1"
    description: API Gateway
security:
  - bearerAuth: []
tags:
  - name: Work Orders
    description: Submit and track Nucleus work orders
  - name: Workflows
    description: Track Nucleus workflows
  - name: Assets
    description: Retrieve asset details
  - name: Bulk Search
    description: Retrieve data via bulk search facilities
  - name: External Work Orders
    description: Interact with external work orders submitted to 3PP systems by Nucleus
  - name: Service
    description: Debug APIs
paths:
  /healthcheck:
    get:
      tags:
        - Service
      summary: Health check
      description: Check internal services
      responses:
        "200":
          $ref: "#/components/responses/APIStatusResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "500":
          $ref: "#/components/responses/ISEResponse"
  /assets:
    get:
      tags:
        - Assets
      summary: Query asset details
      description: Get CMPP asset details filtered by query parameters
      parameters:
        - name: materialId
          in: query
          description: material ID (string length <= 255)
          example: TST/TEST/001
          schema:
            type: string
          required: true
        - name: contentType
          in: query
          description: content type of the asset
          example: Programme
          schema:
            $ref: "#/components/schemas/CmppContentType"
        - name: assetGroup
          in: query
          description: asset group name (string length <= 50)
          example: client-ag-1
          schema:
            type: string
        - name: broadcastStatus
          in: query
          description: broadcast status of the asset
          example: Ready for TX
          schema:
            $ref: "#/components/schemas/BroadcastStatus"
        - name: limit
          in: query
          description: limits the number of returned items
          schema:
            type: integer
        - name: offset
          in: query
          description: offset of returned items (start from index)
          schema:
            type: integer
      responses:
        "200":
          $ref: "#/components/responses/AssetListResponse"
        "400":
          $ref: "#/components/responses/BadRequestParamsResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "500":
          $ref: "#/components/responses/ISEResponse"
  "/assets/{id}":
    get:
      tags:
        - Assets
      summary: Get asset details
      description: Get CMPP asset details by ID
      parameters:
        - name: id
          in: path
          description: asset ID
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: "#/components/schemas/CmppAssetDetails"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "500":
          $ref: "#/components/responses/ISEResponse"
  "/assets/{id}/assetfiles":
    get:
      tags:
        - Assets
      summary: Get asset file details for an asset
      description: Get details of all asset files associated with a CMPP asset
      parameters:
        - name: id
          in: path
          description: asset ID
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/hal+json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/CmppAssetFileDetails"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "500":
          $ref: "#/components/responses/ISEResponse"
  /bulksearch/assetfiles:
    get:
      tags:
        - Bulk Search
      summary: Get asset file details via bulk search
      description: Get details of asset files and their parent CMPP assets via bulk search
      parameters:
        - name: materialId
          in: query
          description: material ID (string length <= 255)
          example: TST/TEST/001
          schema:
            type: string
          required: true
        - name: contentType
          in: query
          description: content type of the asset
          example: Programme
          schema:
            $ref: "#/components/schemas/CmppContentType"
        - name: broadcastStatus
          in: query
          description: broadcast status of the asset file's parent asset
          example: Ready for TX
          schema:
            $ref: "#/components/schemas/BroadcastStatus"
        - name: qcStatus
          in: query
          description: QC status of the asset file
          example: Passed
          schema:
            $ref: "#/components/schemas/QCStatus"
        - name: profile
          in: query
          description: the asset file profile
          example: mxf_avci100_hd
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CmppAssetFilesBulkSearchResponse"
        "400":
          $ref: "#/components/responses/BadRequestParamsResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "500":
          $ref: "#/components/responses/ISEResponse"
  "/external/workorders/{id}/notification":
    post:
      tags:
        - External Work Orders
      summary: External work order notification
      description: Notify of an event related to an external work order
      parameters:
        - name: id
          in: path
          description: external work order ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ExternalWorkOrderNotificationMainBody"
            example:
              type: Exception
              details:
                message: Some issue with the order to be resolved by RBM and client
                sender: John Doe
      responses:
        "200":
          $ref: "#/components/responses/ExternalWorkOrderNotificationOkResponse"
        "400":
          $ref: "#/components/responses/BadRequestResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "403":
          $ref: "#/components/responses/ForbiddenResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "500":
          $ref: "#/components/responses/ISEResponse"
  "/external/workorders/{id}/reject":
    post:
      tags:
        - External Work Orders
      summary: External work order rejection
      description: Reject an external work order
      parameters:
        - name: id
          in: path
          description: external work order ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ExternalWorkOrderRejectBody"
      responses:
        "200":
          $ref: "#/components/responses/ExternalWorkOrderRejectOkResponse"
        "400":
          $ref: "#/components/responses/BadRequestResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "403":
          $ref: "#/components/responses/ForbiddenResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "500":
          $ref: "#/components/responses/ISEResponse"
  /workorders:
    post:
      tags:
        - Work Orders
      summary: Submit work order
      description: Submit a work order to Nucleus for processing
      parameters:
        - name: Content-Type
          in: header
          description: application/json
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/WorkOrderMainBody"
            examples:
              ReviewAndExport:
                summary: ReviewAndExport
                value:
                  type: ReviewAndExport
                  requestId: abc123-client-assigned-external-id
                  description: ReviewAndExport example
                  deadline: "2026-06-01T00:00:00Z"
                  costLocation: location1
                  jobDetails:
                    sourceAssetGroup: client-ag-1
                    deliveryDestinations:
                      - "sftp://destination.com"
                      - "fasp://destination.com"
                    deliverSidecar: true
                    deliverAqcReport: true
                    comments: Some comments
                    source:
                      materialId: TST/TEST/001
                    requiredAssetFiles:
                      - afType: Programme Master
                      - afType: Still Image
                        afProfile: png_poster_portrait
                    qualityControl:
                      aqcRequired: true
                      aqcType: Custom
                      aqcCustomProfile: CustomProfile1
                      manualQcRequired: true
                      manualQcType: 3PointLowResQC
              ContentPrep (episodic basic):
                summary: ContentPrep (episodic basic)
                value:
                  type: ContentPrep
                  variant: client-x-cpwo-sub
                  requestId: abc123
                  description: Content Prep (Episodic) basic example with auto conform (segmentation provided by RBM). No specific AutoConform object required in this instance.
                  deadline: "2026-06-01T00:00:00Z"
                  costLocation: location1
                  jobDetails:
                    targetAssetGroup: client-ag-1
                    instructions: Some instructions
                    outputResolution: HD
                    identifiers:
                      materialId: TST/TEST/001
                      alternateId: TEST001
                    content:
                      contentType: Programme
                      contentSubType: Episodic
                      contentCategory: Acquired
                    editorial:
                      title: "Series A: The Final Title"
                      season:
                        runOrder: 1
                        expectedNumberOfEpisodes: 6
                      episode:
                        runOrder: 1
                        title: Episode 1
                    durations:
                      expectedSourceDuration: "01:35:00:00"
                      targetDuration: "01:20:00:00"
                      negativeTargetDurationTolerance: "00:00:02:00"
                      positiveTargetDurationTolerance: "00:00:01:00"
                    clientSpecific:
                      modelName: "clientName:contentPrep"
                      details:
                        clientSpecificProperty1: string
                        clientSpecificProperty2: 0
                        clientSpecificProperty3: []
                        clientSpecificChildObject1: {}
                    qualityControl:
                      aqcRequired: true
                      aqcType: Custom
                      aqcCustomProfile: CustomProfile1
                      manualQcRequired: true
                      manualQcType: FullHiResQCWithLogging
                    nested:
                      - workflowName: ChaseMedia
                        details:
                          instructions: Some instructions
                          source:
                            materialId: SRC/SOURCE/001
                            minimumResolution: HD
                            hdrRequired: false
                            requiredAudioTrackLanguageTags:
                              - sv-SE
                              - fi-FI
                              - da-DK
                              - nb-NO
                            requiredSubtitleLanguageTags:
                              - sv-SE
                              - fi-FI
                              - da-DK
                              - nb-NO
                            expectedAncillaryFiles:
                              - type: Image
                                description: Portrait poster image
                          supplier:
                            name: Supplier1
                            email: contact@supplier1.com
                            listOfEmails:
                              [
                                contact@supplier1.com,
                                contact@supplier2.com,
                                contact@supplier3.com,
                              ]
                            telephone: "+442075551234"
                            contractedDeliveryDate: "2026-06-10T00:00:00Z"
                            comments: Free text
              ContentPrep (single programme basic):
                summary: ContentPrep (single programme basic)
                value:
                  type: ContentPrep
                  requestId: abc123-client-assigned-external-id
                  description: Content Prep (Single Programme) basic example with auto conform (segmentation provided by RBM). No specific AutoConform object required in this instance.
                  deadline: "2026-06-01T00:00:00Z"
                  costLocation: location1
                  jobDetails:
                    targetAssetGroup: client-ag-1
                    instructions: Free text
                    outputResolution: HD
                    identifiers:
                      materialId: TST/TEST/001
                      alternateId: TEST001
                    content:
                      contentType: Programme
                      contentSubType: Single
                      contentCategory: Acquired
                    editorial:
                      title: Single Programme Title
                    durations:
                      expectedSourceDuration: "01:35:00:00"
                      targetDuration: "01:20:00:00"
                      negativeTargetDurationTolerance: "00:00:02:00"
                      positiveTargetDurationTolerance: "00:00:01:00"
                    clientSpecific:
                      modelName: "clientName:contentPrep"
                      details:
                        clientSpecificProperty1: ""
                        clientSpecificProperty2: 0
                        clientSpecificProperty3: []
                        clientSpecificChildObject1: {}
                    qualityControl:
                      aqcRequired: true
                      aqcType: Custom
                      aqcCustomProfile: CustomProfile1
                      manualQcRequired: true
                      manualQcType: FullHiResQCWithLogging
                    nested:
                      - workflowName: ChaseMedia
                        details:
                          instructions: Some instructions
                          source:
                            materialId: SRC/SOURCE/001
                            minimumResolution: HD
                            hdrRequired: false
                            requiredAudioTrackLanguageTags:
                              - sv-SE
                              - fi-FI
                              - da-DK
                              - nb-NO
                            requiredSubtitleLanguageTags:
                              - sv-SE
                              - fi-FI
                              - da-DK
                              - nb-NO
                            expectedAncillaryFiles:
                              - type: Image
                                description: Portrait poster image
                          supplier:
                            name: Supplier1
                            email: contact@supplier1.com
                            telephone: "+442075551234"
                            contractedDeliveryDate: "2026-06-10T00:00:00Z"
                            comments: Free text
              ContentPrep (feature basic):
                summary: ContentPrep (feature basic)
                value:
                  type: ContentPrep
                  requestId: abc123-client-assigned-external-id
                  description: Content Prep (Feature) basic example with auto conform (segmentation provided by RBM). No specific AutoConform object required in this instance.
                  deadline: "2026-06-01T00:00:00Z"
                  costLocation: location1
                  jobDetails:
                    targetAssetGroup: client-ag-1
                    instructions: Free text
                    outputResolution: HD
                    identifiers:
                      materialId: TST/TEST/001
                      alternateId: TEST001
                    content:
                      contentType: Feature
                      contentCategory: Acquired
                    editorial:
                      title: Feature Title
                    durations:
                      expectedSourceDuration: "01:35:00:00"
                      targetDuration: "01:20:00:00"
                      negativeTargetDurationTolerance: "00:00:02:00"
                      positiveTargetDurationTolerance: "00:00:01:00"
                    clientSpecific:
                      modelName: "clientName:contentPrep"
                      details:
                        clientSpecificProperty1: ""
                        clientSpecificProperty2: 0
                        clientSpecificProperty3: []
                        clientSpecificChildObject1: {}
                    qualityControl:
                      aqcRequired: true
                      aqcType: Custom
                      aqcCustomProfile: CustomProfile1
                      manualQcRequired: true
                      manualQcType: FullHiResQCWithLogging
                    nested:
                      - workflowName: ChaseMedia
                        details:
                          instructions: Some instructions
                          source:
                            materialId: SRC/SOURCE/001
                            minimumResolution: HD
                            hdrRequired: false
                            requiredAudioTrackLanguageTags:
                              - sv-SE
                              - fi-FI
                              - da-DK
                              - nb-NO
                            requiredSubtitleLanguageTags:
                              - sv-SE
                              - fi-FI
                              - da-DK
                              - nb-NO
                            expectedAncillaryFiles:
                              - type: Image
                                description: Portrait poster image
                          supplier:
                            name: Supplier1
                            email: contact@supplier1.com
                            telephone: "+442075551234"
                            contractedDeliveryDate: "2026-06-10T00:00:00Z"
                            comments: Free text
              SubtitlePrep (RBM supplied editorial):
                summary: SubtitlePrep (RBM supplied editorial)
                value:
                  type: SubtitlePrep
                  requestId: abc123
                  description: Subtitle prep example
                  deadline: "2026-06-01T00:00:00Z"
                  costLocation: location1
                  jobDetails:
                    translationAgency: TA
                    versionType: Original
                    originalLanguageTag: en-GB
                    orderType: New
                    expectedLength: "01:00:00:00"
                    targetFileBaseName: TST_TEST_001
                    comments: Free text
                    clientSpecific:
                      modelName: "clientName:subtitlePrep"
                      details:
                        clientSpecificProperty1: ""
                        clientSpecificProperty2: 0
                        clientSpecificProperty3: []
                        clientSpecificChildObject1: {}
                    source:
                      materialId: TST/TEST/001
                    languages:
                      - targetLanguageTag: sv-SE
                        targetMaterialId: " TST/TEST/001"
                        targetFileBaseNameSuffix: "-SWEDISH"
                        subtitleType: Open
                        subtitleFormats:
                          - "890"
                          - ebu-stl
                          - pac
                      - targetLanguageTag: da-DK
                        targetMaterialId: " TST/TEST/001"
                        targetFileBaseNameSuffix: "-DANISH"
                        subtitleType: Open
                        subtitleFormats:
                          - "890"
                          - ebu-stl
                          - pac
              SubtitlePrep (client supplied editorial):
                summary: SubtitlePrep (client supplied editorial)
                value:
                  type: SubtitlePrep
                  requestId: abc123
                  description: Subtitle prep example
                  deadline: "2026-06-01T00:00:00Z"
                  costLocation: location1
                  jobDetails:
                    translationAgency: TA
                    versionType: Original
                    originalLanguageTag: en-GB
                    orderType: New
                    expectedLength: "01:00:00:00"
                    targetFileBaseName: TST_TEST_001
                    comments: Free text
                    editorial:
                      title: Main title of a single programme/feature
                      productionTitle: Production title of a single programme/feature
                      domesticTitle: Domestic title of a single programme/feature
                      seriesTitle: Main title of a series
                      seriesProductionTitle: Production title of a series
                      seriesDomesticTitle: Domestic title of a series
                      episodeTitle: Main title of an episode
                      episodeProductionTitle: Production title of an episode
                      episodeDomesticTitle: Domestic title of an episode
                      episodeRunOrder: 1
                      episodeProductionOrder: 1
                      seasonNumberOfEpisodes: 8
                      productionCode: S01E01
                      originalReleaseDate: "2019-12-02"
                      primaryLanguageTag: sv-SE
                      additionalLanguageTags:
                        - en-GB
                        - ja-JP
                    clientSpecific:
                      modelName: "clientName:subtitlePrep"
                      details:
                        clientSpecificProperty1: ""
                        clientSpecificProperty2: 0
                        clientSpecificProperty3: []
                        clientSpecificChildObject1: {}
                    source:
                      materialId: TST/TEST/001
                    languages:
                      - targetLanguageTag: sv-SE
                        targetMaterialId: " TST/TEST/001"
                        targetFileBaseNameSuffix: "-SWEDISH"
                        subtitleType: Open
                        subtitleFormats:
                          - "890"
                          - ebu-stl
                          - pac
                      - targetLanguageTag: da-DK
                        targetMaterialId: " TST/TEST/001"
                        targetFileBaseNameSuffix: "-DANISH"
                        subtitleType: Open
                        subtitleFormats:
                          - "890"
                          - ebu-stl
                          - pac
              VOD-Create:
                summary: VOD-Create
                value:
                  type: VOD-Create
                  variant: vod-platform-xyz
                  requestId: abc123
                  description: VoD create workorder video only
                  deadline: "2026-01-01T00:00:00Z"
                  jobDetails:
                    sourceAssetGroup: client-ag-1
                    profileId: vod-profile
                    platformId: vod-platform
                    aspectRatio: 16x9
                    resolution: HD
                    materialGroups:
                      - materialGroupId: programme
                        materialItems:
                          - materialId: "1234"
                            sof: "00:00:00:00"
                            trackType: AV
                            language: sv-SE
                            ratings:
                              type: array
                              items:
                              $ref: "#/components/schemas/VODCreateRatings"
                              description: array length <= 5
                    segmentation:
                      - som: "00:01:00:00"
                        duration: "00:07:00:00"
                        order: 1
                        description: programme
                        materialGroupId: programme
                      - som: "00:10:00:00"
                        duration: "00:11:00:00"
                        order: 2
                        description: programme
                        materialGroupId: programme
                        pointsOfInterest:
                          - name: outOptionalBreak
                            timecode: "00:16:00:00"
                          - name: startOfEndCredits
                            timecode: "00:20:00:00"
                          - name: endOfEndCredits
                            timecode: "00:20:59:24"
              VOD-Revoke:
                summary: VOD-Revoke
                value:
                  type: VOD-Revoke
                  requestId: abc123
                  description: VoD Revoke workorder
                  deadline: "2099-01-01T00:00:00Z"
                  jobDetails:
                    sourceAssetGroup: client-ag-1
                    profileId: vod-profile
                    platformId: vod-platform
                    materialGroups:
                      - materialGroupId: programme
                        materialItems:
                          - materialId: "1234"
                            sof: "00:00:00:00"
                            trackType: AV
                            language: sv-SE
              PurgeAssets:
                summary: PurgeAssets
                value:
                  type: PurgeAssets
                  requestId: abc123
                  description: PurgeAssets example
                  deadline: "2026-06-01T00:00:00Z"
                  costLocation: location1
                  jobDetails:
                    assetGroup: client-ag-1
                    purgeList:
                      - materialId: TST/TEST/001
                      - cmppId: "cmpp:a:id:1234567"
              Purge-Asset-Routine:
                summary: Purge-Asset-Routine
                value:
                  type: Purge-Asset-Routine
                  requestId: abc123
                  description: Purge a single Asset - routine action
                  deadline: "2026-12-30T00:00:00Z"
                  costLocation: location1
                  jobDetails:
                    identifiers:
                      materialId: TST/TEST/001
              Purge-Asset-File-Emergency:
                summary: Purge-Asset-File-Emergency
                value:
                  type: Purge-Asset-File-Emergency
                  requestId: abc123
                  description: Purge a single Asset File - emergency action
                  deadline: "2026-12-30T00:00:00Z"
                  costLocation: location1
                  jobDetails:
                    broadcastStatus: Ready for TX,
                    identifiers:
                      materialId: TEST/TEST/001
                      cmppId: cmpp:af:id:1234567
                      fileTag: Unique File Description/Tag
                    clientSpecific:
                      details:
                        clientSpecificChildObject1:
                          clientIdentifiers:
                            mediaAssetId: 2489480124000,
                            videoComponentId: 2489480228000,
                            audioComponentId: 2489480231000,
                            audioDescComponentId: 2489480261000,
                            subtitlingHiComponentId: 2489480251000,
                            subtitlingNlComponentId: 2489480251000,
                            mediaLabel: NPO1_CLN_____-RBM10000000071
      responses:
        "202":
          $ref: "#/components/responses/WorkOrderAcceptedResponse"
        "400":
          $ref: "#/components/responses/WorkOrderBadRequestResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "415":
          $ref: "#/components/responses/UnsupportedMediaTypeResponse"
        "500":
          $ref: "#/components/responses/ISEResponse"
  "/workorders/{id}":
    get:
      tags:
        - Work Orders
      summary: Get work order body
      description: Get work order body (current with all updates applied)
      parameters:
        - name: id
          in: path
          description: work order ID
          required: true
          schema:
            type: string
      responses:
        "200":
          $ref: "#/components/responses/WorkOrderBodyResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "500":
          $ref: "#/components/responses/ISEResponse"
    patch:
      tags:
        - Work Orders
      summary: Request work order update
      description: Request that an update (json patch document) is applied to a work order
      parameters:
        - name: id
          in: path
          description: work order ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: "#/components/schemas/JsonMergePatchDocument"
          application/json-patch+json:
            schema:
              $ref: "#/components/schemas/JsonPatchDocument"
      responses:
        "202":
          $ref: "#/components/responses/UpdateAcceptedResponse"
        "400":
          $ref: "#/components/responses/BadRequestResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "403":
          $ref: "#/components/responses/WorkOrderUpdateDeclinedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "500":
          $ref: "#/components/responses/ISEResponse"
  "/workorders/{id}/workflow":
    get:
      tags:
        - Work Orders
      summary: Get workflow summary for the work order
      description: Get workflow summary by work order ID
      parameters:
        - name: id
          in: path
          description: work order ID
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: "#/components/schemas/WorkflowSummary"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "500":
          $ref: "#/components/responses/ISEResponse"
  "/workorders/{id}/cancel":
    post:
      tags:
        - Work Orders
      summary: Request work order cancellation
      description: Request cancellation of a work order
      parameters:
        - name: id
          in: path
          description: work order ID
          required: true
          schema:
            type: string
      responses:
        "202":
          $ref: "#/components/responses/CancelAcceptedResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "403":
          $ref: "#/components/responses/WorkOrderCancelDeclinedResponse"
        "404":
          $ref: "#/components/responses/NotFoundResponse"
        "500":
          $ref: "#/components/responses/ISEResponse"
  /workflows:
    get:
      tags:
        - Workflows
      summary: Query workflow summaries
      description: Get workflow summaries filtered by query parameters
      parameters:
        - name: materialId
          in: query
          description: material ID (string length <= 255)
          example: TST/TEST/001
          schema:
            type: string
        - name: supplier
          in: query
          description: supplier name (string length <= 255)
          example: Supplier1
          schema:
            type: string
        - name: extId
          in: query
          description: ID optionally assigned by the client using 'requestId' in the initial work order submission request body (string length <= 36)
          example: abc123
          schema:
            type: string
        - name: name
          in: query
          description: workflow name (string length <= 50)
          example: Ingest
          schema:
            type: string
        - name: status
          in: query
          description: status of the workflow resulting from work order submission
          example: In Progress
          schema:
            $ref: "#/components/schemas/WorkflowStatus"
        - name: minDue
          in: query
          description: "ISO 8601 date in the format 'yyyy-MM-ddTHH:mm:ssZ'"
          example: "2019-08-16T00:00:00Z"
          schema:
            type: string
            format: date
        - name: maxDue
          in: query
          description: "ISO 8601 date in the format 'yyyy-MM-ddTHH:mm:ssZ'"
          example: "2019-08-16T00:00:00Z"
          schema:
            type: string
            format: date
        - name: minCreated
          in: query
          description: "ISO 8601 date in the format 'yyyy-MM-ddTHH:mm:ssZ'"
          example: "2019-08-16T00:00:00Z"
          schema:
            type: string
            format: date
        - name: maxCreated
          in: query
          description: "ISO 8601 date in the format 'yyyy-MM-ddTHH:mm:ssZ'"
          example: "2019-08-16T00:00:00Z"
          schema:
            type: string
            format: date
        - name: minModified
          in: query
          description: "ISO 8601 date in the format 'yyyy-MM-ddTHH:mm:ssZ'"
          example: "2019-08-16T00:00:00Z"
          schema:
            type: string
            format: date
        - name: maxModified
          in: query
          description: "ISO 8601 date in the format 'yyyy-MM-ddTHH:mm:ssZ'"
          example: "2019-08-16T00:00:00Z"
          schema:
            type: string
            format: date
        - name: csa
          in: query
          description: custom searchable attribute (can be included multiple times) - usage e.g. 'csa.alternateId=TEST001'
          example: TEST001
          schema:
            type: string
        - name: limit
          in: query
          description: limits the number of returned items
          schema:
            type: integer
        - name: offset
          in: query
          description: offset of returned items (start from index)
          schema:
            type: integer
      responses:
        "200":
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: "#/components/schemas/WorkflowSummaryListResponseBody"
        "400":
          $ref: "#/components/responses/BadRequestParamsResponse"
        "401":
          $ref: "#/components/responses/UnauthorizedResponse"
        "500":
          $ref: "#/components/responses/ISEResponse"
components:
  responses:
    ExternalWorkOrderNotificationOkResponse:
      description: Ok
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ExternalWorkOrderNotificationOkResponseBody"
    ExternalWorkOrderRejectOkResponse:
      description: Ok
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ExternalWorkOrderRejectOkResponseBody"
    AssetListResponse:
      description: Ok
      content:
        application/hal+json:
          schema:
            $ref: "#/components/schemas/AssetListResponseBody"
    WorkOrderAcceptedResponse:
      description: Accepted
      content:
        application/hal+json:
          schema:
            $ref: "#/components/schemas/WorkOrderAcceptedResponseBody"
    WorkOrderUpdateDeclinedResponse:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponseBody"
          example:
            errorType: Update
            message:
              error: Work order update request rejected. The work order cannot be updated at this time
    WorkOrderCancelDeclinedResponse:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponseBody"
          example:
            errorType: Cancellation
            message:
              error: Work order cancellation request rejected. The work order cannot be cancelled at this time
    WorkOrderBodyResponse:
      description: OK
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/WorkOrderMainBody"
    OkMessageResponse:
      description: OK
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/StandardMessageResponseBody"
    UpdateAcceptedResponse:
      description: Accepted
      content:
        application/hal+json:
          schema:
            $ref: "#/components/schemas/WorkOrderUpdateAcceptedResponseBody"
    CancelAcceptedResponse:
      description: Accepted
      content:
        application/hal+json:
          schema:
            $ref: "#/components/schemas/WorkOrderCancelAcceptedResponseBody"
    WorkOrderBadRequestResponse:
      description: Invalid request parameters/payload
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/WorkOrderErrorResponseBody"
    NotFoundResponse:
      description: Not found
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponseBody"
          example:
            errorType: Repository
            message:
              error: Resource not found
    ForbiddenResponse:
      description: The action is forbidden
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponseBody"
          example:
            errorType: Forbidden
            message:
              error: Permission to perform this action has been denied
    UnauthorizedResponse:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponseBody"
          example:
            errorType: Authorisation
            message:
              error: Authorisation failure resulted in an explicit deny
    ISEResponse:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponseBody"
          example:
            errorType: ISE
            message:
              error: An unexpected error has occurred
    BadRequestResponse:
      description: Invalid request parameters/payload
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponseBody"
          example:
            errorType: Validation
            message:
              error: Failed to unmarshal JSON
    BadRequestParamsResponse:
      description: Invalid request parameters/payload
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponseBody"
          example:
            errorType: Validation
            message:
              error: "'badParam' is not a valid parameter."
    UnsupportedMediaTypeResponse:
      description: Unsupported media type
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponseBody"
          example:
            errorType: Unsupported
            message:
              error: Provided MIME type not supported by endpoint
    APIStatusResponse:
      description: API status
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/APIStatusResponseBody"
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    ExternalWorkOrderNotificationMainBody:
      type: object
      properties:
        type:
          $ref: "#/components/schemas/ExternalWorkOrderNotificationTypes"
        details:
          type: object
          oneOf:
            - $ref: "#/components/schemas/ExternalWorkOrderNotificationDetailsSubtitleDelivered"
            - $ref: "#/components/schemas/ExternalWorkOrderNotificationDetailsException"
          description: data required for processing the notification
      required:
        - type
        - details
    ExternalWorkOrderRejectBody:
      type: object
      properties:
        message:
          type: string
          description: message describing the reason for rejection (string length <= 255 chars)
          example: Some reason for work order rejection
        sender:
          type: string
          description: name of person whom rejected the work order (string length <= 255 chars)
          example: John Doe
    WorkOrderMainBody:
      type: object
      properties:
        type:
          $ref: "#/components/schemas/WorkOrderTypes"
        variant:
          type: string
          description: optional work order variant (string length <= 36 chars).
          example: clientx-cpwo-av
        requestId:
          type: string
          description: optional client-assigned request ID (string length <= 36 chars)
          example: abc123
        description:
          type: string
          description: optional work order description (string length <= 255 chars)
          example: Some description
        deadline:
          type: string
          description: ISO 8601 required by datetime
          format: date-time
          example: "2026-06-01T00:00:00Z"
        costLocation:
          type: string
          description: cost location to which the work order should be charged (string length <= 255 chars)
          example: location1
        jobDetails:
          type: object
          oneOf:
            - $ref: "#/components/schemas/ReviewAndExportJobDetails"
            - $ref: "#/components/schemas/ContentPrepJobDetails"
            - $ref: "#/components/schemas/SubtitlePrepJobDetails"
            - $ref: "#/components/schemas/VOD-CreateJobDetails"
            - $ref: "#/components/schemas/VOD-RevokeJobDetails"
            - $ref: "#/components/schemas/PurgeAssetsJobDetails"
            - $ref: "#/components/schemas/Purge-Asset-RoutineJobDetails"
            - $ref: "#/components/schemas/PurgeAssetFileEmergencyJobDetails"
            - $ref: "#/components/schemas/SecondaryRecordingJobDetails"
          description: data required for processing the work order
      required:
        - type
        - deadline
        - jobDetails
    PurgeAssetsJobDetails:
      type: object
      properties:
        assetGroup:
          type: string
          description: asset group name (string length <= 255 chars)
          example: client-ag-1
        purgeList:
          type: array
          description: list of items to be purged (array length <= 100 items)
          items:
            $ref: "#/components/schemas/PurgeItem"
      required:
        - assetGroup
        - purgeList
    Purge-Asset-RoutineJobDetails:
      type: object
      properties:
        clientSpecific:
          $ref: "#/components/schemas/PurgeAssetRoutineClientSpecific"
        identifiers:
          $ref: "#/components/schemas/PurgeAssetRoutineIdentifiers"
      required:
        - identifiers
    PurgeAssetRoutineClientSpecific:
      type: object
      properties:
        modelName:
          type: string
          description: name of the model used for metadata validation
          example: "clientName:modelName"
        details:
          $ref: "#/components/schemas/PurgeAssetRoutineClientSpecificDetails"
    PurgeAssetRoutineClientSpecificDetails:
      type: object
      description: customisable client specific details object for expanded functionality
      properties:
        externalReference:
          $ref: "#/components/schemas/PurgeAssetRoutineClientSpecificExternalReferenceExample"
        clientSpecificProp1:
          type: string
        clientSpecificProp2:
          type: integer
        clientSpecificProp3:
          type: array
          description: allowed maximum 10 items in the array
          items:
            type: string
        clientSpecificChildObject1:
          type: object
          description: must be smaller than 1024 bytes
    PurgeAssetRoutineClientSpecificExternalReferenceExample:
      type: object
      description: Client specific external reference object
      properties:
        mediaExternalReference:
          type: string
          description: External Media reference
        programExternalReference:
          type: string
          description: "External Program reference"
    PurgeAssetRoutineIdentifiers:
      type: object
      properties:
        materialId:
          type: string
          description: material ID of the target content - it must exist in the target cmpp asset group (string length between 1-255 chars)
          example: TST/TEST/001
        alternateId:
          type: string
          description: alternative ID of the destination content (string length <= 255 chars)
          example: TEST001
      required:
        - materialId
    PurgeAssetFileEmergencyJobDetails:
      type: object
      properties:
        broadcastStatus:
          type: string
          enum:
            - Not for TX
            - Ready for TX
            - Not Ready for TX
        clientSpecific:
          $ref: "#/components/schemas/PurgeAssetFileEmergencyClientSpecific"
        identifiers:
          $ref: "#/components/schemas/PurgeAssetFileEmergencyIdentifiers"
      required:
        - identifiers
    PurgeAssetFileEmergencyClientSpecific:
      type: object
      properties:
        modelName:
          type: string
          description: name of the model used for metadata validation
          example: "clientName:modelName"
        details:
          $ref: "#/components/schemas/PurgeAssetFileEmergencyClientSpecificDetails"
    PurgeAssetFileEmergencyClientSpecificDetails:
      type: object
      description: customisable client specific details object for expanded functionality
      properties:
        externalReference:
          $ref: "#/components/schemas/PurgeAssetFileEmergencyClientSpecificExternalReferenceExample"
        clientSpecificProp1:
          type: string
        clientSpecificProp2:
          type: integer
        clientSpecificProp3:
          type: array
          description: allowed maximum 10 items in the array
          items:
            type: string
        clientSpecificChildObject1:
          type: object
          description: must be smaller than 1024 bytes
    PurgeAssetFileEmergencyClientSpecificExternalReferenceExample:
      type: object
      description: Client specific external reference object
      properties:
        mediaExternalReference:
          type: string
          description: External Media reference
        programExternalReference:
          type: string
          description: "External Program reference"
    PurgeAssetFileEmergencyIdentifiers:
      type: object
      properties:
        materialId:
          type: string
          description: material ID of the target content - it must exist in the target cmpp asset group (string length between 1-255 chars)
          example: TST/TEST/001
        fileTag:
          type: string
          description: file tag of the target content
          example: Unique File Description/Tag
        cmppId:
          type: string
          description: cmpp id of the target content
          example: cmpp:af:id:1234567
      required:
        - materialId
    VOD-CreateJobDetails:
      type: object
      properties:
        sourceAssetGroup:
          type: string
          description: source asset group name (string length <= 255 chars)
          example: client-ag-1
        profileId:
          type: string
          description: identifier of the transcode/packaging profile to be applied during processing (string length <= 255 chars)
          example: profile1
        platformId:
          type: string
          description: identifier of the platform to which the output file(s) will be delivered (string length <= 255 chars)
          example: profile1
        aspectRatio:
          $ref: "#/components/schemas/AspectRatio"
        resolution:
          $ref: "#/components/schemas/VideoResolution"
        audioType:
          $ref: "#/components/schemas/AudioLayoutDescriptor"
        checksumAlgorithm:
          type: array
          description: checksum algorithm(s) to be applied to the target asset(s) (array length <= 4 items)
          items:
            type: string
          example:
            - MD5
            - SHA1
            - XOR-MD5
            - XOR-SHA1
        targetFileName:
          type: string
          description: target file name for the created file(s) (string length <= 255 chars)
          example: abc123
        drm:
          type: boolean
          description: is DRM required
        subtitles:
          type: boolean
          description: are subtitles required
        metadataOnly:
          type: boolean
          description: is optional field
        txWaitRequired:
          type: boolean
          description: optional field specifies whether to wait for TX asset or not
        alternateAudio:
          $ref: "#/components/schemas/VODAlternateAudio"
        licence:
          type: array
          items:
            $ref: "#/components/schemas/VOD-Licence"
          description: array length <= 30
        clientSpecific:
          $ref: "#/components/schemas/VODCreateClientSpecific"
        materialGroups:
          type: array
          items:
            $ref: "#/components/schemas/VODMaterialGroup"
        segmentation:
          type: array
          items:
            $ref: "#/components/schemas/VODSegmentation"
        ancillaryFiles:
          type: array
          items:
            $ref: "#/components/schemas/VODAncillaryFile"
          description: ancillary files to be sourced as part of the VOD processing
      required:
        - profileId
        - platformId
        - materialGroups
    VODAncillaryFile:
      type: object
      properties:
        name:
          type: string
          description: the type of ancillary file (string length <= 255 chars)
        uri:
          type: string
          description: uri from which the ancillary file can be collected (string length <= 1024 chars)
      required:
        - name
        - uri
    VODAlternateAudio:
      type: object
      properties:
        languageDub:
          type: boolean
          description: is language dub included in the target file(s)
        audioDescription:
          type: boolean
          description: is audio description included in the target file(s)
    VODMaterialGroup:
      type: object
      properties:
        materialGroupId:
          type: string
          description: identifier for the material group allowing source assets to be grouped (string length <= 255 chars)
          example: programme
        materialItems:
          type: array
          items:
            $ref: "#/components/schemas/VODMaterialItem"
          description: items to be included within the material group
      required:
        - materialGroupId
        - materialItems
    VODMaterialItem:
      type: object
      properties:
        materialId:
          type: string
          description: material ID of the source material (string length between 1-255 chars)
          example: TST/TEST/001
        sof:
          type: string
          description: start of file SMPTE timecode
          example: "09:59:59:30"
        trackType:
          $ref: "#/components/schemas/MediaTrackType"
        language:
          type: string
          description: "tag of main language used throughout the material (ISO 639-1 'sv', ISO 639-3 'swe', RFC 5646 'sv-SE')"
          example: sv-SE
        fileSubType:
          type: string
          description: "subtitle type ('Accessibility' | 'Translation' | 'Upmix' | 'Commentary')"
          example: Accessibility
        ratings:
          type: array
          items:
            $ref: "#/components/schemas/VODCreateRatings"
          description: material utem ratings
      required:
        - materialId
        - trackType
    VODSegmentation:
      type: object
      properties:
        materialGroupId:
          type: string
          description: links the segment to the material group which contains the source material items
          example: programme
        som:
          type: string
          description: start of media SMPTE timecode
          example: "09:59:59:30"
        duration:
          type: string
          description: duration SMPTE timecode
          example: "00:34:59:24"
        order:
          type: integer
          description: order of the segment
          example: 0
        description:
          type: string
          description: description of the segment (string length <= 255 chars)
          example: Some description
        pointsOfInterest:
          type: array
          items:
            $ref: "#/components/schemas/VODPointsOfInterest"
          description: points of interest within the segment
      required:
        - som
        - duration
        - order
        - materialGroupId
    VODPointsOfInterest:
      type: object
      properties:
        name:
          type: string
          description: name of the point of interest marker (string length <= 255 chars)
          example: StartOfEndCredits
        timecode:
          type: string
          description: absolute SMPTE timecode
          example: "10:20:00:00"
      required:
        - name
        - timecode
    Licence:
      type: object
      properties:
        licenceType:
          $ref: "#/components/schemas/LicenceType"
        licenceStart:
          type: string
          format: date-time
          description: ISO 8601 datetime of licence start
          example: "2026-06-01T00:00:00Z"
        licenceEnd:
          type: string
          format: date-time
          description: ISO 8601 datetime of licence end
          example: "2030-06-01T00:00:00Z"
        firstExhibition:
          type: string
          format: date-time
          description: ISO 8601 datetime of first exhibition (next exhibition at time of work order submission)
          example: "2026-06-01T08:00:00Z"
        region:
          type: string
          description: Licence region, (string length <= 30 chars)
          example: Europe, Middle East, France, United States of America, etc
        regionCode:
          type: string
          description: Licence region code, (string length <= 10 chars). Each region code can only occur once within the 'licence' object, no duplicate.
          example: EU, US, FR, DE, etc
    VOD-Licence:
      type: object
      properties:
        licenceType:
          $ref: "#/components/schemas/VOD-LicenceType"
        licenceStart:
          type: string
          format: date-time
          description: ISO 8601 datetime of licence start
          example: "2026-06-01T00:00:00Z"
        licenceEnd:
          type: string
          format: date-time
          description: ISO 8601 datetime of licence end
          example: "2030-06-01T00:00:00Z"
        firstExhibition:
          type: string
          format: date-time
          description: ISO 8601 datetime of first exhibition (next exhibition at time of work order submission)
          example: "2026-06-01T08:00:00Z"
        regionCode:
          type: string
          description: Licence region code, (string length <= 10 chars). Each region code can only occur once within the 'licence' object, no duplicate.
          example: SE, EN, DE, FR
    LicenceType:
      type: string
      description: the type of licence data
      enum:
        - TX
        - OTT
        - VOD-CATCHUP
        - VOD-ARCHIVE
    VOD-LicenceType:
      type: string
      description: the type of licence data
      enum:
        - OTT
        - VOD-CATCHUP
        - VOD-ARCHIVE
    VOD-RevokeJobDetails:
      type: object
      properties:
        sourceAssetGroup:
          type: string
          description: source asset group name (string length <= 255 chars)
          example: client-ag-1
        profileId:
          type: string
          description: identifier of the transcode/packaging profile (string length <= 255 chars)
          example: profile1
        platformId:
          type: string
          description: identifier of the platform to which the output file(s) is delivered (string length <= 255 chars)
          example: profile1
        materialGroups:
          type: array
          items:
            $ref: "#/components/schemas/VODRevokeMaterialGroup"
        licence:
          type: array
          items:
            $ref: "#/components/schemas/VODRevoke-Licence"
          description: array length <= 30
      required:
        - profileId
        - platformId
        - materialGroups
    VODRevoke-Licence:
      type: object
      properties:
        licenceType:
          $ref: "#/components/schemas/VODRevoke-LicenceType"
        licenceStart:
          type: string
          format: date-time
          description: ISO 8601 datetime of licence start
          example: "2026-06-01T00:00:00Z"
        licenceEnd:
          type: string
          format: date-time
          description: ISO 8601 datetime of licence end
          example: "2030-06-01T00:00:00Z"
        firstExhibition:
          type: string
          format: date-time
          description: ISO 8601 datetime of first exhibition (next exhibition at time of work order submission)
          example: "2026-06-01T08:00:00Z"
    VODRevoke-LicenceType:
      type: string
      description: the type of licence data
      enum:
        - OTT
        - VOD-CATCHUP
        - VOD-ARCHIVE
    VODRevokeMaterialGroup:
      type: object
      properties:
        materialGroupId:
          type: string
          description: identifier for the material group containing source assets (string length <= 255 chars)
          example: programme
        materialItems:
          type: array
          items:
            $ref: "#/components/schemas/VODRevokeMaterialItem"
          description: items included within the material group
      required:
        - materialGroupId
        - materialItems
    VODRevokeMaterialItem:
      type: object
      properties:
        materialId:
          type: string
          description: material ID of the source material (string length between 1-255 chars)
          example: TST/TEST/001
        sof:
          type: string
          description: start of file SMPTE timecode
          example: "09:59:59:30"
        trackType:
          $ref: "#/components/schemas/MediaTrackType"
        languageTag:
          type: string
          description: "tag of main language used throughout the material (ISO 639-1 'sv', ISO 639-3 'swe', RFC 5646 'sv-SE')"
          example: sv-SE
      required:
        - materialId
        - trackType
    SecondaryRecordingJobDetails:
      type: object
      properties:
        materialId:
          type: string
          description: material ID (string length between 1-255 chars)
          example: TST/TEST/001
        title:
          type: string
          description: content title (string length <= 255 chars)
          example: The Title
        versionKey:
          type: string
          description: optional shared version key in case recording spans multiple files (string length <= 255 chars)
          example: "123456"
        assetGroup:
          type: string
          description: asset group name (string length <= 255 chars)
          example: client-ag-1
        channel:
          type: string
          description: channel name (string length <= 255 chars)
          example: CH1
        archive:
          type: boolean
          description: indicates whether recorded files are to be stored in the client's asset repository
        expectedSegments:
          type: integer
          description: number of expected segments to be recorded
        mediaCount:
          type: integer
          description: number of files to be recorded and collected
        filesToCollect:
          type: array
          description: file names of the files to be collected after recording is complete
          items:
            type: string
        destinations:
          type: array
          description: pre-configured delivery destinations
          items:
            type: string
      required:
        - materialId
        - assetGroup
        - archive
        - mediaCount
        - filesToCollect
      description: SecondaryRecording work orders are available to specific schedule integrations only
    ReviewAndExportJobDetails:
      type: object
      properties:
        sourceAssetGroup:
          type: string
          description: asset group name (string length <= 255 chars)
          example: client-ag-1
        deliveryDestinations:
          $ref: "#/components/schemas/DeliveryDestinations"
        deliverSidecar:
          type: boolean
          description: request delivery of sidecar xml to destinations
        deliverAqcReport:
          type: boolean
          description: request delivery of aqc report to destinations
        comments:
          type: string
          description: comments related to the review and export process (string length <= 1024 chars)
          example: Some comments
        source:
          $ref: "#/components/schemas/Source"
        requiredAssetFiles:
          type: array
          description: array length <= 20 items
          items:
            $ref: "#/components/schemas/RequiredAssetFiles"
        qualityControl:
          $ref: "#/components/schemas/QualityControl"
        clientSpecific:
          type: object
          properties:
            modelName:
              type: string
              description: name of the model used for metadata validation
              example: "clientName:modelName"
            details:
              $ref: "#/components/schemas/ReviewAndExportClientSpecificDetails"
      required:
        - deliveryDestinations
        - source
    Source:
      type: object
      properties:
        materialId:
          type: string
          description: material ID of the source asset (string length between 1-255 chars)
          example: TST/TEST/001
        cmppId:
          type: string
          description: cmpp ID of the source asset if known
          example: "cmpp:a:id:1234567"
      required:
        - materialId
    ChaseMediaSource:
      type: object
      properties:
        fileName:
          type: string
          description: name of the source file if known (string length <= 255 chars)
        materialId:
          type: string
          description: material ID of the source file if known (string length <= 255 chars)
          example: TST/TEST/001
        cmppId:
          type: string
          description: cmpp ID of the source asset if known - can be used where an existing cmpp asset is the source
          example: "cmpp:a:id:1234567"
        minimumResolution:
          $ref: "#/components/schemas/VideoResolution"
        hdrRequired:
          type: boolean
          description: is high dynamic range required
        hdrStandard:
          $ref: "#/components/schemas/HDRStandard"
        requiredAudioTrackLanguageTags:
          type: array
          items:
            type: string
            description: "tags of dedicated language tracks required on source (ISO 639-1 'sv', ISO 639-3 'swe', RFC 5646 'sv-SE') (array length <= 50)"
            example:
              - sv-SE
              - fi-FI
              - da-DK
              - nb-NO
        requiredSubtitleLanguageTags:
          type: array
          items:
            type: string
            description: "tags of subtitle languages to be provided by supplier - if unavailable from supplier then a SubtitlePrep work order is also required in order to create the required subtitle files (ISO 639-1 'sv', ISO 639-3 'swe', RFC 5646 'sv-SE') (array length <= 50)"
            example:
              - sv-SE
              - fi-FI
              - da-DK
              - nb-NO
        expectedAncillaryFiles:
          type: array
          items:
            $ref: "#/components/schemas/ChaseMediaExpectedAncillaryFile"
          description: ancillary files to be provided alongside source video if available (array length <= 50 items)
        tape:
          $ref: "#/components/schemas/TapeMedia"
    AutoConformNestedDetails:
      type: object
      description: define segmentation to be used during conform stage
      properties:
        segments:
          type: array
          items:
            $ref: "#/components/schemas/Segment"
          description: auto conform segmentation data (array length <= 100 items)
      required:
        - segments
    PostProductionNestedDetails:
      type: object
      description: details required for post production processes
      properties:
        source:
          $ref: "#/components/schemas/PostProductionSource"
        editType:
          type: string
          description: type of edit to be performed
          example: Simple
          enum:
            - Simple
            - Complex
            - Compliance
            - VoiceOver
        instructions:
          type: string
          description: instructions for the Post Production User Task (string length <= 1024 chars)
          example: Some instructions
        comments:
          type: string
          description: comments related to the Post Production User Task (string length <= 1024 chars)
          example: Some comments
        compliance:
          type: object
          properties:
            notes:
              type: string
              description: compliance notes (string length <= 1024 chars)
              example: Some notes
            complianceCategories:
              type: array
              description: "compliance categories that the content falls into (array length <= 50 items, each string length <= 50 chars)"
              items:
                type: string
              example:
                - Offensive language
                - Nudity
            watershed:
              type: string
              description: pre or post watershed air time
              example: Post
              enum:
                - Pre
                - Post
            pointsOfInterest:
              type: array
              description: compliance points of interest (array length <= 200)
              items:
                $ref: "#/components/schemas/CompliancePointsOfInterest"
      required:
        - editType
    PostProductionSource:
      type: object
      properties:
        materialId:
          type: string
          description: material ID of the source file if known (string length <= 255 chars)
          example: TST/TEST/001
    EpisodeIngestNestedDetails:
      type: object
      description: describes parameters about how to ingest an episode. Note, either of SeriesIngest or EpisodeIngest is allowed in a workorder.
      properties:
        instructions:
          type: string
          description: instructions for the episode ingest (string length <= 1024 chars)
          example: Some instructions
        supplier:
          $ref: "#/components/schemas/Supplier"
        technical:
          $ref: "#/components/schemas/NestedEpisodeTechnical"
        ancillary:
          $ref: "#/components/schemas/NestedEpisodeAncillary"
      example:
        workflowName: EpisodeIngest
        details:
          instructions: Some instructions
          supplier:
            name: Supplier1
            email: contact@supplier1.com
            listOfEmails:
              [
                contact@supplier1.com,
                contact@supplier2.com,
                contact@supplier3.com,
              ]
            telephone: "+442075551234"
            contractedDeliveryDate: "2026-06-10T00:00:00Z"
            comments: Free text
        technical:
          mediaFileName: filename.mxf
    SeriesIngestNestedDetails:
      type: object
      description: describes parameters about how to ingest a series. Note, either of SeriesIngest or EpisodeIngest is allowed in a workorder.
      properties:
        instructions:
          type: string
          description: instructions for the episode ingest (string length <= 1024 chars)
          example: Some instructions
        supplier:
          $ref: "#/components/schemas/Supplier"
        ancillary:
          $ref: "#/components/schemas/NestedEpisodeAncillary"
        episodic:
          $ref: "#/components/schemas/NestedSeriesEpisodic"
      example:
        workflowName: EpisodeIngest
        details:
          instructions: Some instructions
          supplier:
            name: Supplier1
            email: contact@supplier1.com
            listOfEmails:
              [
                contact@supplier1.com,
                contact@supplier2.com,
                contact@supplier3.com,
              ]
            telephone: "+442075551234"
            contractedDeliveryDate: "2026-06-10T00:00:00Z"
            comments: Free text
        technical:
          mediaFileName: filename.mxf
    NestedEpisodeTechnical:
      type: object
      properties:
        mediaFileName:
          type: string
          description: media file name (string length <= 255 chars)
          example: new-episode.mxf
    NestedEpisodeAncillary:
      type: array
      items:
        $ref: "#/components/schemas/Ancillary"
      description: (array length <= 10)
    NestedSeriesEpisodic:
      type: object
      properties:
        seasonBatch:
          type: array
          items:
            $ref: "#/components/schemas/SeasonBatch"
          description: array length <= 10
    Ancillary:
      type: object
      properties:
        language:
          type: string
          description: "the language tag of the target subtitle file(s) (ISO 639-1 'sv', ISO 639-3 'swe', RFC 5646 'sv-SE')"
          example: sv-SE
        fileName:
          type: string
          description: name of the source file if known (string length <= 255 chars)
        fileType:
          type: string
          description: media file type (string length <= 20 chars)
          example: Subtitle
        fileDescription:
          type: string
          description: media file description (string length <= 255 chars)
          example: new-episode.mxf
        editorialLevel:
          type: string
          description: editorial level of episode (string length <= 20 chars)
          example: Episode, Series
        fileSubType:
          type: string
          description: File subtype (Accessibility | Translation | Upmix | Commentary)
          example: Accessibility, Translation
    SeasonBatch:
      type: object
      properties:
        id:
          type: string
          description: identifier of the season level editorial metadata (string length <= 255 chars)
          example: abc456
        runOrder:
          type: integer
          description: network season number
          example: 1
    CompliancePointsOfInterest:
      type: object
      properties:
        som:
          type: string
          description: start of media SMPTE timecode
          example: "10:02:46:04"
        category:
          type: string
          description: compliance category of the point of interest (string length <= 50 chars)
          example: Offensive language
        note:
          type: string
          description: note for the point of interest (string length <= 255 chars)
          example: A compliance note about this timecode
      required:
        - som
    TapeMedia:
      type: object
      description: media stored on a physical tape
      properties:
        tapeId:
          type: string
          description: identifier of the tape media (string length <= 255 chars)
          example: abc123
        tapeLocation:
          type: string
          description: physical location of the tape media (string length <= 255 chars)
          example: Stockholm XYZ
        comments:
          type: string
          description: comments related to the tape media (string length <= 1024 chars)
          example: Some comments
        segments:
          type: array
          items:
            $ref: "#/components/schemas/Segment"
          description: tape segmentation data if known (array length <= 100 items)
      required:
        - tapeId
        - tapeLocation
    Segment:
      type: object
      properties:
        som:
          type: string
          description: start of media SMPTE timecode
          example: "00:01:00:00"
        duration:
          type: string
          description: duration SMPTE timecode
          example: "00:20:00:00"
        order:
          type: integer
          description: order of the segment
          example: 0
        description:
          type: string
          description: description of the segment (string length <= 255 chars)
          example: Some description
      required:
        - som
        - duration
        - order
    ChaseMediaExpectedAncillaryFile:
      type: object
      properties:
        type:
          type: string
          description: type of ancillary file (string length <= 255 chars)
          example: Image
        description:
          type: string
          description: description of the ancillary file (string length <= 255 chars)
          example: Portrait poster image
      required:
        - description
    Supplier:
      type: object
      properties:
        name:
          type: string
          description: supplier name (string length <= 255 chars)
          example: Supplier1
        email:
          type: string
          description: supplier email (string length <= 255 chars)
          example: contact@supplier1.com
        listOfEmails:
          type: array
          description: supplier emails (array of strings with max 5 elements string length <= 255 chars)
          items:
            type: string
          example: [
              contact@supplier1.com
              contact@supplier2.com
              contact@supplier3.com,
            ]
        telephone:
          type: string
          description: supplier telephone number (string length <= 50 chars)
          example: "+442075551234"
        contractedDeliveryDate:
          type: string
          description: ISO 8601 contracted delivery datetime of the source media
          example: "2026-07-01T00:00:00Z"
        comments:
          type: string
          description: comments related to dealing with the supplier (string length <= 1024 chars)
          example: Some comments
      required:
        - name
    RequiredAssetFiles:
      type: object
      properties:
        afType:
          $ref: "#/components/schemas/CmppAssetFileType"
        afProfile:
          type: string
          description: asset file profile (string length <= 255 chars)
          example: png_poster_portrait
        cmppId:
          type: string
          description: cmpp ID of the source asset file if known
          example: "cmpp:af:id:1234567"
        language:
          type: string
          description: "language tag of the source asset file if applicable (ISO 639-1 'sv', ISO 639-3 'swe', RFC 5646 'sv-SE')"
          example: en-GB
    CmppAssetFileType:
      type: string
      description: cmpp asset file type
      example: Image
      enum:
        - Programme Master
        - Browse Video
        - Audio
        - Still Image
        - Metadata
        - Subtitles
    CmppContentType:
      type: string
      description: cmpp content type
      example: Programme
      enum:
        - Programme
        - Feature
        - Promotion
        - Interstitial
        - Commercial
        - Sponsorship
        - Undefined
    CmppContentSubType:
      type: string
      description: cmpp content sub type
      example: Episodic
      enum:
        - Single
        - Episodic
    ReviewAndExportClientSpecificDetails:
      type: object
      description: customisable client specific details object for expanded functionality
      properties:
        externalReference:
          $ref: "#/components/schemas/ReviewAndExportExternalReferenceExample"
    ReviewAndExportExternalReferenceExample:
      type: object
      description: Client specific external reference object
      properties:
        mediaExternalReference:
          type: string
          description: External Media reference
        programExternalReference:
          type: string
          description: "External Program reference"
        segmentationExternalReference:
          type: string
          description: "Segmentation external reference"
    QualityControl:
      type: object
      properties:
        aqcRequired:
          type: boolean
          description: aqc is required boolean
        aqcType:
          $ref: "#/components/schemas/AqcType"
        aqcCustomProfile:
          type: string
          description: name of the custom aqc profile (string length <= 255 chars)
          example: CustomProfile1
        manualQcRequired:
          type: boolean
          description: manual qc is required boolean
        manualQcType:
          $ref: "#/components/schemas/ManualQcType"
        postEditReviewRequired:
          type: boolean
          description: if post edit review is required
      required:
        - aqcRequired
        - manualQcRequired
    ContentPrepJobDetails:
      type: object
      properties:
        targetAssetGroup:
          type: string
          description: asset group name (string length <= 255 chars)
          example: client-ag-1
        outputResolution:
          $ref: "#/components/schemas/VideoResolution"
        instructions:
          type: string
          description: instructions related to the content prep process (string length <= 1024 chars)
          example: Some instructions
        isFastTrack:
          type: boolean
          description: indicates whether fast-track procedures should be used during processing
          example: true
        identifiers:
          $ref: "#/components/schemas/ContentPrepIdentifiers"
        content:
          $ref: "#/components/schemas/ContentPrepContent"
        editorial:
          $ref: "#/components/schemas/ContentPrepEditorial"
        durations:
          $ref: "#/components/schemas/ContentPrepDurations"
        licence:
          type: array
          items:
            $ref: "#/components/schemas/Licence"
          description: licence information for operational guidance only (array length <= 4)
        clientSpecific:
          $ref: "#/components/schemas/ContentPrepClientSpecific"
        qualityControl:
          $ref: "#/components/schemas/QualityControl"
        nested:
          type: array
          description: array length <= 10 items
          items:
            $ref: "#/components/schemas/ContentPrepNestedWorkflow"
      required:
        - targetAssetGroup
        - outputResolution
        - identifiers
        - content
        - qualityControl
        - nested
    ContentPrepClientSpecific:
      type: object
      properties:
        modelName:
          type: string
          description: name of the model used for metadata validation
          example: "clientName:modelName"
        details:
          $ref: "#/components/schemas/ContentPrepClientSpecificDetails"
    ContentPrepClientSpecificDetails:
      type: object
      description: customisable client specific details object for expanded functionality
      properties:
        clientBrand:
          type: string
        channelGroup:
          type: string
        externalReference:
          $ref: "#/components/schemas/ClientSpecificExternalReferenceExample"
        deliveryDestinations:
          $ref: "#/components/schemas/DeliveryDestinations"
        clientSpecificProp1:
          type: string
        clientSpecificProp2:
          type: integer
        clientSpecificProp3:
          type: array
          description: allowed maximum 10 items in the array
          items:
            type: string
        clientSpecificChildObject1:
          type: object
          description: must be smaller than 1024 bytes
    ClientSpecificExternalReferenceExample:
      type: object
      description: Client specific external reference object
      properties:
        mediaExternalReference:
          type: string
          description: External Media reference
        programExternalReference:
          type: string
          description: "External Program reference"
    ContentPrepIdentifiers:
      type: object
      properties:
        materialId:
          type: string
          description: material ID of the destination content - must not already exist in the target cmpp asset group (string length between 1-255 chars)
          example: TST/TEST/001
        alternateId:
          type: string
          description: alternative ID of the destination content (string length <= 255 chars)
          example: TEST001
      required:
        - materialId
    ContentPrepContent:
      type: object
      properties:
        contentType:
          $ref: "#/components/schemas/CmppContentType"
        contentSubType:
          $ref: "#/components/schemas/CmppContentSubType"
        contentCategory:
          type: string
          description: content category of the resulting cmpp asset
          example: Acquired
          enum:
            - Acquired
            - Commissioned
            - InHouse
      required:
        - contentType
    ContentPrepDurations:
      type: object
      properties:
        expectedSourceDuration:
          type: string
          description: expected duration of the source file as SMPTE timecode
          example: "01:35:00:00"
        targetDuration:
          type: string
          description: target duration of the output file as SMPTE timecode
          example: "01:20:00:00"
        negativeTargetDurationTolerance:
          type: string
          description: negative tolerance between target and actual duration as SMPTE timecode
          example: "00:00:02:00"
        positiveTargetDurationTolerance:
          type: string
          description: negative tolerance between target and actual duration as SMPTE timecode
          example: "00:00:01:00"
      required:
        - targetDuration
        - negativeTargetDurationTolerance
        - positiveTargetDurationTolerance
    ContentPrepNestedWorkflow:
      type: object
      description: nested workflows to be triggered as part of the content prep process - must contain a 'ChaseMedia' nested workflow object
      properties:
        workflowName:
          type: string
          description: name of the nested workflow
          example: ChaseMedia
        details:
          type: object
          description: nested workflow details
          anyOf:
            - $ref: "#/components/schemas/ChaseMediaNestedDetails"
            - $ref: "#/components/schemas/AutoConformNestedDetails"
            - $ref: "#/components/schemas/PostProductionNestedDetails"
            - $ref: "#/components/schemas/EpisodeIngestNestedDetails"
            - $ref: "#/components/schemas/SeriesIngestNestedDetails"
      required:
        - workflowName
        - details
    ChaseMediaNestedDetails:
      type: object
      description: media to be chased from supplier
      properties:
        instructions:
          type: string
          description: instructions for the Chase Media User Task (string length <= 1024 chars)
          example: Some instructions
        source:
          $ref: "#/components/schemas/ChaseMediaSource"
        supplier:
          $ref: "#/components/schemas/Supplier"
      example:
        workflowName: ChaseMedia
        details:
          instructions: Some instructions
          source:
            materialId: TST/TEST/001
            minimumResolution: HD
            hdrRequired: false
            requiredAudioTrackLanguageTags:
              - sv-SE
              - fi-FI
              - da-DK
              - nb-NO
            requiredSubtitleLanguageTags:
              - sv-SE
              - fi-FI
              - da-DK
              - nb-NO
            expectedAncillaryFiles:
              - type: Image
                description: Portrait poster image
          supplier:
            name: Supplier1
            email: contact@supplier1.com
            telephone: "+442075551234"
            contractedDeliveryDate: "2026-06-10T00:00:00Z"
            comments: Free text
    ContentPrepEditorial:
      type: object
      properties:
        id:
          type: string
          description: identifier of the top level editorial metadata for a series or single programme/feature (string length <= 255 chars)
          example: abc123
        externalReference:
          type: string
          description: external reference of the top level editorial metadata for a series or single programme/feature (string length <= 255 chars)
          example: xyz123
        version:
          type: number
          description: version of the top level editorial metadata for a series or single programme/feature (string length <= 255 chars)
          example: 1
        versionType:
          type: string
          description: version type of the series or single programme/feature (string length <= 255 chars)
          example: Original
        versionName:
          type: string
          description: version name of the series or single programme/feature (string length <= 255 chars)
          example: Free text
        title:
          type: string
          description: main title of the series or single programme/feature (string length <= 255 chars)
          example: Main Title
        productionTitle:
          type: string
          description: production title of the series or single programme/feature (string length <= 255 chars)
          example: Production Title
        domesticTitle:
          type: string
          description: domestic title of the series or single programme/feature (string length <= 255 chars)
          example: Huvudtiteln
        territory:
          type: string
          description: territory that the series or single programme/feature is being prepared for (string length <= 50 chars)
          example: Sweden
        primaryLanguageTag:
          type: string
          description: "tag of the primary language used throughout the series or single programme/feature (ISO 639-1 'sv', ISO 639-3 'swe', RFC 5646 'sv-SE')"
          example: sv-SE
        additionalLanguageTags:
          type: array
          items:
            type: string
          description: "tags of additional languages used throughout the series or single programme/feature (ISO 639-1 'sv', ISO 639-3 'swe', RFC 5646 'sv-SE') (array length <= 50 items)"
          example:
            - fi-FI
            - da-DK
            - nb-NO
            - en-GB
        genres:
          type: array
          items:
            type: string
          description: "genres of the series or single programme/feature (array length <= 50 items, each string length <= 50 chars)"
          example:
            - Drama
            - Thriller
            - Crime
        ratingSystemClassification:
          type: string
          description: the rating system classification of the series or single programme/feature including board of classification and age rating (string length <= 50 chars)
          example: bbfc-18
        ratings:
          type: array
          items:
            $ref: "#/components/schemas/ContentPrepEditorialRatings"
          description: array length <= 5
        originalReleaseDate:
          type: string
          description: ISO 8601 formatted date of release of the series or single programme/feature
          example: "2019-12-22"
        productionCode:
          type: string
          description: production code of the series or single programme/feature (string length <= 255 chars)
          example: SER101
        synopsisShort:
          type: string
          description: short synopsis of the series or single programme/feature (string length <= 512 chars)
          example: A short synopsis
        synopsisMedium:
          type: string
          description: medium synopsis of the series or single programme/feature (string length <= 512 chars)
          example: A medium synopsis
        synopsisLong:
          type: string
          description: long synopsis of the series or single programme/feature (string length <= 1024 chars)
          example: A long synopsis
        sortTitle:
          type: string
          description: sort title of the series or single programme/feature (string length <= 255 chars)
          example: A sort title
        tagLine:
          type: string
          description: tag line of the series or single programme/feature (string length <= 255 chars)
          example: The thing you've been waiting for!
        keywords:
          type: array
          items:
            type: string
          description: "keywords used to tag the series or single programme/feature (array length <= 100 items, each string length <= 50 chars)"
          example:
            - Police
            - London
            - Scotland Yard
        production:
          $ref: "#/components/schemas/ContentPrepEditorialProduction"
        season:
          $ref: "#/components/schemas/ContentPrepEditorialSeason"
        episode:
          $ref: "#/components/schemas/ContentPrepEditorialEpisode"
    ContentPrepEditorialSeason:
      type: object
      description: season level metadata is only required for episodic programmes
      properties:
        id:
          type: string
          description: identifier of the season level editorial metadata (string length <= 255 chars)
          example: abc456
        externalReference:
          type: string
          description: external reference of the season level editorial metadata (string length <= 255 chars)
          example: xyz456
        runOrder:
          type: integer
          description: network season number
          example: 1
        productionOrder:
          type: integer
          description: production season number
          example: 1
        productionCode:
          type: string
          description: production code of the season (string length <= 255 chars)
          example: S01
        productionYear:
          type: integer
          description: year of commencement of season production
          example: 2019
        productionBatch:
          type: string
          description: production batch of the season (string length <= 255 chars)
          example: Episodes 001-008
        expectedNumberOfEpisodes:
          type: integer
          description: expected total number of episodes in the season
          example: 8
        synopsisShort:
          type: string
          description: short synopsis of the season (string length <= 512 chars)
          example: A short synopsis
        synopsisLong:
          type: string
          description: long synopsis of the season (string length <= 1024 chars)
          example: A long synopsis
        tagLine:
          type: string
          description: tag line of the season (string length <= 255 chars)
          example: The season you've been waiting for!
        ratings:
          type: array
          items:
            $ref: "#/components/schemas/ContentPrepEditorialRatings"
          description: array length <= 5
        production:
          $ref: "#/components/schemas/ContentPrepEditorialProduction"
      required:
        - runOrder
        - expectedNumberOfEpisodes
    ContentPrepEditorialEpisode:
      type: object
      description: episode level metadata is only required for episodic programmes
      properties:
        id:
          type: string
          description: identifier of the episode level editorial metadata (string length <= 255 chars)
          example: abc789
        externalReference:
          type: string
          description: external reference of the episode level editorial metadata (string length <= 255 chars)
          example: xyz789
        runOrder:
          type: integer
          description: network episode number
          example: 1
        productionOrder:
          type: integer
          description: production episode number
          example: 1
        originalReleaseDate:
          type: string
          description: ISO 8601 formatted date of release of the series or single programme/feature
          example: "2019-12-22"
        productionCode:
          type: string
          description: production code of the episode (string length <= 255 chars)
          example: E001
        title:
          type: string
          description: main title of the episode (string length <= 255 chars)
          example: Main Title
        productionTitle:
          type: string
          description: production title of the episode (string length <= 255 chars)
          example: Production Title
        domesticTitle:
          type: string
          description: domestic title of the episode (string length <= 255 chars)
          example: Huvudtiteln
        synopsisShort:
          type: string
          description: short synopsis of the season (string length <= 512 chars)
          example: A short synopsis
        synopsisMedium:
          type: string
          description: medium synopsis of the series or single programme/feature (string length <= 512 chars)
          example: A medium synopsis
        synopsisLong:
          type: string
          description: long synopsis of the season (string length <= 1024 chars)
          example: A long synopsis
        tagLine:
          type: string
          description: tag line of the season (string length <= 255 chars)
          example: The season you've been waiting for!
        ratings:
          type: array
          items:
            $ref: "#/components/schemas/ContentPrepEditorialRatings"
          description: array length <= 5
        production:
          $ref: "#/components/schemas/ContentPrepEditorialProduction"
      required:
        - runOrder
    ContentPrepEditorialProduction:
      type: object
      properties:
        company:
          type: string
          description: name of the production company (string length <= 255 chars)
          example: Production Company 1
        country:
          type: string
          description: country in which the production company is based (string length <= 255 chars)
          example: United Kingdom
        members:
          type: array
          items:
            $ref: "#/components/schemas/ProductionMember"
          description: cast and crew members (array length <= 100 items)
    ContentPrepEditorialRatings:
      type: object
      properties:
        system:
          type: string
          description: the rating system classification of the series or single programme/feature including board of classification and age rating (string length <= 20 chars)
          example: ACMA, ofcom
        classification:
          type: string
          description: classification of the series (string length <= 50 chars)
          example: 15, NC16, M, etc
        ratingType:
          type: string
          description: the rating type
          example: OTT, VOD etc
        ratingDescriptors:
          type: array
          items:
            $ref: "#/components/schemas/ContentPrepEditorialRatingDescriptors"
          description: the rating descriptors, array length <= 20
    ContentPrepEditorialRatingDescriptors:
      type: object
      properties:
        tag:
          type: string
          description: the rating descriptor tag (string length <= 20 chars)
          example: smoking, violence, alcohol, etc
        code:
          type: string
          description: the rating descriptor tag (string length <= 5 chars)
          example: S, V, A, etc
    VODCreateRatings:
      type: object
      properties:
        system:
          type: string
          description: the rating system classification of the series or single programme/feature including board of classification and age rating (string length <= 20 chars)
          example: ACMA, ofcom
        classification:
          type: string
          description: classification of the series (string length <= 50 chars)
          example: 15, NC16, M, etc
        advisories:
          $ref: "#/components/schemas/VODCreateRatingsAdvisories"
    VODCreateRatingsAdvisories:
      type: array
      description: "advisories for material item ratings"
      Items:
        type: string
        example:
          - D
          - G
    ProductionMember:
      type: object
      properties:
        roleCategory:
          type: string
          description: role category of the production team member
          example: Crew
          enum:
            - Creator
            - Director
            - Producer
            - Writer
            - Cast
            - Crew
        firstName:
          type: string
          description: first name of the production team member (string length <= 255 chars)
          example: John
        middleNames:
          type: string
          description: middle names of the production team member (string length <= 255 chars)
          example: David Edward
        lastName:
          type: string
          description: last name of the production team member (string length <= 255 chars)
          example: Doe
        role:
          type: string
          description: last name of the production team member (string length <= 255 chars)
          example: Key Grip
      required:
        - roleCategory
        - firstName
        - lastName
    SubtitlePrepJobDetails:
      type: object
      properties:
        translationAgency:
          type: string
          description: translation agency name (string length <= 255 chars)
          example: TA
        versionName:
          type: string
          description: version name (free text tag) of the subtitle(s) (string length <= 255 chars)
          example: SIMULCAST
        versionType:
          type: string
          description: version type of the subtitle(s) (string length <= 255 chars)
          example: Original
        originalLanguageTag:
          type: string
          description: "the primary language tag of the source material (ISO 639-1 'sv', ISO 639-3 'swe', RFC 5646 'sv-SE')"
          example: en-GB
        orderType:
          type: string
          description: type of order (string length <= 255 chars)
          example: New
        expectedLength:
          type: string
          description: SMPTE timecode (duration)
          example: "01:20:31:24"
        targetFileBaseName:
          type: string
          description: target filename without extension (string length <= 255 chars)
          example: TST_TEST_001
        comments:
          type: string
          description: comments to be passed to translation agency (string length <= 1024 chars)
          example: Some comments
        isFastTrack:
          type: boolean
          description: indicates whether fast-track procedures should be used during processing
          example: true
        editorial:
          $ref: "#/components/schemas/SubtitlePrepEditorial"
        clientSpecific:
          $ref: "#/components/schemas/SubtitlePrepClientSpecificDetails"
        source:
          $ref: "#/components/schemas/Source"
        languages:
          type: array
          description: array length <= 10 items
          items:
            $ref: "#/components/schemas/SubtitlePrepLanguage"
        fromSupplier:
          type: boolean
          description: declares whether subtitle(s) should be attempted to be sourced from an external supplier before falling back to using the translation agency specified by the 'translationAgency' property to create from scratch
          example: "true"
        supplier:
          $ref: "#/components/schemas/Supplier"
      required:
        - translationAgency
        - source
        - languages
    SubtitlePrepClientSpecificDetails:
      type: object
      description: customisable client specific details object for expanded functionality
      properties:
        clientBrand:
          type: string
        channelGroup:
          type: string
        externalReference:
          $ref: "#/components/schemas/ClientSpecificExternalReferenceExample"
        deliveryDestinations:
          $ref: "#/components/schemas/DeliveryDestinations"
        clientSpecificProp1:
          type: string
        clientSpecificProp2:
          type: integer
        clientSpecificProp3:
          type: array
          items:
            type: string
        clientSpecificChildObject1:
          type: object
      required:
        - deliveryDestinations
        - externalReference
    SubtitlePrepEditorial:
      type: object
      description: editorial metadata specific to the subtitle preparation process (if provided will override RBM stored editorial metadata for this transaction only)
      properties:
        contentType:
          $ref: "#/components/schemas/CmppContentType"
        contentSubType:
          $ref: "#/components/schemas/CmppContentSubType"
        title:
          type: string
          description: main title of a single programme/feature (string length <= 255 chars)
          example: Main Title
        productonTitle:
          type: string
          description: production title of a single programme/feature (string length <= 255 chars)
          example: Production Title
        domesticTitle:
          type: string
          description: domestic title of a single programme/feature (string length <= 255 chars)
          example: Domestic Title
        seriesTitle:
          type: string
          description: main title of a series (string length <= 255 chars)
          example: Series Title
        seriesProductonTitle:
          type: string
          description: production title of a series (string length <= 255 chars)
          example: Series Production Title
        seriesDomesticTitle:
          type: string
          description: domestic title of a series (string length <= 255 chars)
          example: Series Domestic Title
        episodeTitle:
          type: string
          description: main title of an episode (string length <= 255 chars)
          example: Episode Title
        episodeProductonTitle:
          type: string
          description: production title of an episode (string length <= 255 chars)
          example: Episode Production Title
        episodeDomesticTitle:
          type: string
          description: domestic title of an episode (string length <= 255 chars)
          example: Episode Domestic Title
        seasonRunOrder:
          type: integer
          description: network season number
          example: 1
        seasonProductionOrder:
          type: integer
          description: production season number
          example: 1
        seasonNumberOfEpisodes:
          type: integer
          description: total number of episodes in the season
          example: 8
        episodeRunOrder:
          type: integer
          description: episode number
          example: 1
        episodeProductionOrder:
          type: integer
          description: production episode number
          example: 1
        productionCode:
          type: string
          description: production code (string length <= 255 chars)
          example: S01E01
        originalReleaseDate:
          type: string
          format: date-time
          description: ISO 8601 formatted date of release of the source video content
          example: "2019-12-02"
        primaryLanguageTag:
          type: string
          description: "tag of the primary language used throughout the series (ISO 639-1 'sv', ISO 639-3 'swe', RFC 5646 'sv-SE')"
          example: en-GB
        additionalLanguageTags:
          type: array
          items:
            type: string
            example: da-DK
          description: "tags of additional languages used throughout the series (ISO 639-1 'sv', ISO 639-3 'swe', RFC 5646 'sv-SE') (array length <= 50 items)"
    SubtitlePrepLanguage:
      type: object
      properties:
        targetLanguageTag:
          type: string
          description: "the language tag of the target subtitle file(s) (ISO 639-1 'sv', ISO 639-3 'swe', RFC 5646 'sv-SE')"
          example: sv-SE
        targetMaterialId:
          type: string
          description: material id of the target subtitle file(s) (string length between 1-255 chars)
          example: TST/TEST/001
        targetFileBaseNameSuffix:
          type: string
          description: suffix appended to the target file(s) (string length <= 255 chars)
          example: "-SWEDISH"
        subtitleType:
          $ref: "#/components/schemas/SubtitleType"
        subtitleFormats:
          type: array
          items:
            type: string
            example: ebu-stl
          description: "format(s) of subtitle to be created (array length <= 10 items, each string length <= 50 chars)"
      required:
        - targetLanguageTag
        - targetMaterialId
        - subtitleType
        - subtitleFormats
    VODCreateClientSpecific:
      type: object
      properties:
        modelName:
          type: string
          description: name of the model used for metadata validation
          example: "clientName:modelName"
        details:
          $ref: "#/components/schemas/VODCreateClientSpecificDetailsExample"
    VODCreateClientSpecificDetailsExample:
      type: object
      description: customisable client specific details object for expanded functionality
      properties:
        deliveryDestinations:
          $ref: "#/components/schemas/DeliveryDestinations"
        externalReference:
          $ref: "#/components/schemas/VODCreateExternalReferenceExample"
        clientSpecificProp1:
          type: string
        clientSpecificProp2:
          type: integer
        clientSpecificProp3:
          type: array
          items:
            type: string
        clientSpecificChildObject1:
          type: object
    AqcType:
      type: string
      description: the type of aqc required
      enum:
        - Basic
        - BasicWithFPA
        - Detailed
        - DetailedWithFPA
        - FPAOnly
        - Custom
    AspectRatio:
      type: string
      description: the aspect ratio of the content
      enum:
        - 16x9
        - 4x3
    VideoResolution:
      type: string
      description: resolution of the video content
      enum:
        - SD
        - HD
        - UHD
      example: HD
    HDRStandard:
      type: string
      description: high dynamic range standard
      enum:
        - HDR10
        - HDR10PLUS
        - DolbyVision
      example: HDR10
    AudioLayoutDescriptor:
      type: string
      description: audio layout of the content
      enum:
        - "2.0"
        - "5.1"
        - 2.0+5.1
        - 5.1+2.0
    ChecksumAlgorithm:
      type: array
      description: checksum algorithm(s)
      items:
        type: string
      example:
        - MD5
        - SHA1
        - XOR-MD5
        - XOR-SHA1
    MediaTrackType:
      type: string
      description: type of source media
      enum:
        - AV
        - AD
        - SUBS
        - A
        - V
        - IMG
        - DOG
    BroadcastStatus:
      type: string
      description: broadcast status of the asset
      enum:
        - Ready for TX
        - Not Ready for TX
        - Not for TX
    QCStatus:
      type: string
      description: broadcast status of the asset
      enum:
        - Passed
        - Failed
        - Hold
    ManualQcType:
      type: string
      description: type of manual qc required
      enum:
        - 3PointLowResQC
        - 5PointLowResQC
        - FullLowResQC
        - FullLowResQCWithLogging
        - 3PointHiResQC
        - 5PointHiResQC
        - FullHiResQC
        - FullHiResQCWithLogging
        - Multi3PointLowResQC
        - Multi5PointLowResQC
        - MultiFullLowResQC
        - MultiFullLowResQCWithLogging
        - Multi3PointHiResQC
        - Multi5PointHiResQC
        - MultiFullHiResQC
        - MultiFullHiResQCWithLogging
    VODCreateExternalReferenceExample:
      type: object
      description: Client specific external reference object
      properties:
        mediaExternalReference:
          type: string
          description: External Media reference
        programExternalReference:
          type: string
          description: "External Program reference"
        segmentationExternalReference:
          type: string
          description: "Segmentation external reference"
    DeliveryDestinations:
      type: array
      description: "delivery destination uri(s) and/or predefined client-specific destination names (array length <= 20 items, each string length <= 1024 chars)"
      items:
        type: string
      example:
        - "sftp://destination.com"
        - "fasp://destination.com"
        - predefined-client-destination1
    ExternalWorkOrderNotificationDetailsSubtitleDelivered:
      type: object
      properties:
        message:
          type: string
          example: Subtitle delivered
          description: message describing the notification (string length <= 255 chars)
        targetMaterialId:
          type: string
          example: TEST001DA
          description: material ID of the target CMPP asset (string length between 1-255 chars)
        languageTag:
          type: string
          example: da-DK
          description: "tag of main language used throughout the material (ISO 639-1 'sv', ISO 639-3 'swe', RFC 5646 'sv-SE')"
        subtitleType:
          $ref: "#/components/schemas/SubtitleType"
        subtitleFormat:
          type: string
          example: ebu-stl
          description: format of subtitle file (string length <= 50 chars)
        fileName:
          type: string
          example: TEST001DA.stl
          description: file name of subtitle file (string length <= 255 chars)
      required:
        - message
        - targetMaterialId
        - languageTag
        - subtitleType
        - subtitleFormat
        - fileName
    SubtitleType:
      type: string
      description: type of subtitle file
      enum:
        - Open
        - Closed
        - Open+Closed
        - HoH
    ExternalWorkOrderNotificationDetailsException:
      type: object
      properties:
        message:
          type: string
          example: Some issue with the order to be resolved by RBM and client
          description: message describing the exception (string length <= 255 chars)
        sender:
          type: string
          example: John Doe
          description: name of person whom raised the exception (string length <= 255 chars)
      required:
        - message
    ExternalWorkOrderNotificationOkResponseBody:
      type: object
      properties:
        id:
          type: string
          example: B3B87AC4-6918-2FE8-5ED9-676212865C1A
        externalId:
          type: string
          example: 762D813D-9E36-468C-B7CD-EE0963EB25D3
        clientName:
          type: string
          example: client1
        message:
          type: string
          example: Notification received
    ExternalWorkOrderRejectOkResponseBody:
      type: object
      properties:
        id:
          type: string
          example: B3B87AC4-6918-2FE8-5ED9-676212865C1A
        externalId:
          type: string
          example: 762D813D-9E36-468C-B7CD-EE0963EB25D3
        clientName:
          type: string
          example: client1
        message:
          type: string
          example: Work order rejection acknowledged
    WorkOrderAcceptedResponseBody:
      type: object
      properties:
        id:
          type: string
          example: B3B87AC4-6918-2FE8-5ED9-676212865C1A
        clientRequestId:
          type: string
          example: abc123
        deadline:
          type: string
          format: date-time
          example: "2026-06-01T00:00:00Z"
        _links:
          $ref: "#/components/schemas/WorkOrderAcceptedLinks"
    ErrorResponseBody:
      type: object
      properties:
        errorType:
          type: string
          description: type of error
          example: Validation
        message:
          type: object
          description: object containing details of the error
    APIStatusResponseBody:
      type: object
      properties:
        Status:
          type: string
          description: status of the client-facing API
          example: OK
    APIStatus:
      type: object
      properties:
        Name:
          type: string
          description: name of the internal API
          example: Internal API Name
        Status:
          type: string
          description: status of the internal API
          example: OK
    WorkOrderAcceptedLinks:
      type: object
      properties:
        self:
          $ref: "#/components/schemas/WorkOrderSelfLink"
        "workflow:summary":
          $ref: "#/components/schemas/WorkflowSummaryLink"
    WorkOrderErrorResponseBody:
      type: object
      properties:
        errorType:
          type: string
          description: type of error
          example: Validation
        message:
          type: object
          description: object containing details of the error
      example:
        errorType: Validation
        message:
          error: The provided request body is not valid according to its work order type 'ContentPrep'
          workOrder:
            deadline: The provided value is not valid according to its data type 'DateTimeFuture'
            jobDetails:
              qualityControl:
                aqcType: The provided value is not valid according to its enumeration type 'AqcType'
    StandardMessageResponseBody:
      type: object
      properties:
        message:
          type: string
          description: String detailing the error
    WorkOrderUpdateAcceptedResponseBody:
      type: object
      properties:
        message:
          type: string
          example: Work order update request accepted
        _links:
          $ref: "#/components/schemas/WorkOrderAcceptedLinks"
    WorkOrderCancelAcceptedResponseBody:
      type: object
      properties:
        message:
          type: string
          example: Work order cancellation request accepted
        _links:
          $ref: "#/components/schemas/WorkOrderAcceptedLinks"
    WorkflowSummaryListResponseBody:
      type: object
      properties:
        Total:
          type: integer
        Count:
          type: integer
        Items:
          type: array
          items:
            $ref: "#/components/schemas/WorkflowSummary"
    AssetListResponseBody:
      type: object
      properties:
        Total:
          type: integer
        Count:
          type: integer
        Items:
          type: array
          items:
            $ref: "#/components/schemas/CmppAssetDetails"
    WorkflowStage:
      type: object
      properties:
        additionalProp1:
          type: string
        additionalProp2:
          type: string
        additionalProp3:
          type: string
      example:
        AutoQC: CREATED
        CreateProxy: CREATED
      description: currently active workflow stage(s)
    CmppAssetFilesBulkSearchResponse:
      type: object
      properties:
        TotalAssets:
          type: integer
          example: 1
        Assets:
          type: array
          items:
            $ref: "#/components/schemas/CmppAssetDetailsBulk"
    CmppAssetDetailsBulk:
      type: object
      properties:
        MaterialID:
          type: string
          example: TST/TEST/001
        Name:
          type: string
          example: Test Commercial
        Description:
          type: string
          example: Test Commercial
        ContentType:
          type: string
          example: Commercial
        BroadcastStatus:
          type: string
          example: Ready for TX
        CmppId:
          type: string
          example: "cmpp:a:id:1234567"
        Duration:
          type: integer
          example: 4050000
        Created:
          type: string
          example: "2026-04-01T00:00:00Z"
        Modified:
          type: string
          example: "2026-04-01T00:05:00Z"
        TotalAssetFiles:
          type: integer
          example: 1
        AssetFiles:
          type: array
          items:
            $ref: "#/components/schemas/CmppAssetFileDetailsBulk"
    CmppAssetFileDetailsBulk:
      type: object
      properties:
        Name:
          type: string
          example: TST_TEST_001.mxf
        Profile:
          type: string
          example: mxf_avci100_hd
        Description:
          type: string
          example: TST_TEST_001
        QCStatus:
          type: string
          example: Passed
        CmppId:
          type: string
          example: "cmpp:af:id:12345"
        Duration:
          type: integer
          example: 4050000
        StartTimecode:
          type: string
          example: "09:59:50:00"
        FileSize:
          type: integer
          example: 524288000
        FileTypeName:
          type: string
          example: Programme Master
        MD5:
          type: string
          example: 95c4649f65e1643b4d48c403418ca028
        SHA1:
          type: string
          example: da39a3ee5e6b4b0d3255bfef95601890afd80709
        Created:
          type: string
          example: "2026-04-01T00:00:00Z"
        Modified:
          type: string
          example: "2026-04-01T00:05:00Z"
    CmppAssetDetails:
      type: object
      properties:
        MaterialID:
          type: string
          example: TST/TEST/001
        Name:
          type: string
          example: Test Commercial
        Description:
          type: string
          example: Test Commercial
        ContentType:
          type: string
          example: Commercial
        BroadcastStatus:
          type: string
          example: Ready for TX
        CmppId:
          type: string
          example: "cmpp:a:id:1234567"
        Duration:
          type: integer
          example: 4050000
        Files:
          type: integer
          example: 2
        Created:
          type: string
          example: "2026-04-01T00:00:00Z"
        Modified:
          type: string
          example: "2026-04-01T00:05:00Z"
        _links:
          $ref: "#/components/schemas/AssetLinks"
    CmppAssetFileDetails:
      type: object
      properties:
        Name:
          type: string
          example: TST_TEST_001.mxf
        Profile:
          type: string
          example: mxf_avci100_hd
        Description:
          type: string
          example: TST_TEST_001
        QCStatus:
          type: string
          example: Passed
        CmppId:
          type: string
          example: "cmpp:af:id:12345"
        Duration:
          type: integer
          example: 4050000
        StartTimecode:
          type: string
          example: "09:59:50:00"
        FileSize:
          type: integer
          example: 524288000
        FileTypeName:
          type: string
          example: Programme Master
        MD5:
          type: string
          example: 95c4649f65e1643b4d48c403418ca028
        SHA1:
          type: string
          example: da39a3ee5e6b4b0d3255bfef95601890afd80709
        Created:
          type: string
          example: "2026-04-01T00:00:00Z"
        Modified:
          type: string
          example: "2026-04-01T00:05:00Z"
        _links:
          $ref: "#/components/schemas/AssetFileLinks"
    WorkOrderBodyLink:
      type: object
      properties:
        href:
          type: string
          example: /workorders/B3B87AC4-6918-2FE8-5ED9-676212865C1A
    AssetLink:
      type: object
      properties:
        href:
          type: string
          example: "/assets/cmpp:a:id:1234567"
    AssetFilesLink:
      type: object
      properties:
        href:
          type: string
          example: "/assets/cmpp:a:id:1234567/assetfiles"
    WorkflowCustomSearchableAttributes:
      type: object
      properties:
        additionalProp1:
          type: string
        additionalProp2:
          type: string
        additionalProp3:
          type: string
      example:
        alternateId: TEST001
        contentCategory: Acquired
      description: custom attributes searchable using the '/workflows' 'csa' query param
    WorkflowSummary:
      type: object
      properties:
        Id:
          type: string
          description: workflow ID - each work order spawns a master workflow which shares the same ID
          example: B3B87AC4-6918-2FE8-5ED9-676212865C1A
        ExtId:
          type: string
          description: external ID - populated with 'requestId' from incoming work order
          example: abc123
        Name:
          type: string
          description: name of the workflow
          example: Content Prep
        Description:
          type: string
          description: description of the workflow
          example: Some description of the workflow
        MaterialId:
          type: string
          description: material ID of the source
          example: TST/TEST/001
        Title:
          type: string
          description: title of the source
          example: Episode 1
        Supplier:
          type: string
          description: supplier of the source
          example: Supplier1
        Status:
          $ref: "#/components/schemas/WorkflowStatus"
        Stage:
          $ref: "#/components/schemas/WorkflowStage"
        CustomSearchableAttributes:
          $ref: "#/components/schemas/WorkflowCustomSearchableAttributes"
        Due:
          type: string
          format: date-time
          description: ISO 8601 formatted due date (deadline)
        Created:
          type: string
          format: date-time
          description: ISO 8601 formatted created date
        CreatedBy:
          type: string
          example: Client System (prod)
          description: name of system which created the workflow
        Modified:
          type: string
          format: date-time
          description: ISO 8601 formatted modified date
        ModifiedBy:
          type: string
          example: Client System (prod)
          description: name of system which most recently modified the workflow
        _links:
          $ref: "#/components/schemas/WorkflowSummaryLinks"
    PurgeItem:
      type: object
      properties:
        cmppId:
          type: string
          description: cmpp ID of the asset if known
          example: "cmpp:a:id:1234567"
        materialId:
          type: string
          description: material ID of the asset
          example: TST/TEST/001
        mediaType:
          $ref: "#/components/schemas/MediaType"
      required:
        - materialId
    WorkflowSummaryLinks:
      type: object
      properties:
        self:
          $ref: "#/components/schemas/WorkflowSummaryLink"
        "workorder:body":
          $ref: "#/components/schemas/WorkOrderBodyLink"
    AssetLinks:
      type: object
      properties:
        self:
          $ref: "#/components/schemas/AssetLink"
        "cmpp:assetfiles":
          $ref: "#/components/schemas/AssetFilesLink"
    AssetFileLinks:
      type: object
      properties:
        "cmpp:asset":
          $ref: "#/components/schemas/AssetLink"
    WorkflowStatus:
      type: string
      enum:
        - Aborted
        - Cancelled
        - Completed
        - Error
        - In Progress
        - Pending Cancelled
        - Pending Restart
        - Pending Retry
        - Queued
        - Rejected
        - Timed Out
      example: In Progress
      description: current status of the workflow processing
    MediaType:
      type: string
      description: media type
      enum:
        - Video
        - Subtitles
        - AD
        - Graphics
        - VO
    WorkOrderTypes:
      type: string
      description: work order type
      enum:
        - ReviewAndExport
        - ContentPrep
        - SubtitlePrep
        - VOD-Create
        - VOD-Revoke
        - PurgeAssets
        - SecondaryRecording
        - Purge-Asset-Routine
        - Purge-Asset-File-Emergency
    ExternalWorkOrderNotificationTypes:
      type: string
      description: external work order notification type
      enum:
        - SubtitleDelivered
        - Exception
    WorkOrderSelfLink:
      type: object
      properties:
        href:
          type: string
          example: /workorders/B3B87AC4-6918-2FE8-5ED9-676212865C1A
    WorkflowSummaryLink:
      type: object
      properties:
        href:
          type: string
          example: /workorders/B3B87AC4-6918-2FE8-5ED9-676212865C1A/workflow
    JsonPatchDocument:
      type: array
      items:
        $ref: "#/components/schemas/JsonPatchOperation"
    JsonPatchOperation:
      type: object
      properties:
        path:
          type: string
          example: /jobDetails/editorial/genres/-
        op:
          type: string
          example: add
        value:
          type: string
          example: Thriller
    JsonMergePatchDocument:
      type: object
      example:
        deadline: "2026-07-01T00:00:00Z"
        jobDetails:
          qualityControl:
            acqType: DetailedWithFPA
