Commit f7cadc7e authored by bradburyr's avatar bradburyr
Browse files

Real-Time media Communication (RTC)

parent 8edfe5ac
Loading
Loading
Loading
Loading
+44 −25
Original line number Diff line number Diff line
@@ -75,6 +75,8 @@ components:
      required:
        - direction
      properties:
        direction:
          type: string
        sourceAddress:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr'
        destinationAddress:
@@ -91,23 +93,25 @@ components:
          $ref: '#/components/schemas/Uint20'
        securityParametersIndex:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32'
        direction:
          type: string

    ServiceDataFlowDescription:
    ApplicationFlowDescription:
      type: object
      required:
        - sdfMethod
        - filterMethod
      oneOf:
        - required: [flowDescription]
        - required: [packetFilter]
        - required: [domainName]
      properties:
        sdfMethod:
        filterMethod:
          $ref: '#/components/schemas/SdfMethod'
        flowDescription:
        packetFilter:
          $ref: '#/components/schemas/IpPacketFilterSet'
        domainName:
          type: string
        mediaType:
          $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/MediaType'
        mediaTransportParameters:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/ProtocolDescription'

    M1UnidirectionalQoSSpecification:
      type: object
@@ -122,20 +126,30 @@ components:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        defaultPacketLossRate:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger'
        pduSetQosLimits:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSetQosPara'

    M1QoSSpecification:
      type: object
      required:
        - componentReference
      anyOf:
        - required: [qosReference]
        - required: [downlink]
        - required: [uplink]
      properties:
        componentReference:
          type: string
          minLength: 1
        qosReference:
          type: string
        downlink:
        downlinkQoSSpecification:
          $ref: '#/components/schemas/M1UnidirectionalQoSSpecification'
        uplink:
        uplinkQoSSpecification:
          $ref: '#/components/schemas/M1UnidirectionalQoSSpecification'
        pduSetMarking:
          type: boolean
          default: false

    M5BitRateSpecification:
      type: object
@@ -165,6 +179,10 @@ components:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger'
        desiredPacketLossRate:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger'
        desiredDownlinkPduSetQosParameters:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSetQosPara'
        desiredUplinkPduSetQosParameters:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSetQosPara'

    ChargingSpecification:
      type: object
@@ -200,21 +218,6 @@ components:
        reason:
          type: string

    EndpointAddress:
      type: object
      required:
        - portNumber
      properties:
        hostname:
          type: string
          minLength: 1
        ipv4Addr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
        ipv6Addr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
        portNumber:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint16'

    EdgeProcessingEligibilityCriteria:
      type: object
      required:
@@ -226,7 +229,7 @@ components:
        serviceDataFlowDescriptions:
          type: array
          items:
            $ref: '#/components/schemas/ServiceDataFlowDescription'
            $ref: '#/components/schemas/ApplicationFlowDescription'
        ueLocations:
          type: array
          items:
@@ -238,6 +241,21 @@ components:
        appRequest:
          type: boolean

    EndpointAddress:
      type: object
      required:
        - domainName
        - portNumber
      properties:
        domainName:
          type: string
          minLength: 1
        portNumbers:
          type: array
          minItems: 1
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint16'

    UnidirectionalQoSSpecification:
      type: object
      description: A specification for network Quality of Service in either the downlink or uplink direction.
@@ -353,6 +371,7 @@ components:
          enum:
            - MS_DOWNLINK
            - MS_UPLINK
            - RTC
        - type: string
          description: >
            This string provides forward-compatibility with future
+0 −0

File mode changed from 100644 to 100755.

+5 −2
Original line number Diff line number Diff line
@@ -290,7 +290,10 @@ components:
              $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
            dnn:
              $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
        qoSSpecification:
        qoSSpecifications:
          type: array
          minItems: 1
          items:
            $ref: 'TS26510_CommonData.yaml#/components/schemas/M1QoSSpecification'
        chargingSpecification:
          $ref: 'TS26510_CommonData.yaml#/components/schemas/ChargingSpecification'
+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'
+0 −0

File mode changed from 100644 to 100755.

Loading