openapi: 3.0.1
servers:
  - url: https://cloudextension-testservice.local/api
info:
  contact:
    name: Siri for Developers
    url: https://developer.apple.com/siri/
  title: SiriKit Cloud Media
  version: 1.0.2
  x-apisguru-categories:
    - media
  x-origin:
    - format: openapi
      url: sirikit-cloud-media.json
      version: "3.0"
  x-platform: sirikit_media_api
  x-providerName: apple.com
  x-serviceName: sirikit-cloud-media
tags:
  - name: config
  - name: intent
  - name: queues
paths:
  /configuration:
    get:
      operationId: extensionConfiguration
      parameters:
        - in: header
          name: x-applecloudextension-session-id
          required: true
          schema:
            maxLength: 128
            minLength: 1
            type: string
        - in: header
          name: x-applecloudextension-retry-count
          required: false
          schema:
            format: uint32
            minimum: 1
            type: number
        - in: header
          name: Request-Timeout
          required: true
          schema:
            format: uint32
            minimum: 1
            type: number
        - in: header
          name: User-Agent
          required: true
          schema:
            maxLength: 250
            pattern: AppleCloudExtension/([0-9]+\.[0-9]+\.[0-9]+) *.*
            type: string
        - in: header
          name: Accept-Language
          required: true
          schema:
            type: string
        - in: header
          name: If-None-Match
          schema:
            $ref: "#/components/schemas/ExtensionConfigTag"
        - in: header
          name: Cache-Control
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/jose:
              schema:
                $ref: "#/components/schemas/ExtensionConfig"
          description: ""
          headers:
            Cache-Control:
              example: max-age=1800, must-revalidate, private
              required: true
              schema:
                type: string
            ETag:
              required: true
              schema:
                $ref: "#/components/schemas/ExtensionConfigTag"
            x-applecloudextension-session-id:
              schema:
                maxLength: 128
                minLength: 1
                type: string
        "304":
          description: ""
          headers:
            Cache-Control:
              example: max-age=1800, must-revalidate, private
              required: true
              schema:
                type: string
            x-applecloudextension-session-id:
              schema:
                maxLength: 128
                minLength: 1
                type: string
      summary: Configuration Resource
      tags:
        - config
  /intent/addMedia:
    post:
      operationId: addMediaIntentHandling
      parameters:
        - in: header
          name: x-applecloudextension-session-id
          required: true
          schema:
            maxLength: 128
            minLength: 1
            type: string
        - in: header
          name: x-applecloudextension-retry-count
          required: false
          schema:
            format: uint32
            minimum: 1
            type: number
        - in: header
          name: Request-Timeout
          required: true
          schema:
            format: uint32
            minimum: 1
            type: number
        - in: header
          name: User-Agent
          required: true
          schema:
            maxLength: 250
            pattern: AppleCloudExtension/([0-9]+\.[0-9]+\.[0-9]+) *.*
            type: string
        - in: header
          name: Accept-Language
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              items:
                $ref: "#/components/schemas/AddMediaIntentHandlingInvocation"
              type: array
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/AddMediaIntentHandlingInvocationResponse"
                type: array
          description: ""
          headers:
            x-applecloudextension-session-id:
              schema:
                maxLength: 128
                minLength: 1
                type: string
      summary: addMedia
      tags:
        - intent
  /intent/playMedia:
    post:
      operationId: playMediaIntentHandling
      parameters:
        - in: header
          name: x-applecloudextension-session-id
          required: true
          schema:
            maxLength: 128
            minLength: 1
            type: string
        - in: header
          name: x-applecloudextension-retry-count
          required: false
          schema:
            format: uint32
            minimum: 1
            type: number
        - in: header
          name: Request-Timeout
          required: true
          schema:
            format: uint32
            minimum: 1
            type: number
        - in: header
          name: User-Agent
          required: true
          schema:
            maxLength: 250
            pattern: AppleCloudExtension/([0-9]+\.[0-9]+\.[0-9]+) *.*
            type: string
        - in: header
          name: Accept-Language
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              items:
                $ref: "#/components/schemas/PlayMediaIntentHandlingInvocation"
              type: array
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/PlayMediaIntentHandlingInvocationResponse"
                type: array
          description: ""
          headers:
            x-applecloudextension-session-id:
              schema:
                maxLength: 128
                minLength: 1
                type: string
      summary: playMedia
      tags:
        - intent
  /intent/updateMediaAffinity:
    post:
      operationId: updateMediaAffinityIntentHandling
      parameters:
        - in: header
          name: x-applecloudextension-session-id
          required: true
          schema:
            maxLength: 128
            minLength: 1
            type: string
        - in: header
          name: x-applecloudextension-retry-count
          required: false
          schema:
            format: uint32
            minimum: 1
            type: number
        - in: header
          name: Request-Timeout
          required: true
          schema:
            format: uint32
            minimum: 1
            type: number
        - in: header
          name: User-Agent
          required: true
          schema:
            maxLength: 250
            pattern: AppleCloudExtension/([0-9]+\.[0-9]+\.[0-9]+) *.*
            type: string
        - in: header
          name: Accept-Language
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              items:
                $ref: "#/components/schemas/UpdateMediaAffinityIntentHandlingInvocation"
              type: array
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/UpdateMediaAffinityIntentHandlingInvocationResponse"
                type: array
          description: ""
          headers:
            x-applecloudextension-session-id:
              schema:
                maxLength: 128
                minLength: 1
                type: string
      summary: updateMediaAffinity
      tags:
        - intent
  /queues/playMedia:
    post:
      operationId: playMediaOnQueue
      parameters:
        - in: header
          name: x-applecloudextension-session-id
          required: true
          schema:
            maxLength: 128
            minLength: 1
            type: string
        - in: header
          name: x-applecloudextension-retry-count
          required: false
          schema:
            format: uint32
            minimum: 1
            type: number
        - in: header
          name: User-Agent
          required: true
          schema:
            maxLength: 250
            pattern: AppleCloudExtension/([0-9]+\.[0-9]+\.[0-9]+) *.*
            type: string
        - in: header
          name: Accept-Language
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PlayMediaRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Queue"
          description: ""
        "204":
          description: ""
        "401":
          description: ""
        "410":
          description: ""
      summary: playMedia
      tags:
        - queues
  /queues/updateActivity:
    post:
      operationId: updateActivityOnQueue
      parameters:
        - in: header
          name: x-applecloudextension-session-id
          required: true
          schema:
            maxLength: 128
            minLength: 1
            type: string
        - in: header
          name: x-applecloudextension-retry-count
          required: false
          schema:
            format: uint32
            minimum: 1
            type: number
        - in: header
          name: User-Agent
          required: true
          schema:
            maxLength: 250
            pattern: AppleCloudExtension/([0-9]+\.[0-9]+\.[0-9]+) *.*
            type: string
        - in: header
          name: Accept-Language
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateActivityRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UpdateActivityResponse"
          description: ""
        "204":
          description: ""
        "401":
          description: ""
        "404":
          description: ""
        "410":
          description: ""
      summary: updateActivity
      tags:
        - queues
components:
  schemas:
    AddMediaIntent:
      allOf:
        - $ref: "#/components/schemas/Intent"
      properties:
        class:
          enum:
            - AddMediaIntent
          type: string
        mediaDestination:
          $ref: "#/components/schemas/MediaDestination"
        mediaItems:
          items:
            $ref: "#/components/schemas/MediaItem"
          type: array
        mediaSearch:
          $ref: "#/components/schemas/MediaSearch"
      required:
        - class
      type: object
    AddMediaIntentHandlingConfirmInvocationResponse:
      allOf:
        - $ref: "#/components/schemas/InvocationResponse"
      properties:
        method:
          enum:
            - AddMediaIntentHandling.confirm
          type: string
        result:
          nullable: false
          properties:
            response:
              $ref: "#/components/schemas/AddMediaIntentResponse"
          required:
            - response
          type: object
      required:
        - method
        - result
      type: object
    AddMediaIntentHandlingHandleInvocationResponse:
      allOf:
        - $ref: "#/components/schemas/InvocationResponse"
      properties:
        method:
          enum:
            - AddMediaIntentHandling.handle
          type: string
        result:
          nullable: false
          properties:
            response:
              $ref: "#/components/schemas/AddMediaIntentResponse"
          required:
            - response
          type: object
      required:
        - method
        - result
      type: object
    AddMediaIntentHandlingInvocation:
      allOf:
        - $ref: "#/components/schemas/Invocation"
      discriminator:
        mapping:
          AddMediaIntentHandling.confirm: "#/components/schemas/AddMediaIntentHandlingInvocation"
          AddMediaIntentHandling.handle: "#/components/schemas/AddMediaIntentHandlingInvocation"
          AddMediaIntentHandling.resolveMediaDestination: "#/components/schemas/AddMediaIntentHandlingInvocation"
          AddMediaIntentHandling.resolveMediaItems: "#/components/schemas/AddMediaIntentHandlingInvocation"
        propertyName: method
      properties:
        method:
          enum:
            - AddMediaIntentHandling.resolveMediaItems
            - AddMediaIntentHandling.resolveMediaDestination
            - AddMediaIntentHandling.confirm
            - AddMediaIntentHandling.handle
          type: string
        params:
          nullable: false
          properties:
            intent:
              $ref: "#/components/schemas/AddMediaIntent"
          required:
            - intent
          type: object
      required:
        - method
        - params
      type: object
    AddMediaIntentHandlingInvocationResponse:
      discriminator:
        mapping:
          AddMediaIntentHandling.confirm: "#/components/schemas/AddMediaIntentHandlingCon\
            firmInvocationResponse"
          AddMediaIntentHandling.handle: "#/components/schemas/AddMediaIntentHandlingHandleInvocationResponse"
          AddMediaIntentHandling.resolveMediaDestination: "#/components/schemas/AddMediaI\
            ntentHandlingResolveMediaDestinationInvocationResponse"
          AddMediaIntentHandling.resolveMediaItems: "#/components/schemas/AddMediaIntentH\
            andlingResolveMediaItemsInvocationResponse"
          ProtocolException: "#/components/schemas/ProtocolExceptionInvocationResponse"
        propertyName: method
      oneOf:
        - $ref: "#/components/schemas/AddMediaIntentHandlingResolveMediaItemsInvocationRe\
            sponse"
        - $ref: "#/components/schemas/AddMediaIntentHandlingResolveMediaDestinationInvoca\
            tionResponse"
        - $ref: "#/components/schemas/AddMediaIntentHandlingConfirmInvocationResponse"
        - $ref: "#/components/schemas/AddMediaIntentHandlingHandleInvocationResponse"
        - $ref: "#/components/schemas/ProtocolExceptionInvocationResponse"
    AddMediaIntentHandlingResolveMediaDestinationInvocationResponse:
      allOf:
        - $ref: "#/components/schemas/InvocationResponse"
      properties:
        method:
          enum:
            - AddMediaIntentHandling.resolveMediaDestination
          type: string
        result:
          nullable: false
          properties:
            resolutionResult:
              $ref: "#/components/schemas/AddMediaMediaDestinationResolutionResult"
          required:
            - response
          type: object
      required:
        - method
        - result
      type: object
    AddMediaIntentHandlingResolveMediaItemsInvocationResponse:
      allOf:
        - $ref: "#/components/schemas/InvocationResponse"
      properties:
        method:
          enum:
            - AddMediaIntentHandling.resolveMediaItems
          type: string
        result:
          nullable: false
          properties:
            resolutionResult:
              items:
                $ref: "#/components/schemas/AddMediaMediaItemResolutionResult"
              type: array
          required:
            - response
          type: object
      required:
        - method
        - result
      type: object
    AddMediaIntentResponse:
      allOf:
        - $ref: "#/components/schemas/IntentResponse"
      properties:
        class:
          enum:
            - AddMediaIntentResponse
          type: string
        code:
          $ref: "#/components/schemas/AddMediaIntentResponseCode"
      required:
        - class
        - code
      type: object
    AddMediaIntentResponseCode:
      enum:
        - unspecified
        - ready
        - inProgress
        - success
        - failure
        - failureRequiringAppLaunch
      type: string
    AddMediaMediaDestinationResolutionResult:
      allOf:
        - $ref: "#/components/schemas/IntentResolutionResult"
      properties:
        class:
          enum:
            - AddMediaMediaDestinationResolutionResult
          type: string
        confirmationRequired:
          properties:
            mediaDestinationToConfirm:
              $ref: "#/components/schemas/MediaDestination"
          required:
            - mediaDestinationToConfirm
          type: object
          x-flow-exception: Requires Confirmation
        disambiguation:
          properties:
            mediaDestinationsToDisambiguate:
              items:
                $ref: "#/components/schemas/MediaDestination"
              minItems: 2
              type: array
          required:
            - mediaDestinationsToDisambiguate
          type: object
          x-flow-exception: Requires Disambiguation
        success:
          properties:
            resolvedMediaDestination:
              $ref: "#/components/schemas/MediaDestination"
          required:
            - resolvedMediaDestination
          type: object
        unsupported:
          properties:
            reason:
              $ref: "#/components/schemas/AddMediaMediaDestinationUnsupportedReason"
          type: object
          x-flow-exception: Unsupported
      type: object
    AddMediaMediaDestinationUnsupportedReason:
      enum:
        - playlistNameNotFound
        - playlistNotEditable
      type: string
    AddMediaMediaItemResolutionResult:
      allOf:
        - $ref: "#/components/schemas/IntentResolutionResult"
      properties:
        class:
          enum:
            - AddMediaMediaItemResolutionResult
          type: string
        confirmationRequired:
          properties:
            mediaItemToConfirm:
              $ref: "#/components/schemas/MediaItem"
          required:
            - mediaItemToConfirm
          type: object
          x-flow-exception: Requires Confirmation
        disambiguation:
          properties:
            mediaItemsToDisambiguate:
              items:
                $ref: "#/components/schemas/MediaItem"
              minItems: 2
              type: array
          required:
            - mediaItemsToDisambiguate
          type: object
        success:
          properties:
            resolvedMediaItem:
              $ref: "#/components/schemas/MediaItem"
          required:
            - resolvedMediaItem
          type: object
        unsupported:
          properties:
            reason:
              $ref: "#/components/schemas/AddMediaMediaItemUnsupportedReason"
          type: object
          x-flow-exception: Unsupported
      type: object
    AddMediaMediaItemUnsupportedReason:
      enum:
        - loginRequired
        - subscriptionRequired
        - unsupportedMediaType
        - explicitContentSettings
        - restrictedContent
        - regionRestriction
      type: string
    BooleanResolutionResult:
      allOf:
        - $ref: "#/components/schemas/IntentResolutionResult"
      properties:
        class:
          enum:
            - BooleanResolutionResult
          type: string
        confirmationRequired:
          properties:
            valueToConfirm:
              type: boolean
          required:
            - valueToConfirm
          type: object
          x-flow-exception: Requires Confirmation
        success:
          properties:
            resolvedValue:
              type: boolean
          required:
            - resolvedValue
          type: object
      type: object
    Constraints:
      properties:
        allowExplicitContent:
          default: true
          type: boolean
        maximumQueueSegmentItemCount:
          default: 1000
          format: uint32
          maximum: 1000
          minimum: 50
          type: integer
        updateUserTasteProfile:
          default: true
          type: boolean
      type: object
    Content:
      properties:
        attributes:
          $ref: "#/components/schemas/ContentAttributes"
        control:
          default: default
          example: song
          type: string
        identifier:
          $ref: "#/components/schemas/ContentIdentifier"
        isLive:
          type: boolean
        playIndex:
          format: uint64
          type: integer
        url:
          maxLength: 2000
          type: string
      required:
        - identifier
      type: object
    ContentAttributes:
      properties:
        albumName:
          example: Blood On the Tracks
          maxLength: 250
          type: string
        artistName:
          example: Bob Dylan
          maxLength: 1000
          type: string
        artwork:
          properties:
            url:
              maxLength: 2000
              type: string
          type: object
        composerName:
          example: B. Dylan
          maxLength: 250
          type: string
        durationInMillis:
          format: uint64
          type: integer
        genreNames:
          items:
            maxLength: 250
            type: string
          maxItems: 30
          type: array
        name:
          example: Tangled Up In Blue
          maxLength: 250
          type: string
        trackNumber:
          example: 1
          format: uint32
          type: integer
      type: object
    ContentIdentifier:
      example: j15f8A3cuU0GG
      maxLength: 1000
      minLength: 1
      type: string
    DateComponents:
      example: "1980"
      oneOf:
        - pattern: "[0-9]{4}"
          type: string
        - pattern: "[0-9]{4}-[0-9]{2}"
          type: string
        - format: date
          type: string
        - format: date-time
          type: string
        - $ref: "#/components/schemas/ExplicitDateComponents"
    DateComponentsRange:
      properties:
        endDateComponents:
          $ref: "#/components/schemas/DateComponents"
        startDateComponents:
          $ref: "#/components/schemas/DateComponents"
      type: object
    ExecutionMetrics:
      properties:
        completed:
          format: date-time
          type: string
        duration:
          format: float
          type: number
        received:
          format: date-time
          type: string
      type: object
    ExplicitDateComponents:
      properties:
        calendarIdentifier:
          type: string
        day:
          format: int32
          type: integer
        era:
          format: int32
          type: integer
        hour:
          format: int32
          type: integer
        minute:
          format: int32
          type: integer
        month:
          format: int32
          type: integer
        nanosecond:
          format: int32
          type: integer
        second:
          format: int32
          type: integer
        timeZone:
          type: string
        year:
          format: int32
          type: integer
      type: object
    ExtensionConfig:
      properties:
        hdr:
          example:
            x-client-type: headless
            x-service-affinity: cluster1
          type: object
        intent:
          properties:
            addMedia:
              allOf:
                - $ref: "#/components/schemas/ExtensionEndpointConfig"
              properties:
                opt:
                  items:
                    enum:
                      - resolveMediaDestination
                      - confirm
                    type: string
                  type: array
              type: object
            hdr:
              example:
                x-service-affinity: intent2
              type: object
            playMedia:
              allOf:
                - $ref: "#/components/schemas/ExtensionEndpointConfig"
              properties:
                opt:
                  items:
                    enum:
                      - resolvePlayShuffled
                      - resolvePlaybackRepeatMode
                      - resolvePlaybackQueueLocation
                      - resolveResumePlayback
                    type: string
                  type: array
              type: object
            updateMediaAffinity:
              allOf:
                - $ref: "#/components/schemas/ExtensionEndpointConfig"
              properties:
                opt:
                  items:
                    enum:
                      - resolveAffinityType
                    type: string
                  type: array
              type: object
          required:
            - playMedia
          type: object
        media:
          properties:
            queues:
              properties:
                hdr:
                  example:
                    x-content-min-ttl: 1200
                    x-media-catalog-region: en_US
                  type: object
                playMedia:
                  properties:
                    hdr:
                      example:
                        x-headless-client: true
                      type: object
                    url:
                      default: /queues/playMedia
                      maxLength: 4000
                      minLength: 1
                      type: string
                  type: object
                updateActivity:
                  properties:
                    hdr:
                      type: object
                    url:
                      default: /queues/updateActivity
                      maxLength: 4000
                      minLength: 1
                      type: string
                  type: object
              type: object
          type: object
        url:
          example: /v2
          maxLength: 2000
          minLength: 1
          type: string
        version:
          example: 1.0.0
          pattern: ([0-9]+[.]){2}[0-9]+
          type: string
      required:
        - version
        - intent
        - media
      type: object
    ExtensionConfigTag:
      maxLength: 1002
      pattern: '["][ -~]{1000}["]'
      type: string
    ExtensionEndpointConfig:
      properties:
        hdr:
          type: object
        url:
          maxLength: 2000
          minLength: 0
          type: string
      type: object
    Intent:
      discriminator:
        mapping:
          AddMediaIntent: "#/components/schemas/AddMediaIntent"
          PlayMediaIntent: "#/components/schemas/PlayMediaIntent"
          UpdateMediaAffinityIntent: "#/components/schemas/UpdateMediaAffinityIntent"
        propertyName: class
      properties:
        class:
          type: string
        identifier:
          type: string
      required:
        - class
        - identifier
      type: object
    IntentResolutionResult:
      discriminator:
        mapping:
          AddMediaMediaItemResolutionResult: "#/components/schemas/AddMediaMediaItemResolutionResult"
          BooleanResolutionResult: "#/components/schemas/BooleanResolutionResult"
          MediaAffinityTypeResolutionResult: "#/components/schemas/MediaAffinityTypeResolutionResult"
          PlayMediaMediaItemResolutionResult: "#/components/schemas/PlayMediaMediaItemResolutionResult"
          PlaybackQueueLocationResolutionResult: "#/components/schemas/PlaybackQueueLocationResolutionResult"
          UpdateMediaAffinityMediaItemResolutionResult: "#/components/schemas/UpdateMediaAffinityMediaItemResolutionResult"
        propertyName: class
      properties:
        class:
          type: string
        needsValue:
          type: object
          x-flow-exception: Failure
        notRequired:
          type: object
        unsupported:
          type: object
          x-flow-exception: Failure
      required:
        - class
      type: object
    IntentResponse:
      discriminator:
        mapping:
          AddMediaIntentResponse: "#/components/schemas/AddMediaIntentResponse"
          PlayMediaIntentResponse: "#/components/schemas/PlayMediaIntentResponse"
          UpdateMediaAffinityIntentResponse: "#/components/schemas/UpdateMediaAffinityIntentResponse"
        propertyName: class
      properties:
        class:
          type: string
        userActivity:
          $ref: "#/components/schemas/UserActivity"
      required:
        - class
        - userActivity
      type: object
    Invocation:
      discriminator:
        mapping:
          AddMediaIntentHandling.confirm: "#/components/schemas/AddMediaIntentHandlingInvocation"
          AddMediaIntentHandling.handle: "#/components/schemas/AddMediaIntentHandlingInvocation"
          AddMediaIntentHandling.resolveMediaDestination: "#/components/schemas/AddMediaIntentHandlingInvocation"
          AddMediaIntentHandling.resolveMediaItems: "#/components/schemas/AddMediaIntentHandlingInvocation"
          PlayMediaIntentHandling.handle: "#/components/schemas/PlayMediaIntentHandlingInvocation"
          PlayMediaIntentHandling.resolveMediaItems: "#/components/schemas/PlayMediaIntentHandlingInvocation"
          PlayMediaIntentHandling.resolvePlayShuffled: "#/components/schemas/PlayMediaIntentHandlingInvocation"
          PlayMediaIntentHandling.resolvePlaybackQueueLocation: "#/components/schemas/PlayMediaIntentHandlingInvocation"
          PlayMediaIntentHandling.resolvePlaybackRepeatMode: "#/components/schemas/PlayMediaIntentHandlingInvocation"
          PlayMediaIntentHandling.resolveResumePlayback: "#/components/schemas/PlayMediaIntentHandlingInvocation"
          UpdateMediaAffinityIntentHandling.handle: "#/components/schemas/UpdateMediaAffinityIntentHandlingInvocation"
          UpdateMediaAffinityIntentHandling.resolveAffinityType: "#/components/schemas/UpdateMediaAffinityIntentHandlingInvocation"
          UpdateMediaAffinityIntentHandling.resolveMediaItems: "#/components/schemas/UpdateMediaAffinityIntentHandlingInvocation"
        propertyName: method
      properties:
        method:
          type: string
        params:
          nullable: true
          type: object
        session:
          $ref: "#/components/schemas/Session"
      required:
        - method
        - params
      type: object
    InvocationResponse:
      discriminator:
        mapping:
          AddMediaIntentHandling.confirm: "#/components/schemas/AddMediaIntentHandlingCon\
            firmInvocationResponse"
          AddMediaIntentHandling.handle: "#/components/schemas/AddMediaIntentHandlingHandleInvocationResponse"
          AddMediaIntentHandling.resolveMediaDestination: "#/components/schemas/AddMediaI\
            ntentHandlingResolveMediaDestinationInvocationResponse"
          AddMediaIntentHandling.resolveMediaItems: "#/components/schemas/AddMediaIntentH\
            andlingResolveMediaItemsInvocationResponse"
          PlayMediaIntentHandling.handle: "#/components/schemas/PlayMediaIntentHandlingHa\
            ndleInvocationResponse"
          PlayMediaIntentHandling.resolveMediaItems: "#/components/schemas/PlayMediaInten\
            tHandlingResolveMediaItemsInvocationResponse"
          PlayMediaIntentHandling.resolvePlayShuffled: "#/components/schemas/PlayMediaInt\
            entHandlingResolvePlayShuffledInvocationResponse"
          PlayMediaIntentHandling.resolvePlaybackQueueLocation: "#/components/schemas/Pla\
            yMediaIntentHandlingResolvePlaybackQueueLocationInvocationResponse"
          PlayMediaIntentHandling.resolvePlaybackRepeatMode: "#/components/schemas/PlayMe\
            diaIntentHandlingResolvePlaybackRepeatModeInvocationResponse"
          PlayMediaIntentHandling.resolveResumePlayback: "#/components/schemas/PlayMediaI\
            ntentHandlingResolveResumePlaybackInvocationResponse"
          ProtocolException: "#/components/schemas/ProtocolExceptionInvocationResponse"
          UpdateMediaAffinityIntentHandling.handle: "#/components/schemas/UpdateMediaAffi\
            nityIntentHandlingHandleInvocationResponse"
          UpdateMediaAffinityIntentHandling.resolveAffinityType: "#/components/schemas/Up\
            dateMediaAffinityIntentHandlingResolveAffinityTypeInvocationRespons\
            e"
          UpdateMediaAffinityIntentHandling.resolveMediaItems: "#/components/schemas/Upda\
            teMediaAffinityIntentHandlingResolveMediaItemsInvocationResponse"
        propertyName: method
      properties:
        debug:
          $ref: "#/components/schemas/ServiceDebugReference"
        method:
          type: string
        metrics:
          $ref: "#/components/schemas/ExecutionMetrics"
        result:
          nullable: true
          type: object
      required:
        - method
        - result
      type: object
    MediaAffinityType:
      enum:
        - unknown
        - like
        - dislike
      type: string
    MediaAffinityTypeResolutionResult:
      allOf:
        - $ref: "#/components/schemas/IntentResolutionResult"
      properties:
        class:
          enum:
            - MediaAffinityTypeResolutionResult
          type: string
        confirmationRequired:
          properties:
            mediaAffinityTypeToConfirm:
              $ref: "#/components/schemas/MediaAffinityType"
          required:
            - mediaAffinityTypeToConfirm
          type: object
          x-flow-exception: Requires Confirmation
        success:
          properties:
            resolvedMediaAffinityType:
              $ref: "#/components/schemas/MediaAffinityType"
          required:
            - resolvedMediaAffinityType
          type: object
      type: object
    MediaDestination:
      discriminator:
        mapping:
          library: "#/components/schemas/MediaDestinationLibrary"
          playlist: "#/components/schemas/MediaDestinationPlaylist"
        propertyName: mediaDestinationType
      properties:
        mediaDestinationType:
          enum:
            - library
            - playlist
          type: string
      required:
        - mediaDestinationType
      type: object
    MediaDestinationLibrary:
      allOf:
        - $ref: "#/components/schemas/MediaDestination"
      properties:
        mediaDestinationType:
          enum:
            - library
          type: string
      required:
        - mediaDestinationType
      type: object
    MediaDestinationPlaylist:
      allOf:
        - $ref: "#/components/schemas/MediaDestination"
      properties:
        mediaDestinationType:
          enum:
            - playlist
          type: string
        playlistName:
          maxLength: 1000
          minLength: 1
          type: string
      required:
        - mediaDestinationType
        - playlistName
      type: object
    MediaItem:
      properties:
        artist:
          maxLength: 1000
          readOnly: true
          type: string
        identifier:
          maxLength: 250
          type: string
        title:
          maxLength: 1000
          readOnly: true
          type: string
        type:
          $ref: "#/components/schemas/MediaItemType"
      required:
        - type
        - identifier
      type: object
    MediaItemType:
      enum:
        - unknown
        - song
        - album
        - artist
        - genre
        - playlist
        - podcastShow
        - podcastEpisode
        - podcastPlaylist
        - musicStation
        - audioBook
        - movie
        - tvShow
        - tvShowEpisode
        - musicVideo
        - podcastStation
        - radioStation
        - station
        - music
        - algorithmicRadioStation
        - news
      type: string
    MediaReference:
      enum:
        - unknown
        - currentlyPlaying
        - my
      type: string
    MediaSearch:
      properties:
        albumName:
          type: string
        artistName:
          type: string
        genreNames:
          items:
            type: string
          type: array
        mediaIdentifier:
          type: string
        mediaName:
          type: string
        mediaType:
          $ref: "#/components/schemas/MediaItemType"
        moodNames:
          items:
            type: string
          type: array
        reference:
          $ref: "#/components/schemas/MediaReference"
        releaseDate:
          $ref: "#/components/schemas/DateComponentsRange"
        sortOrder:
          $ref: "#/components/schemas/MediaSortOrder"
      type: object
    MediaSortOrder:
      enum:
        - unknown
        - newest
        - oldest
        - best
        - worst
        - popular
        - unpopular
        - trending
        - recommended
      type: string
    PlayMediaControl:
      properties:
        activity:
          $ref: "#/components/schemas/PlayMediaControlActivity"
        commands:
          $ref: "#/components/schemas/PlayMediaControlCommandSet"
        scheme:
          $ref: "#/components/schemas/PlayMediaControlScheme"
      required:
        - scheme
      type: object
    PlayMediaControlActivity:
      properties:
        playElapsed:
          format: uint32
          minimum: 5
          type: integer
        playElapsedInterval:
          format: uint32
          minimum: 5
          type: integer
        playPaused:
          default: 5
          format: uint32
          maximum: 60
          minimum: 5
          type: integer
      type: object
    PlayMediaControlCommandSet:
      properties:
        bookmarkTrack:
          type: boolean
        dislikeTrack:
          type: boolean
        likeTrack:
          type: boolean
        nextTrack:
          type: boolean
        preferSkipBackward:
          type: boolean
        preferSkipForward:
          type: boolean
        previousTrack:
          type: boolean
        seekToPlaybackPosition:
          type: boolean
        skipBackward:
          type: boolean
        skipForward:
          type: boolean
      type: object
    PlayMediaControlScheme:
      enum:
        - custom
        - onDemand
        - internetRadio
        - liveStreaming
        - audioBook
        - podcast
        - advertisement
      type: string
    PlayMediaIntent:
      allOf:
        - $ref: "#/components/schemas/Intent"
      properties:
        class:
          enum:
            - PlayMediaIntent
          type: string
        mediaItems:
          items:
            $ref: "#/components/schemas/MediaItem"
          type: array
        mediaSearch:
          $ref: "#/components/schemas/MediaSearch"
        playShuffled:
          type: boolean
        playbackQueueLocation:
          $ref: "#/components/schemas/PlaybackQueueLocation"
        playbackRepeatMode:
          $ref: "#/components/schemas/PlaybackRepeatMode"
        playbackSpeed:
          format: double
          type: number
        resumePlayback:
          type: boolean
      type: object
    PlayMediaIntentHandlingHandleInvocationResponse:
      allOf:
        - $ref: "#/components/schemas/InvocationResponse"
      properties:
        method:
          enum:
            - PlayMediaIntentHandling.handle
          type: string
        result:
          nullable: false
          properties:
            response:
              $ref: "#/components/schemas/PlayMediaIntentResponse"
          required:
            - response
          type: object
      required:
        - method
        - result
      type: object
    PlayMediaIntentHandlingInvocation:
      allOf:
        - $ref: "#/components/schemas/Invocation"
      properties:
        method:
          enum:
            - PlayMediaIntentHandling.resolveMediaItems
            - PlayMediaIntentHandling.resolvePlayShuffled
            - PlayMediaIntentHandling.resolvePlaybackQueueLocation
            - PlayMediaIntentHandling.resolvePlaybackRepeatMode
            - PlayMediaIntentHandling.resolveResumePlayback
            - PlayMediaIntentHandling.handle
          type: string
        params:
          nullable: false
          properties:
            intent:
              $ref: "#/components/schemas/PlayMediaIntent"
          required:
            - intent
          type: object
      required:
        - params
        - method
      type: object
    PlayMediaIntentHandlingInvocationResponse:
      discriminator:
        mapping:
          PlayMediaIntentHandling.handle: "#/components/schemas/PlayMediaIntentHandlingHa\
            ndleInvocationResponse"
          PlayMediaIntentHandling.resolveMediaItems: "#/components/schemas/PlayMediaInten\
            tHandlingResolveMediaItemsInvocationResponse"
          PlayMediaIntentHandling.resolvePlayShuffled: "#/components/schemas/PlayMediaInt\
            entHandlingResolvePlayShuffledInvocationResponse"
          PlayMediaIntentHandling.resolvePlaybackQueueLocation: "#/components/schemas/Pla\
            yMediaIntentHandlingResolvePlaybackQueueLocationInvocationResponse"
          PlayMediaIntentHandling.resolvePlaybackRepeatMode: "#/components/schemas/PlayMe\
            diaIntentHandlingResolvePlaybackRepeatModeInvocationResponse"
          PlayMediaIntentHandling.resolveResumePlayback: "#/components/schemas/PlayMediaI\
            ntentHandlingResolveResumePlaybackInvocationResponse"
          ProtocolException: "#/components/schemas/ProtocolExceptionInvocationResponse"
        propertyName: method
      oneOf:
        - $ref: "#/components/schemas/PlayMediaIntentHandlingResolveMediaItemsInvocationR\
            esponse"
        - $ref: "#/components/schemas/PlayMediaIntentHandlingResolvePlayShuffledInvocatio\
            nResponse"
        - $ref: "#/components/schemas/PlayMediaIntentHandlingResolvePlaybackQueueLocation\
            InvocationResponse"
        - $ref: "#/components/schemas/PlayMediaIntentHandlingResolvePlaybackRepeatModeInv\
            ocationResponse"
        - $ref: "#/components/schemas/PlayMediaIntentHandlingResolveResumePlaybackInvocat\
            ionResponse"
        - $ref: "#/components/schemas/PlayMediaIntentHandlingHandleInvocationResponse"
        - $ref: "#/components/schemas/ProtocolExceptionInvocationResponse"
    PlayMediaIntentHandlingResolveMediaItemsInvocationResponse:
      allOf:
        - $ref: "#/components/schemas/InvocationResponse"
      properties:
        method:
          enum:
            - PlayMediaIntentHandling.resolveMediaItems
          type: string
        result:
          nullable: false
          properties:
            resolutionResult:
              items:
                $ref: "#/components/schemas/PlayMediaMediaItemResolutionResult"
              type: array
          required:
            - resolutionResult
          type: object
      required:
        - method
        - result
      type: object
    PlayMediaIntentHandlingResolvePlayShuffledInvocationResponse:
      allOf:
        - $ref: "#/components/schemas/InvocationResponse"
      properties:
        method:
          enum:
            - PlayMediaIntentHandling.resolvePlayShuffled
          type: string
        result:
          nullable: false
          properties:
            resolutionResult:
              $ref: "#/components/schemas/BooleanResolutionResult"
          required:
            - resolutionResult
          type: object
      required:
        - method
        - result
      type: object
    PlayMediaIntentHandlingResolvePlaybackQueueLocationInvocationResponse:
      allOf:
        - $ref: "#/components/schemas/InvocationResponse"
      properties:
        method:
          enum:
            - PlayMediaIntentHandling.resolvePlaybackQueueLocation
          type: string
        result:
          nullable: false
          properties:
            resolutionResult:
              $ref: "#/components/schemas/PlaybackQueueLocationResolutionResult"
          required:
            - resolutionResult
          type: object
      required:
        - method
        - result
      type: object
    PlayMediaIntentHandlingResolvePlaybackRepeatModeInvocationResponse:
      allOf:
        - $ref: "#/components/schemas/InvocationResponse"
      properties:
        method:
          enum:
            - PlayMediaIntentHandling.resolvePlaybackRepeatMode
          type: string
        result:
          nullable: false
          properties:
            resolutionResult:
              $ref: "#/components/schemas/PlaybackRepeatModeResolutionResult"
          required:
            - resolutionResult
          type: object
      required:
        - method
        - result
      type: object
    PlayMediaIntentHandlingResolveResumePlaybackInvocationResponse:
      allOf:
        - $ref: "#/components/schemas/InvocationResponse"
      properties:
        method:
          enum:
            - PlayMediaIntentHandling.resolveResumePlayback
          type: string
        result:
          nullable: false
          properties:
            resolutionResult:
              $ref: "#/components/schemas/BooleanResolutionResult"
          required:
            - resolutionResult
          type: object
      required:
        - method
        - result
      type: object
    PlayMediaIntentResponse:
      allOf:
        - $ref: "#/components/schemas/IntentResponse"
      properties:
        class:
          enum:
            - PlayMediaIntentResponse
          type: string
        code:
          $ref: "#/components/schemas/PlayMediaIntentResponseCode"
      required:
        - class
        - code
      type: object
    PlayMediaIntentResponseCode:
      enum:
        - unspecified
        - success
        - failure
        - failureRequiringAppLaunch
        - failureUnknownMediaType
        - failureNoUnplayedContent
        - failureRestrictedContent
      type: string
    PlayMediaMediaItemResolutionResult:
      allOf:
        - $ref: "#/components/schemas/IntentResolutionResult"
      properties:
        class:
          enum:
            - PlayMediaMediaItemResolutionResult
          type: string
        confirmationRequired:
          properties:
            mediaItemToConfirm:
              $ref: "#/components/schemas/MediaItem"
          required:
            - mediaItemToConfirm
          type: object
          x-flow-exception: Requires Confirmation
        disambiguation:
          properties:
            mediaItemsToDisambiguate:
              items:
                $ref: "#/components/schemas/MediaItem"
              minItems: 2
              type: array
          required:
            - mediaItemsToDisambiguate
          type: object
          x-flow-exception: Requires Disambiguation
        success:
          properties:
            resolvedMediaItem:
              $ref: "#/components/schemas/MediaItem"
          required:
            - resolvedMediaItem
          type: object
        unsupported:
          properties:
            reason:
              $ref: "#/components/schemas/PlayMediaMediaItemUnsupportedReason"
          type: object
          x-flow-exception: Unsupported
      type: object
    PlayMediaMediaItemUnsupportedReason:
      enum:
        - loginRequired
        - subscriptionRequired
        - unsupportedMediaType
        - explicitContentSettings
        - restrictedContent
        - regionRestriction
      type: string
    PlayMediaRequest:
      properties:
        constraints:
          $ref: "#/components/schemas/Constraints"
        userActivity:
          $ref: "#/components/schemas/UserActivity"
        version:
          pattern: "[0-9]+\\.[0-9]+\\.[0-9]+"
          type: string
      required:
        - version
        - userActivity
        - constraints
      type: object
    PlaybackQueueLocation:
      enum:
        - unknown
        - now
        - next
        - later
      type: string
    PlaybackQueueLocationResolutionResult:
      allOf:
        - $ref: "#/components/schemas/IntentResolutionResult"
      properties:
        class:
          enum:
            - PlaybackQueueLocationResolutionResult
          type: string
        confirmationRequired:
          properties:
            playbackQueueLocationToConfirm:
              $ref: "#/components/schemas/PlaybackQueueLocation"
          required:
            - playbackQueueLocationToConfirm
          type: object
          x-flow-exception: Requires Confirmation
        success:
          properties:
            resolvedPlaybackQueueLocation:
              $ref: "#/components/schemas/PlaybackQueueLocation"
          required:
            - resolvedPlaybackQueueLocation
          type: object
      type: object
    PlaybackRepeatMode:
      enum:
        - unknown
        - none
        - all
        - one
      type: string
    PlaybackRepeatModeResolutionResult:
      allOf:
        - $ref: "#/components/schemas/IntentResolutionResult"
      properties:
        class:
          enum:
            - PlaybackRepeatModeResolutionResult
          type: string
        confirmationRequired:
          properties:
            playbackRepeatModeToConfirm:
              $ref: "#/components/schemas/PlaybackRepeatMode"
          required:
            - playbackRepeatModeToConfirm
          type: object
          x-flow-exception: Requires Confirmation
        success:
          properties:
            resolvedPlaybackRepeatMode:
              $ref: "#/components/schemas/PlaybackRepeatMode"
          required:
            - resolvedPlaybackRepeatMode
          type: object
      type: object
    PlayerContext:
      properties:
        activityIdentifier:
          maxLength: 250
          type: string
        contentIdentifier:
          $ref: "#/components/schemas/ContentIdentifier"
        offsetInMillis:
          example: 10942
          format: int64
          type: integer
        playbackSpeed:
          default: 1
          format: double
          type: number
        queueIdentifier:
          $ref: "#/components/schemas/QueueIdentifier"
      type: object
    ProtocolException:
      properties:
        code:
          format: int64
          type: integer
        methodIndex:
          format: uint32
          type: integer
        methodName:
          type: string
        reason:
          $ref: "#/components/schemas/ProtocolExceptionReason"
        retryWithDelay:
          default: -1
          format: float
          type: number
        trace:
          items:
            maxLength: 1000
            type: string
          maxItems: 64
          type: array
      required:
        - reason
      type: object
    ProtocolExceptionInvocationResponse:
      allOf:
        - $ref: "#/components/schemas/InvocationResponse"
      properties:
        exception:
          $ref: "#/components/schemas/ProtocolException"
        method:
          enum:
            - ProtocolException
          type: string
      required:
        - method
        - exception
      type: object
    ProtocolExceptionReason:
      enum:
        - unsupported
        - unauthorized
        - unexpected
        - invalid
        - unparseable
        - deprecated
        - internal
        - complex
        - busy
      type: string
    Queue:
      properties:
        content:
          items:
            $ref: "#/components/schemas/Content"
          maxItems: 1000
          type: array
        contentItemsCount:
          format: uint32
          nullable: true
          type: integer
        controls:
          $ref: "#/components/schemas/QueueControlMapping"
        identifier:
          $ref: "#/components/schemas/QueueIdentifier"
        insertPointer:
          $ref: "#/components/schemas/QueueInsertPointer"
        nextContentUrl:
          maxLength: 2000
          minLength: 1
          nullable: true
          type: string
        playPointer:
          $ref: "#/components/schemas/QueuePlayPointer"
        prerollSeconds:
          format: double
          type: number
        previousContentUrl:
          maxLength: 2000
          minLength: 1
          nullable: true
          type: string
        skipsRemaining:
          format: uint32
          nullable: true
          type: integer
        version:
          maxLength: 25
          pattern: "[0-9]+\\.[0-9]+\\.[0-9]+"
          type: string
      required:
        - version
        - identifier
        - content
      type: object
    QueueActivityReportEvent:
      enum:
        - local.playing.elapsed
        - local.playing.paused
        - local.playing.continued
        - local.playing.scrub
        - local.playing.fastForward
        - local.playing.fastRewind
        - local.playing.transitioned.naturally
        - local.playing.transitioned.skip_next
        - local.playing.transitioned.skip_previous
        - local.playing.transitioned.queue_replaced
        - local.stopped.naturally
        - local.stopped.skip_past_end
        - local.command.like
        - local.command.dislike
        - local.command.bookmark
      type: string
    QueueControlMapping:
      additionalProperties:
        $ref: "#/components/schemas/PlayMediaControl"
      properties:
        default:
          $ref: "#/components/schemas/PlayMediaControl"
      required:
        - default
      type: object
    QueueIdentifier:
      example: u104823q8201
      maxLength: 1024
      minLength: 1
      type: string
    QueueInsertPointer:
      properties:
        afterIdentifier:
          $ref: "#/components/schemas/ContentIdentifier"
        replace:
          default: false
          type: boolean
    QueuePlayPointer:
      nullable: true
      properties:
        contentIdentifier:
          $ref: "#/components/schemas/ContentIdentifier"
        offsetInMillis:
          example: 10942
          format: int64
          type: integer
      type: object
    ServiceDebugReference:
      format: uri
      maxLength: 2000
      type: string
    Session:
      properties:
        constraints:
          $ref: "#/components/schemas/Constraints"
        deadline:
          format: date-time
          type: string
        identifier:
          maxLength: 128
          minLength: 1
          type: string
        playerContext:
          $ref: "#/components/schemas/PlayerContext"
        requested:
          format: date-time
          type: string
        version:
          pattern: "[0-9]+\\.[0-9]+\\.[0-9]+"
          type: string
      required:
        - version
        - identifier
        - constraints
        - deadline
        - requested
      type: object
    UpdateActivityRequest:
      properties:
        constraints:
          $ref: "#/components/schemas/Constraints"
        nowPlaying:
          $ref: "#/components/schemas/PlayerContext"
        previouslyPlaying:
          $ref: "#/components/schemas/PlayerContext"
        report:
          $ref: "#/components/schemas/QueueActivityReportEvent"
        timestamp:
          format: date-time
          type: string
        userActivity:
          $ref: "#/components/schemas/UserActivity"
        version:
          pattern: "[0-9]+\\.[0-9]+\\.[0-9]+"
          type: string
      required:
        - version
        - timestamp
        - report
        - userActivity
      type: object
    UpdateActivityResponse:
      properties:
        queue:
          $ref: "#/components/schemas/Queue"
        userActivity:
          $ref: "#/components/schemas/UserActivity"
      type: object
    UpdateMediaAffinityIntent:
      allOf:
        - $ref: "#/components/schemas/Intent"
      properties:
        affinityType:
          $ref: "#/components/schemas/MediaAffinityType"
        class:
          enum:
            - UpdateMediaAffinityIntent
          type: string
        mediaItems:
          items:
            $ref: "#/components/schemas/MediaItem"
          type: array
        mediaSearch:
          $ref: "#/components/schemas/MediaSearch"
      required:
        - class
      type: object
    UpdateMediaAffinityIntentHandlingHandleInvocationResponse:
      allOf:
        - $ref: "#/components/schemas/InvocationResponse"
      properties:
        method:
          enum:
            - UpdateMediaAffinityIntentHandling.handle
          type: string
        result:
          nullable: false
          properties:
            response:
              $ref: "#/components/schemas/UpdateMediaAffinityIntentResponse"
          required:
            - response
          type: object
      required:
        - method
        - result
      type: object
    UpdateMediaAffinityIntentHandlingInvocation:
      allOf:
        - $ref: "#/components/schemas/Invocation"
      discriminator:
        mapping:
          UpdateMediaAffinityIntentHandling.handle: "#/components/schemas/UpdateMediaAffinityIntentHandlingInvocation"
          UpdateMediaAffinityIntentHandling.resolveAffinityType: "#/components/schemas/UpdateMediaAffinityIntentHandlingInvocation"
          UpdateMediaAffinityIntentHandling.resolveMediaItems: "#/components/schemas/UpdateMediaAffinityIntentHandlingInvocation"
        propertyName: method
      properties:
        method:
          enum:
            - UpdateMediaAffinityIntentHandling.resolveMediaItems
            - UpdateMediaAffinityIntentHandling.resolveAffinityType
            - UpdateMediaAffinityIntentHandling.handle
          type: string
        params:
          nullable: false
          properties:
            intent:
              $ref: "#/components/schemas/UpdateMediaAffinityIntent"
          required:
            - intent
          type: object
      required:
        - method
        - params
      type: object
    UpdateMediaAffinityIntentHandlingInvocationResponse:
      discriminator:
        mapping:
          ProtocolException: "#/components/schemas/ProtocolExceptionInvocationResponse"
          UpdateMediaAffinityIntentHandling.handle: "#/components/schemas/UpdateMediaAffi\
            nityIntentHandlingHandleInvocationResponse"
          UpdateMediaAffinityIntentHandling.resolveAffinityType: "#/components/schemas/Up\
            dateMediaAffinityIntentHandlingResolveAffinityTypeInvocationRespons\
            e"
          UpdateMediaAffinityIntentHandling.resolveMediaItems: "#/components/schemas/Upda\
            teMediaAffinityIntentHandlingResolveMediaItemsInvocationResponse"
        propertyName: method
      oneOf:
        - $ref: "#/components/schemas/UpdateMediaAffinityIntentHandlingResolveMediaItemsI\
            nvocationResponse"
        - $ref: "#/components/schemas/UpdateMediaAffinityIntentHandlingResolveAffinityTyp\
            eInvocationResponse"
        - $ref: "#/components/schemas/UpdateMediaAffinityIntentHandlingHandleInvocationRe\
            sponse"
        - $ref: "#/components/schemas/ProtocolExceptionInvocationResponse"
    UpdateMediaAffinityIntentHandlingResolveAffinityTypeInvocationResponse:
      allOf:
        - $ref: "#/components/schemas/InvocationResponse"
      properties:
        method:
          enum:
            - UpdateMediaAffinityIntentHandling.resolveAffinityType
          type: string
        result:
          nullable: false
          properties:
            resolutionResult:
              $ref: "#/components/schemas/MediaAffinityTypeResolutionResult"
          required:
            - resolutionResult
          type: object
      required:
        - method
        - result
      type: object
    UpdateMediaAffinityIntentHandlingResolveMediaItemsInvocationResponse:
      allOf:
        - $ref: "#/components/schemas/InvocationResponse"
      properties:
        method:
          enum:
            - UpdateMediaAffinityIntentHandling.resolveMediaItems
          type: string
        result:
          nullable: false
          properties:
            resolutionResult:
              items:
                $ref: "#/components/schemas/UpdateMediaAffinityMediaItemResolutionResult"
              type: array
          required:
            - resolutionResult
          type: object
      required:
        - method
        - result
      type: object
    UpdateMediaAffinityIntentResponse:
      allOf:
        - $ref: "#/components/schemas/IntentResponse"
      properties:
        class:
          enum:
            - UpdateMediaAffinityIntentResponse
          type: string
        code:
          $ref: "#/components/schemas/UpdateMediaAffinityIntentResponseCode"
      required:
        - class
        - code
      type: object
    UpdateMediaAffinityIntentResponseCode:
      enum:
        - unspecified
        - inProgress
        - success
        - failure
        - failureRequiringAppLaunch
      type: string
    UpdateMediaAffinityMediaItemResolutionResult:
      allOf:
        - $ref: "#/components/schemas/IntentResolutionResult"
      properties:
        class:
          enum:
            - UpdateMediaAffinityMediaItemResolutionResult
          type: string
        confirmationRequired:
          properties:
            mediaItemToConfirm:
              $ref: "#/components/schemas/MediaItem"
          required:
            - mediaItemToConfirm
          type: object
          x-flow-exception: Requires Confirmation
        disambiguation:
          properties:
            mediaItemsToDisambiguate:
              items:
                $ref: "#/components/schemas/MediaItem"
              minItems: 2
              type: array
          required:
            - mediaItemsToDisambiguate
          type: object
        success:
          properties:
            resolvedMediaItem:
              $ref: "#/components/schemas/MediaItem"
          required:
            - resolvedMediaItem
          type: object
        unsupported:
          properties:
            reason:
              $ref: "#/components/schemas/UpdateMediaAffinityMediaItemUnsupportedReason"
          type: object
          x-flow-exception: Unsupported
      type: object
    UpdateMediaAffinityMediaItemUnsupportedReason:
      enum:
        - loginRequired
        - subscriptionRequired
        - unsupportedMediaType
        - explicitContentSettings
      type: string
    UserActivity:
      nullable: true
      properties:
        activityType:
          example: com.mediastreamingservice.playmedia
          maxLength: 250
          type: string
        persistentIdentifier:
          maxLength: 250
          type: string
        title:
          maxLength: 250
          type: string
        userInfo:
          title: UserActivityUserInfo
          type: object
        version:
          maxLength: 25
          pattern: "[0-9]+\\.[0-9]+\\.[0-9]+"
          type: string
      required:
        - version
        - activityType
      type: object
x-important: "IMPORTANT:  This OpenAPI Specification is only for use in
  accordance with the terms of the Apple Developer Program License
  Agreement.  You may not use this OpenAPI Specification unless you have agreed
  to the Apple Developer Program License Agreement."
