Commit a95b64c0 authored by bradburyr's avatar bradburyr
Browse files

[S4-241347] Initial commit.

parent 7a7533d6
Loading
Loading
Loading
Loading
+282 −0
Original line number Diff line number Diff line
openapi: 3.0.0
info:
  title: Maf_Provisioning_RealTimeCommunication
  version: 1.0.0
  description: |
    Media Delivery: Real-Time media Communication Provisioning API
    © 2024, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).
    All rights reserved.

tags:
  - name: Maf_Provisioning_RealTimeCommunication
    description: 'Media Delivery: Real-Time media Communication Provisioning API'

externalDocs:
  description: 'TS 26.510 V18.0.0; Media Delivery; Interactions and APIs for media session handling'
  url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.510/'

servers:
  - url: '{apiRoot}/3gpp-maf-provisioning/v1'
    variables:
      apiRoot:
        default: https://example.com
        description: See 3GPP TS 29.512 clause 6.1.

security:
  - {}
  - OAuth2ClientCredentials: [] 

paths:
  /provisioning-sessions/{provisioningSessionId}/rtc-configuration:
    parameters:
      - name: provisioningSessionId
        in: path
        required: true
        schema: 
          $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId'
        description: 'The resource identifier of an existing Provisioning Session.'
    post:
      operationId: activateRealTimeCommunication
      summary: 'Activate the Real-Time media Communication procedure for the specified Provisioning Session by providing the Real-Time media Communication Configuration'
      requestBody:
        description: 'A JSON representation of a Real-Time media Communication Configuration'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RTCConfiguration'
      responses:
        '201': # OK
          description: 'Real-Time media Communication Configuration Created'
          headers:
            Location:
              description: 'URL of the newly created Real-Time media Communication Configuration (same as request URL).'
              required: true
              schema:
                $ref: 'TS26510_CommonData.yaml#/components/schemas/AbsoluteUrl'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RTCConfiguration'
        '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401': # Unauthorized
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '411': # Length Required
          $ref: 'TS29571_CommonData.yaml#/components/responses/411'
        '413': # Payload Too Large
          $ref: 'TS29571_CommonData.yaml#/components/responses/413'
        '414': # URI Too Long
          $ref: 'TS29571_CommonData.yaml#/components/responses/414'
        '415': # Unsupported Media Type
          $ref: 'TS29571_CommonData.yaml#/components/responses/415'
        '500': # Internal Server Error
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503': # Service Unavailable
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
    get:
      operationId: retrieveRTCConfiguration
      summary: 'Retrieve the Real-Time media Communication Configuration of the specified Provisioning Session'
      responses:
        '200': # OK
          description: 'Success'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RTCConfiguration'
        '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401': # Unauthorized
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '404': # Not Found
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '410': # Gone: Resource no longer exists
          $ref: 'TS29571_CommonData.yaml#/components/responses/410'
        '413': # Payload Too Large: No request body allowed for this operation
          $ref: 'TS29571_CommonData.yaml#/components/responses/413'
        '414': # URI too long
          $ref: 'TS29571_CommonData.yaml#/components/responses/414'
        '500': # Internal Server Error
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503': # Service Unavailable
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default' 
    put:
      operationId: updateRTCConfiguration
      summary: 'Update the Real-Time media Communication Configuration for the specified Provisioning Session'
      requestBody:
        description: 'A JSON representation of a Real-Time media Communication Configuration'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RTCConfiguration'
      responses:
        '200': # OK
          description: 'Real-Time media Communication Configuration Updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RTCConfiguration'
        '204': # No Content
          description: 'Real-Time media Communication Configuration Unchanged'
        '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401': # Unauthorized
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '403': # Forbidden
          $ref: 'TS29571_CommonData.yaml#/components/responses/403'
        '404': # Not Found
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '410': # Gone: Resource no longer exists
          $ref: 'TS29571_CommonData.yaml#/components/responses/410'
        '411': # Length Required
          $ref: 'TS29571_CommonData.yaml#/components/responses/411'
        '413': # Payload Too Large
          $ref: 'TS29571_CommonData.yaml#/components/responses/413'
        '414': # URI Too Long
          $ref: 'TS29571_CommonData.yaml#/components/responses/414'
        '415': # Unsupported Media Type
          $ref: 'TS29571_CommonData.yaml#/components/responses/415'
        '500': # Internal Server Error
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503': # Service Unavailable
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default' 
    patch:
      operationId: patchRTCConfiguration
      summary: 'Patch the Real-Time media Communication Configuration for the specified Provisioning Session'
      requestBody:
        description: 'A JSON representation of a Real-Time media Communication Configuration'
        required: true
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/RTCConfiguration'
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/RTCConfiguration'
      responses:
        '200': # OK
          description: 'Real-Time media Communication Configuration Updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RTCConfiguration'
        '204': # No Content
          description: 'Real-Time media Communication Configuration Unchanged'
        '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401': # Unauthorized
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '403': # Forbidden
          $ref: 'TS29571_CommonData.yaml#/components/responses/403'
        '404': # Not Found
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '410': # Gone: Resource no longer exists
          $ref: 'TS29571_CommonData.yaml#/components/responses/410'
        '411': # Length Required
          $ref: 'TS29571_CommonData.yaml#/components/responses/411'
        '413': # Payload Too Large
          $ref: 'TS29571_CommonData.yaml#/components/responses/413'
        '414': # URI Too Long
          $ref: 'TS29571_CommonData.yaml#/components/responses/414'
        '415': # Unsupported Media Type
          $ref: 'TS29571_CommonData.yaml#/components/responses/415'
        '500': # Internal Server Error
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503': # Service Unavailable
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default' 
    delete:
      operationId: destroyRTCConfiguration
      summary: 'Destroy the current Real-Time media Communication Configuration of the specified Provisioning Session'
      responses:
        '204': # No Content
          description: 'Real-Time media Communication Configuration Destroyed'
        '400': # Bad Request: The syntax of the HTTP request is malformed in a way not covered by one of the following more specific client errors
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401': # Unauthorized
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '404': # Not Found
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '410': # Gone: Resource no longer exists
          $ref: 'TS29571_CommonData.yaml#/components/responses/410'
        '413': # Payload Too Large: No request body allowed for this operation
          $ref: 'TS29571_CommonData.yaml#/components/responses/413'
        '414': # URI Too Long
          $ref: 'TS29571_CommonData.yaml#/components/responses/414'
        '500': # Internal Server Error
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503': # Service Unavailable
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'

components:
  securitySchemes:
    OAuth2ClientCredentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: '{tokenUrl}'
          scopes: {}

  schemas:
    RTCConfiguration:
      type: object
      description: "A representation of a Real-Time media Communication Configuration resource."
      properties:
        edgeResourcesConfiguration:
          $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId'
        enableStunService:
          type: boolean
          default: false
        stunEndpoints:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/M1EndpointAccess'
        enableTurnService:
          type: boolean
          default: false
        turnEndpoints:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/M1EndpointAccess'
        enableSwapService:
          type: boolean
          default: false
        swapEndpoints:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/M1EndpointAccess'

    M1EndpointAccess:
      type: object
      description: "Access details used for provisioning a service endpoint."
      allOf:
        - $ref: 'TS26510_CommonData.yaml#/components/schemas/EndpointAddress'
        - type: object
          properties:
            credentials:
              type: object
              required:
                - username
                - passphrase
              properties:
                username:
                  type: string
                  minLength: 1
                passphrase:
                  type: string
                  minLength: 1
            certificateId:
              $ref: 'TS26510_CommonData.yaml#/components/schemas/ResourceId'