C.3 OpenAPI representation of the M1 APIs

26.5123GPP5G Media Streaming (5GMS)ProtocolsRelease 17TS

C.3.1 M1_ProvisioningSessions API

openapi: 3.0.0

info:

  title: M1_ProvisioningSessions

  version: 2.0.0

  description: |

    5GMS AF M1 Provisioning Sessions API

    © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).

    All rights reserved.

tags:

  – name: M1_ProvisioningSessions

    description: ‘5G Media Streaming: Provisioning (M1) APIs: Provisioning Sessions’

externalDocs:

  description: ‘TS 26.512 V17.2.0; 5G Media Streaming (5GMS); Protocols’

  url: ‘https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/’

servers:

  – url: ‘{apiRoot}/3gpp-m1/v2’

    variables:

      apiRoot:

        default: https://example.com

        description: See 3GPP TS 29.512 clause 6.1.

paths:

  /provisioning-sessions:

    post:

      operationId: createProvisioningSession

      summary: ‘Create a new Provisioning Session’

      responses:

        ‘201’:

          description: ‘Provisioning Session Created’

          headers:

            Location:

              description: ‘URL including the resource identifier of the newly created Provisioning Session.’

              required: true

              schema:

                $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’

          content:

            application/json:

              schema:

                $ref: ‘#/components/schemas/ProvisioningSession’

  /provisioning-sessions/{provisioningSessionId}:

    parameters:

        – name: provisioningSessionId

          in: path

          required: true

          schema:

            $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

          description: ‘The resource identifier of an existing Provisioning Session.’

    get:

      operationId: getProvisioningSessionById

      summary: ‘Retrieve an existing Provisioning Session’

      responses:

        ‘200’:

          description: ‘Success’

          content:

            application/json:

              schema:

                $ref: ‘#/components/schemas/ProvisioningSession’

    delete:

      operationId: destroyProvisioningSession

      summary: ‘Destroy an existing Provisioning Session’

      responses:

        ‘204’:

          description: ‘Provisioning Session Destroyed’

          # No Content

components:

  schemas:

    ProvisioningSession:

      type: object

      description: "A representation of a Provisioning Session."

      required:

        – provisioningSessionId

        – provisioningSessionType

        – externalApplicationId

      properties:

        provisioningSessionId:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        provisioningSessionType:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ProvisioningSessionType’

        aspId:

          $ref: ‘TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AspId’

        externalApplicationId:

          $ref: ‘TS29571_CommonData.yaml#/components/schemas/ApplicationId’

        serverCertificateIds:

          type: array

          items:

            $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

          minItems: 1

          uniqueItems: true

        contentPreparationTemplateIds:

          type: array

          items:

            $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

          minItems: 1

          uniqueItems: true

        metricsReportingConfigurationIds:

          type: array

          items:

            $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

          minItems: 1

          uniqueItems: true

        policyTemplateIds:

          type: array

          items:

            $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

          minItems: 1

          uniqueItems: true

        edgeResourcesConfigurationIds:

          type: array

          items:

            $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

          minItems: 1

          uniqueItems: true

        eventDataProcessingConfigurationIds:

          type: array

          items:

            $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

          minItems: 1

          uniqueItems: true

C.3.2 M1_ServerCertificatesProvisioning API

openapi: 3.0.0

info:

  title: M1_ServerCertificatesProvisioning

  version: 2.0.0

  description: |

    5GMS AF M1 Server Certificates Provisioning API

    © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).

    All rights reserved.

tags:

  – name: M1_ServerCertificatesProvisioning

    description: ‘5G Media Streaming: Provisioning (M1) APIs: Server Certificates Provisioning’

externalDocs:

  description: ‘TS 26.512 V17.2.0; 5G Media Streaming (5GMS); Protocols’

  url: ‘https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/’

servers:

  – url: ‘{apiRoot}/3gpp-m1/v2’

    variables:

      apiRoot:

        default: https://example.com

        description: See 3GPP TS 29.512 clause 6.1.

paths:

  /provisioning-sessions/{provisioningSessionId}/certificates:

    parameters:

      – name: provisioningSessionId

        in: path

        required: true

        schema:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: The resource identifier of an existing Provisioning Session.’

    post:

      operationId: createOrReserveServerCertificate

      summary: ‘Create or reserve a Service Certificate resource’

      description: ‘Without the optional csr query parameter, an X.509 certificate is generated and this is returned. If the csr query parameter is present, a Certificate Signing Request is instead generated and returned, allowing the X.509 certificate to be generated by the invoker and later uploaded.’

      parameters:

        – in: query

          name: csr

          schema: 

            type: string

          description: ‘When present, return a Certificate Signing Request instead of generating an X.509 certificate’

      responses:

        ‘200’:

          description: ‘Server Certificate Created’

          headers:

            Location: 

              description: ‘URL of the newly created Server Certificate resource’

              required: true

              schema:

                $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’

          content:

            ‘application/x-pem-file’:

              schema:

                type: string

  

  /provisioning-sessions/{provisioningSessionId}/certificates/{certificateId}:

    parameters:

      – name: provisioningSessionId

        in: path

        required: true

        schema:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: The resource identifier of an existing Provisioning Session.’

      – name: certificateId

        in: path

        required: true

        schema:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘The resource identifier of an existing Server Certificate’

    put:

      operationId: uploadServerCertificate

      summary: "Upload the X.509 certificate for a previously reserved Server Certificate resource"

      requestBody:

        required: true

        content:

          application/x-pem-file:

            schema:

              type: string

      responses:

        ‘204’:

          description: ‘Server Certificate Updated’

    get:

      operationId: retrieveServerCertificate

      summary: ‘Retrieve the X.509 certificate representation of the specified Server Certificate resource’

      responses:

        ‘200’:

          description: ‘Success’

          content:

            ‘application/x-pem-file’:

              schema:

                type: string

        ‘204’:

          description: ‘Awaiting Upload’

        ‘404’:

          description: ‘Not Found’

    delete:

      operationId: destroyServerCertificate

      summary: ‘Destroy an existing Server Certificate resource’

      responses:

        ‘204’:

          description: ‘Server Certificate Destroyed’

C.3.3 M1_ContentPreparationTemplatesProvisioning API

openapi: 3.0.0

info:

  title: M1_ContentPreparationTemplatesProvisioning

  version: 2.0.0

  description: |

    5GMS AF M1 Content Preparation Templates Provisioning API

    © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).

    All rights reserved.

tags:

  – name: M1_ContentPreparationTemplatesProvisioning

    description: ‘5G Media Streaming: Provisioning (M1) APIs: Content Preparation Templates Provisioning’

externalDocs:

  description: ‘TS 26.512 V17.2.0; 5G Media Streaming (5GMS); Protocols’

  url: ‘https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/’

servers:

  – url: ‘{apiRoot}/3gpp-m1/v2’

    variables:

      apiRoot:

        default: https://example.com

        description: See 3GPP TS 29.512 clause 6.1.

paths:

  /provisioning-sessions/{provisioningSessionId}/content-preparation-templates:

    parameters:

      – name: provisioningSessionId

        in: path

        required: true

        schema: 

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘The resource identifier of an existing Provisioning Session.’

    post:

      operationId: createContentPreparationTemplate

      summary: ‘Create (and optionally upload) a new Content Preparation Template for the specified Provisioning Session’

      requestBody:

        description: ‘A Content Preparation Template of any type’

        required: true

        content:

          ‘*/*’:

            schema:

              type: string

      responses:

        ‘201’:

          description: ‘Content Preparation Template Created’

          headers:

            Location:

              description: ‘URL of the newly created Content Preparation Template.’

              required: true

              schema:

                $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’

  /provisioning-sessions/{provisioningSessionId}/content-preparation-templates/{contentPreparationTemplateId}:

    parameters:

      – name: provisioningSessionId

        in: path

        required: true

        schema: 

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘The resource identifier of an existing Provisioning Session.’

      – name: contentPreparationTemplateId

        in: path

        required: true

        schema: 

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘The resource identifier of an existing Content Preparation Template.’

    get:

      operationId: retrieveContentPreparationTemplate

      summary: ‘Retrieve the specified Content Preparation Template of the specified Provisioning Session’

      responses:

        ‘200’:

          description: ‘Success’

          content:

            ‘*/*’:

              schema:

                type: string

    put:

      operationId: updateContentPreparationTemplate

      summary: ‘Update the specified Content Preparation Template for the specified Provisioning Session’

      requestBody:

        description: ‘A Content Preparation Template of any type’

        required: true

        content:

          ‘*/*’:

            schema:

              type: string

      responses:

        ‘204’:

          description: ‘Updated Content Preparation Template’

        ‘404’:

          description: ‘Not Found’

    patch:

      operationId: patchContentPreparationTemplate

      summary: ‘Patch the specified Content Preparation Template for the specified Provisioning Session’

      requestBody:

        description: ‘A Content Preparation Template patch of any type’

        required: true

        content:

          application/merge-patch+json:

            schema:

              type: string

          application/json-patch+json:

            schema:

              type: string

      responses:

        ‘200’:

          description: ‘Patched Content Preparation Templates’

          content:

            ‘*/*’:

              schema:

                type: string

        ‘404’:

          description: ‘Not Found’

    delete:

      operationId: destroyContentPreparationTemplate

      summary: ‘Destroy the specified Content Preparation Template of the specified Provisioning Session’

      responses:

        ‘204’:

          description: ‘Destroyed Content Preparation Template’

        ‘404’:

          description: ‘Not Found’

C.3.4 M1_ContentProtocolsDiscovery API

openapi: 3.0.0

info:

  title: M1_ContentProtocolsDiscovery

  version: 2.0.0

  description: |

    5GMS AF M1 Content Protocols Discovery API

    © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).

    All rights reserved.

tags:

  – name: M1_ContentDiscovery

    description: ‘5G Media Streaming: Provisioning (M1) APIs: Content Protocols Discovery’

externalDocs:

  description: ‘TS 26.512 V17.2.0; 5G Media Streaming (5GMS); Protocols’

  url: ‘https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/’

servers:

  – url: ‘{apiRoot}/3gpp-m1/v2’

    variables:

      apiRoot:

        default: https://example.com

        description: See 3GPP TS 29.512 clause 6.1.

paths:

  /provisioning-sessions/{provisioningSessionId}/protocols:

    parameters:

      – name: provisioningSessionId

        in: path

        required: true

        schema: 

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘The resource identifier of an existing Provisioning Session.’

    get:

      operationId: retrieveContentProtocols

      summary: ‘Retrieve the set of Content Protocols supported by the specified Provisioning Session’

      responses:

        ‘200’:

          description: ‘Success’

          content:

            application/json:

              schema:

                $ref: ‘#/components/schemas/ContentProtocols’

components:

  schemas:

    ContentProtocolDescriptor:

      type: object

      description: "A descriptor describing a content protocol."

      required:

        – termIdentifier

      properties:

        termIdentifier:

          $ref: ‘TS29571_CommonData.yaml#/components/schemas/Uri’

        descriptionLocator:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’

    ContentProtocols:

      type: object

      description: "A representation of the Content Protocols resource."

      properties:

        downlinkIngestProtocols:

          type: array

          items:

            $ref: ‘#/components/schemas/ContentProtocolDescriptor’

          minItems: 1

        uplinkEgestProtocols:

          type: array

          items:

            $ref: ‘#/components/schemas/ContentProtocolDescriptor’

          minItems: 1

        geoFencingLocatorTypes:

          type: array

          items:

            $ref: ‘TS29571_CommonData.yaml#/components/schemas/Uri’

          minItems: 1

C.3.5 M1_ContentHostingProvisioning API

openapi: 3.0.0

info:

  title: M1_ContentHostingProvisioning

  version: 2.1.0

  description: |

    5GMS AF M1 Content Hosting Provisioning API

    © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).

    All rights reserved.

tags:

  – name: M1_ContentHostingProvisioning

    description: ‘5G Media Streaming: Provisioning (M1) APIs: Content Hosting Provisioning’

externalDocs:

  description: ‘TS 26.512 V17.3.0; 5G Media Streaming (5GMS); Protocols’

  url: ‘https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/’

servers:

  – url: ‘{apiRoot}/3gpp-m1/v2’

    variables:

      apiRoot:

        default: https://example.com

        description: See 3GPP TS 29.512 clause 6.1.

paths:

  /provisioning-sessions/{provisioningSessionId}/content-hosting-configuration:

    parameters:

      – name: provisioningSessionId

        in: path

        required: true

        schema:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘The resource identifier of an existing Provisioning Session.’

    post:

      operationId: createContentHostingConfiguration

      summary: ‘Create (and optionally upload) the Content Hosting Configuration for the specified Provisioning Session’

      requestBody:

        description: ‘A JSON representation of a Content Hosting Configuration’

        required: true

        content:

          application/json:

            schema:

              $ref: ‘#/components/schemas/ContentHostingConfiguration’

      responses:

        ‘201’:

          description: ‘Content Hosting Configuration Created’

          headers:

            Location:

              description: ‘URL of the newly created Content Hosting Configuration (same as request URL).’

              required: true

              schema:

                $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’

    get:

      operationId: retrieveContentHostingConfiguration

      summary: ‘Retrieve the Content Hosting Configuration of the specified Provisioning Session’

      responses:

        ‘200’:

          description: ‘Success’

          content:

            application/json:

              schema:

                $ref: ‘#/components/schemas/ContentHostingConfiguration’

        ‘404’:

          description: ‘Not Found’

    put:

      operationId: updateContentHostingConfiguration

      summary: ‘Update the Content Hosting Configuration for the specified Provisioning Session’

      requestBody:

        description: ‘A JSON representation of a Content Hosting Configuration’

        required: true

        content:

          application/json:

            schema:

              $ref: ‘#/components/schemas/ContentHostingConfiguration’

      responses:

        ‘204’:

          description: ‘Updated Content Hosting Configuration’

        ‘404’:

          description: ‘Not Found’

    patch:

      operationId: patchContentHostingConfiguration

      summary: ‘Patch the Content Hosting Configuration for the specified Provisioning Session’

      requestBody:

        description: ‘A JSON representation of a Content Hosting Configuration’

        required: true

        content:

          application/merge-patch+json:

            schema:

              $ref: ‘#/components/schemas/ContentHostingConfiguration’

          application/json-patch+json:

            schema:

              $ref: ‘#/components/schemas/ContentHostingConfiguration’

      responses:

        ‘200’:

          description: ‘Patched Content Hosting Configuration’

          content:

            application/json:

              schema:

                $ref: ‘#/components/schemas/ContentHostingConfiguration’

        ‘404’:

          description: ‘Not Found’

    delete:

      operationId: destroyContentHostingConfiguration

      summary: ‘Destroy the current Content Hosting Configuration of the specified Provisioning Session’

      responses:

        ‘204’:

          description: ‘Destroyed Content Hosting Configuration’

        ‘404’:

          description: ‘Not Found’

          

  /provisioning-sessions/{provisioningSessionId}/content-hosting-configuration/purge:

    parameters:

        – name: provisioningSessionId

          in: path

          required: true

          schema:

            $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

          description: A unique identifier of the Provisioning

    post:

      operationId: purgeContentHostingCache

      summary: ‘Purge the content of the cache for the Content Hosting Configuration of the specified Provisioning Session’

      requestBody:

        description: ‘The regular expression pattern for resources to purge from the cache’

        required: true

        content:

          application/x-www-form-urlencoded:

            schema:

              properties:

                pattern: 

                  description: ‘Keyword’

                  type: string

                value:

                  description: ‘The regular expression’

                  type: string

      responses:

        ‘200’:

          description: ‘Content Purged’

components:

  schemas:

    IngestConfiguration:

      type: object

      description: ‘A configuration for content ingest.’

      properties:

        pull:

          type: boolean

        protocol:

          $ref: ‘TS29571_CommonData.yaml#/components/schemas/Uri’

        baseURL:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’

    PathRewriteRule:

      type: object

      description: ‘A rule to manipulate URL paths.’

      required:

        – requestPathPattern

        – mappedPath

      properties:

        requestPathPattern:

          type: string

        mappedPath:

          type: string

    CachingConfiguration:

      type: object

      description: ‘A content caching configuration.’

      required:

        – urlPatternFilter

      properties:

        urlPatternFilter:

          type: string

        cachingDirectives:

          type: object

          required:

            – noCache

          properties:

            statusCodeFilters:

              type: array

              items:

                type: integer

            noCache:

              type: boolean

            maxAge:

              type: integer

              format: int32

    DistributionConfiguration:

      type: object

      description: ‘A content distribution configuration.’

      properties:

        contentPreparationTemplateId:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        canonicalDomainName:

          type: string

        domainNameAlias:

          type: string

        baseURL:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’

        pathRewriteRules:

          type: array

          items:

            $ref: ‘#/components/schemas/PathRewriteRule’

        cachingConfigurations:

          type: array

          items:

            $ref: ‘#/components/schemas/CachingConfiguration’

        geoFencing:

          type: object

          required:

            – locatorType

            – locators

          properties:

            locatorType:

              $ref: ‘TS29571_CommonData.yaml#/components/schemas/Uri’

            locators:

              type: array

              items: 

                type: string

                description: ‘Format of individual locators depends on the locatorType.’

              minItems: 1

        urlSignature:

          type: object

          required:

            – urlPattern

            – tokenName

            – passphraseName

            – passphrase

            – tokenExpiryName

            – useIPAddress

          properties:

            urlPattern:

              type: string

            tokenName:

              type: string

            passphraseName:

              type: string

            passphrase:

              type: string

            tokenExpiryName:

              type: string

            useIPAddress:

              type: boolean

            ipAddressName:

              type: string

        certificateId:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        supplementaryDistributionNetworks:

          type: array

          items:

            type: object

            description: "A duple tying a type of supplementary distribution network to its distribution mode."

            required:

              – distributionNetworkType

              – distributionMode

            properties:

              distributionNetworkType:

                $ref: ‘#/components/schemas/DistributionNetworkType’

              distributionMode:

                $ref: ‘#/components/schemas/DistributionMode’

    # Schema for the resource itself

    ContentHostingConfiguration:

      type: object

      description: "A representation of a Content Hosting Configuration resource."

      required:

        – name

        – ingestConfiguration

        – distributionConfigurations

      properties:

        name:

          type: string

        entryPointPath:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’

        ingestConfiguration:

          $ref: ‘#/components/schemas/IngestConfiguration’

        distributionConfigurations:

          type: array

          items:

            $ref: ‘#/components/schemas/DistributionConfiguration’

    DistributionNetworkType:

      description: "Type of distribution network."

      anyOf:

        – type: string

          enum: [NETWORK_EMBMS]

        – type: string

          description: >

            This string provides forward-compatibility with future

            extensions to the enumeration but is not used to encode

            content defined in the present version of this API.

    DistributionMode:

      description: "Mode of content distribution."

      anyOf:

        – type: string

          enum: [MODE_EXCLUSIVE, MODE_HYBRID, MODE_DYNAMIC]

        – type: string

          description: >

            This string provides forward-compatibility with future

            extensions to the enumeration but is not used to encode

            content defined in the present version of this API.

C.3.6 M1_ConsumptionReportingProvisioning API

openapi: 3.0.0

info:

  title: M1_ConsumptionReportingProvisioning

  version: 2.0.0

  description: |

    5GMS AF M1 Consumption Reporting Provisioning API

    © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).

    All rights reserved.

tags:

  – name: M1_ConsumptionReportingProvisioning

    description: ‘5G Media Streaming: Provisioning (M1) APIs: Consumption Reporting Provisioning’

externalDocs:

  description: ‘TS 26.512 V17.2.0; 5G Media Streaming (5GMS); Protocols’

  url: ‘https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/’

servers:

  – url: ‘{apiRoot}/3gpp-m1/v2’

    variables:

      apiRoot:

        default: https://example.com

        description: See 3GPP TS 29.512 clause 6.1.

paths:

  /provisioning-sessions/{provisioningSessionId}/consumption-reporting-configuration:

    parameters:

      – name: provisioningSessionId

        in: path

        required: true

        schema: 

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘The resource identifier of an existing Provisioning Session.’

    post:

      operationId: activateConsumptionReporting

      summary: ‘Activate the consumption reporting procedure for the specified Provisioning Session by providing the Consumption Reporting Configuration’

      requestBody:

        description: ‘A JSON representation of a Consumption Reporting Configuration’

        required: true

        content:

          application/json:

            schema:

              $ref: ‘#/components/schemas/ConsumptionReportingConfiguration’

      responses:

        ‘201’:

          description: ‘Consumption Reporting Configuration Created’

          headers:

            Location:

              description: ‘URL of the newly created Consumption Reporting Configuration (same as request URL).’

              required: true

              schema:

                $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’

    get:

      operationId: retrieveConsumptionReportingConfiguration

      summary: ‘Retrieve the Consumption Reporting Configuration of the specified Provisioning Session’

      responses:

        ‘200’:

          description: ‘Success’

          content:

            application/json:

              schema:

                $ref: ‘#/components/schemas/ConsumptionReportingConfiguration’

    put:

      operationId: updateConsumptionReportingConfiguration

      summary: ‘Update the Consumption Reporting Configuration for the specified Provisioning Session’

      requestBody:

        description: ‘A JSON representation of a Consumption Reporting Configuration’

        required: true

        content:

          application/json:

            schema:

              $ref: ‘#/components/schemas/ConsumptionReportingConfiguration’

      responses:

        ‘204’:

          description: ‘Updated Consumption Reporting Configuration’

        ‘404’:

          description: ‘Not Found’

    patch:

      operationId: patchConsumptionReportingConfiguration

      summary: ‘Patch the Consumption Reporting Configuration for the specified Provisioning Session’

      requestBody:

        description: ‘A JSON representation of a Consumption Reporting Configuration’

        required: true

        content:

          application/merge-patch+json:

            schema:

              $ref: ‘#/components/schemas/ConsumptionReportingConfiguration’

          application/json-patch+json:

            schema:

              $ref: ‘#/components/schemas/ConsumptionReportingConfiguration’

      responses:

        ‘200’:

          description: ‘Patched Consumption Reporting Configuration’

          content:

            application/json:

              schema:

                $ref: ‘#/components/schemas/ConsumptionReportingConfiguration’

        ‘404’:

          description: ‘Not Found’

    delete:

      operationId: destroyConsumptionReportingConfiguration

      summary: ‘Destroy the current Consumption Reporting Configuration of the specified Provisioning Session’

      responses:

        ‘204’:

          description: ‘Destroyed Consumption Reporting Configuration’

        ‘404’:

          description: ‘Not Found’    

components:

  schemas:

    ConsumptionReportingConfiguration:

      type: object

      description: "A representation of a Consumption Reporting Configuration resource."

      properties:

        reportingInterval:

          $ref: ‘TS29571_CommonData.yaml#/components/schemas/DurationSec’

        samplePercentage:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/Percentage’

        locationReporting:

          type: boolean

        accessReporting:

          type: boolean

C.3.7 M1_MetricsReportingProvisioning API

openapi: 3.0.0

info:

  title: M1_MetricsReportingProvisioning

  version: 2.0.0

  description: |

    5GMS AF M1 Metrics Reporting Provisioning API

    © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).

    All rights reserved.

tags:

  – name: M1_MetricsReportingProvisioning

    description: ‘5G Media Streaming: Provisioning (M1) APIs: Metrics Reporting Provisioning’

externalDocs:

  description: ‘TS 26.512 V17.2.0; 5G Media Streaming (5GMS); Protocols’

  url: ‘https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/’

servers:

  – url: ‘{apiRoot}/3gpp-m1/v2’

    variables:

      apiRoot:

        default: https://example.com

        description: See 3GPP TS 29.512 clause 6.1.

paths:

  /provisioning-sessions/{provisioningSessionId}/metrics-reporting-configurations:

    parameters:

      – name: provisioningSessionId

        in: path

        required: true

        schema: 

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘The resource identifier of an existing Provisioning Session.’

    post:

      operationId: activateMetricsReporting

      summary: ‘Activate the Metrics reporting procedure for the specified Provisioning Session by providing the Metrics Reporting Configuration’

      requestBody:

        description: ‘A JSON representation of a Metrics Reporting Configuration’

        required: true

        content:

          application/json:

            schema:

              $ref: ‘#/components/schemas/MetricsReportingConfiguration’

      responses:

        ‘201’:

          description: ‘Metrics Reporting Configuration Created’

          headers:

            Location:

              description: ‘URL of the newly created Metrics Reporting Configuration (same as request URL).’

              required: true

              schema:

                $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’

  /provisioning-sessions/{provisioningSessionId}/metrics-reporting-configurations/{metricsReportingConfigurationId}:

    parameters:

      – name: provisioningSessionId

        in: path

        required: true

        schema: 

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘The resource identifier of an existing Provisioning Session.’

      – name: metricsReportingConfigurationId

        in: path

        required: true

        schema: 

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘The resource identifier of a Metrics Reporting Configuration.’

    get:

      operationId: retrieveMetricsReportingConfiguration

      summary: ‘Retrieve the specified Metrics Reporting Configuration of the specified Provisioning Session’

      responses:

        ‘200’:

          description: ‘Success’

          content:

            application/json:

              schema:

                $ref: ‘#/components/schemas/MetricsReportingConfiguration’

    put:

      operationId: updateMetricsReportingConfiguration

      summary: ‘Update the specified Metrics Reporting Configuration for the specified Provisioning Session’

      requestBody:

        description: ‘A JSON representation of a Metrics Reporting Configuration’

        required: true

        content:

          application/json:

            schema:

              $ref: ‘#/components/schemas/MetricsReportingConfiguration’

      responses:

        ‘204’:

          description: ‘Updated Metrics Reporting Configuration’

        ‘404’:

          description: ‘Not Found’

    patch:

      operationId: patchMetricsReportingConfiguration

      summary: ‘Patch the specified Metrics Reporting Configuration for the specified Provisioning Session’

      requestBody:

        description: ‘A JSON representation of a Metrics Reporting Configuration’

        required: true

        content:

          application/merge-patch+json:

            schema:

              $ref: ‘#/components/schemas/MetricsReportingConfiguration’

          application/json-patch+json:

            schema:

              $ref: ‘#/components/schemas/MetricsReportingConfiguration’

      responses:

        ‘200’:

          description: ‘Patched Metrics Reporting Configuration’

          content:

            application/json:

              schema:

                $ref: ‘#/components/schemas/MetricsReportingConfiguration’

        ‘404’:

          description: ‘Not Found’

    delete:

      operationId: destroyMetricsReportingConfiguration

      summary: ‘Destroy the specified Metrics Reporting Configuration of the specified Provisioning Session’

      responses:

        ‘204’:

          description: ‘Destroyed Metrics Reporting Configuration’

        ‘404’:

          description: ‘Not Found’    

components:

  schemas:

    MetricsReportingConfiguration:

      type: object

      description: "A representation of a Metrics Reporting Configuration resource."

      required:

        – metricsReportingConfigurationId

        – scheme

      properties:

        metricsReportingConfigurationId:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        scheme:

          $ref: ‘TS29571_CommonData.yaml#/components/schemas/Uri’

        dataNetworkName:

          $ref: ‘TS29571_CommonData.yaml#/components/schemas/Dnn’

        reportingInterval:

          $ref: ‘TS29571_CommonData.yaml#/components/schemas/DurationSec’

        samplePercentage:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/Percentage’

        urlFilters:

          type: array

          items:

            type: string

          minItems: 1

        metrics:

          type: array

          items:

            type: string

          minItems: 1

C.3.8 M1_PolicyTemplatesProvisioning API

openapi: 3.0.0

info:

  title: M1_PolicyTemplatesProvisioning

  version: 2.0.0

  description: |

    5GMS AF M1 Policy Templates Provisioning API

    © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).

    All rights reserved.

tags:

  – name: M1_PolicyTemplatesProvisioning

    description: ‘5G Media Streaming: Provisioning (M1) APIs: Policy Templates Provisioning’

externalDocs:

  description: ‘TS 26.512 V17.2.0; 5G Media Streaming (5GMS); Protocols’

  url: ‘https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/’

servers:

  – url: ‘{apiRoot}/3gpp-m1/v2’

    variables:

      apiRoot:

        default: https://example.com

        description: See 3GPP TS 29.512 clause 6.1.

paths:

  /provisioning-sessions/{provisioningSessionId}/policy-templates:

    parameters:

      – name: provisioningSessionId

        in: path

        required: true

        schema:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘The resource identifier of an existing Provisioning Session.’

    post:

      operationId: createPolicyTemplate

      summary: ‘Create (and optionally upload) a new Policy Template’

      requestBody:

        description: ‘A JSON representation of a Policy Template’

        required: true

        content:

          application/json:

            schema:

              $ref: ‘#/components/schemas/PolicyTemplate’

      responses:

        ‘201’:

          description: ‘Policy Template Created’

          headers:

            Location:

              description: ‘URL of the newly created Policy Template resource.’

              required: true

              schema:

                $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’

 

  /provisioning-sessions/{provisioningSessionId}/policy-templates/{policyTemplateId}:

    parameters:

      – name: provisioningSessionId

        in: path

        required: true

        schema:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘A unique identifier of the Provisioning Session.’

      – name: policyTemplateId

        in: path

        required: true

        schema:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘A resource identifier of a Policy Template.’

    get:

      operationId: retrievePolicyTemplate

      summary: ‘Retrieve a representation of an existing Policy Template in the specified Provisioning Session’

      responses:

        ‘200’:

          description: ‘Success’

          content:

            application/json:

              schema:

                $ref: ‘#/components/schemas/PolicyTemplate’

        ‘404’:

          description: ‘Not Found’

    put:

      operationId: updatePolicyTemplate

      summary: ‘Update a Policy Template for the specified Provisioning Session’

      requestBody:

        description: ‘A JSON representation of a Policy Template’

        required: true

        content:

          application/json:

            schema:

              $ref: ‘#/components/schemas/PolicyTemplate’

      responses:

        ‘204’:

          description: ‘Updated Policy Template’

        ‘404’:

          description: ‘Not Found’

    patch:

      operationId: patchPolicyTemplate

      summary: ‘Patch the Policy Template for the specified Provisioning Session’

      requestBody:

        description: ‘A JSON representation of a Policy Template’

        required: true

        content:

          application/merge-patch+json:

            schema:

              $ref: ‘#/components/schemas/PolicyTemplate’

          application/json-patch+json:

            schema:

              $ref: ‘#/components/schemas/PolicyTemplate’

      responses:

        ‘200’:

          description: ‘Patched Content Hosting Configuration’

          content:

            application/json:

              schema:

                $ref: ‘#/components/schemas/PolicyTemplate’

        ‘404’:

          description: ‘Not Found’

    delete: 

      operationId: destroyPolicyTemplate

      responses:

        ‘204’:

          description: ‘Destroyed Policy Template’

        ‘404’:

          description: ‘Not Found’

components:

  schemas:

    PolicyTemplate:

      type: object

      description: "A representation of a Policy Template resource."

      required:

        – policyTemplateId

        – state

        – apiEndPoint

        – apiType

        – externalReference

        – applicationSessionContext

      properties:

        policyTemplateId:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        state:

          anyOf:

          – type: string

            enum: [PENDING, INVALID, READY, SUSPENDED]

          – type: string

            description: >

              This string provides forward-compatibility with future

              extensions to the enumeration but is not used to encode

              content defined in the present version of this API.

        apiEndPoint:

          type: string

        apiType:

          anyOf:

          – type: string

            enum: [N5, N33]

          – type: string

            description: >

              This string provides forward-compatibility with future

              extensions to the enumeration but is not used to encode

              content defined in the present version of this API.

        externalReference:

          type: string

        qoSSpecification:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/M1QoSSpecification’

        applicationSessionContext:

          type: object

          properties:

            afAppId:

              $ref: ‘TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AfAppId’

            sliceInfo:

              $ref: ‘TS29571_CommonData.yaml#/components/schemas/Snssai’

            dnn:

              $ref: ‘TS29571_CommonData.yaml#/components/schemas/Dnn’

            aspId:

              $ref: ‘TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AspId’

        chargingSpecification:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ChargingSpecification’

C.3.9 M1_EdgeResourcesProvisioning API

openapi: 3.0.0

info:

  title: M1_EdgeResourcesProvisioning

  version: 2.1.0

  description: |

    5GMS AF M1 Edge Resources Provisioning API

    © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).

    All rights reserved.

tags:

  – name: M1_EdgeResourcesProvisioning

    description: ‘5G Media Streaming: Provisioning (M1) APIs: Edge Resources Provisioning’

externalDocs:

  description: ‘TS 26.512 V17.2.0; 5G Media Streaming (5GMS); Protocols’

  url: ‘https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/’

servers:

  – url: ‘{apiRoot}/3gpp-m1/v2’

    variables:

      apiRoot:

        default: https://example.com

        description: See 3GPP TS 29.512 clause 7.10.

paths:

  /provisioning-sessions/{provisioningSessionId}/edge-resources-configurations:

    parameters:

      – name: provisioningSessionId

        in: path

        required: true

        schema:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘The resource identifier of an existing Provisioning Session.’

    post:

      operationId: createEdgeResourcesConfiguration

      summary: ‘Create an Edge Resources Configuration within the scope of the specified Provisioning Session’

      requestBody:

        description: ‘A JSON representation of an Edge Resources Configuration’

        required: true

        content:

          application/json:

            schema:

              $ref: ‘#/components/schemas/EdgeResourcesConfiguration’

      responses:

        ‘201’:

          description: ‘Edge Resources Configuration Created’

          headers:

            Location:

              description: ‘URL of the newly created Edge Resources Configuration.’

              required: true

              schema:

                $ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’

  /provisioning-sessions/{provisioningSessionId}/edge-resources-configurations/{edgeResourcesConfigurationId}:

    parameters:

      – name: provisioningSessionId

        in: path

        required: true

        schema:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘The resource identifier of an existing Provisioning Session.’

      – name: edgeResourcesConfigurationId

        in: path

        required: true

        schema:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        description: ‘The resource identifier of an existing Edge Resources Configuration.’

    get:

      operationId: retrieveEdgeResourcesConfiguration

      summary: ‘Retrieve the Edge Resources Configuration of the specified Provisioning Session’

      responses:

        ‘200’:

          description: ‘Success’

          content:

            application/json:

              schema:

                $ref: ‘#/components/schemas/EdgeResourcesConfiguration’

    put:

      operationId: updateEdgeResourcesConfiguration

      summary: ‘Update an Edge Resources Configuration for the specified Provisioning Session’

      requestBody:

        description: ‘A JSON representation of an Edge Resources Configuration’

        required: true

        content:

          application/json:

            schema:

              $ref: ‘#/components/schemas/EdgeResourcesConfiguration’

      responses:

        ‘204’:

          description: ‘Updated Edge Resources Configuration’

        ‘404’:

          description: ‘Not Found’

    patch:

      operationId: patchEdgeResourcesConfiguration

      summary: ‘Patch the Edge Resources Configuration for the specified Provisioning Session’

      requestBody:

        description: ‘A JSON representation of a Edge Resources Configuration’

        required: true

        content:

          application/merge-patch+json:

            schema:

              $ref: ‘#/components/schemas/EdgeResourcesConfiguration’

          application/json-patch+json:

            schema:

              $ref: ‘#/components/schemas/EdgeResourcesConfiguration’

      responses:

        ‘200’:

          description: ‘Patched Edge Resources Configuration’

          content:

            application/json:

              schema:

                $ref: ‘#/components/schemas/EdgeResourcesConfiguration’

        ‘404’:

          description: ‘Not Found’

    delete:

      operationId: destroyEdgeResourcesConfiguration

      responses:

        ‘204’:

          description: ‘Destroyed Edge Resources Configuration’

        ‘404’:

          description: ‘Not Found’

components:

  schemas:    

    EdgeResourcesConfiguration:

      type: object

      description: ‘A representation of an Edge Resources Configuration resource.’

      required:

        – edgeResourcesConfigurationId

        – edgeManagementMode

        – easRequirements

      properties:

edgeResourcesConfigurationId:

$ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

        edgeManagementMode:

          $ref: ‘#/components/schemas/EdgeManagementMode’

        eligibilityCriteria:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/EdgeProcessingEligibilityCriteria’

        easRequirements:

          $ref: ‘#/components/schemas/EASRequirements’

        easRelocationRequirements:

          $ref: ‘#/components/schemas/M1EASRelocationRequirements’

    M1EASRelocationRequirements:

      type: object

      description: ‘Relocation requirements of an EAS.’

      required:

        – tolerance

      properties:

        tolerance:

          $ref: ‘TS26512_CommonData.yaml#/components/schemas/EASRelocationTolerance’

        maxInterruptionDuration:

          $ref: ‘TS29571_CommonData.yaml#/components/schemas/UintegerRm’

        maxResponseTimeDifference:

          $ref: ‘TS29571_CommonData.yaml#/components/schemas/UintegerRm’

    EASRequirements:

        type: object

        description: ‘Requirements of an EAS.’

        required:

          – easProviderIds

          – easType

          – easFeatures

          – serviceAvailabilitySchedule

          – serviceContinuityScenarios

        properties:

          easProviderIds:

            type: array

              items:

                type: string

          easType:

            type: string

          easFeatures:

            type: array

            items:

              type: string

          serviceKpi:

            $ref: ‘TS29558_Eees_EASRegistration.yaml#/components/schemas/EASServiceKPI’

          serviceArea:

            $ref: ‘TS29558_Eecs_EESRegistration.yaml#/components/schemas/GeographicalServiceArea’

          serviceAvailabilitySchedule:

            type: array

            items:

              $ref: ‘TS29122_CpProvisioning.yaml#/components/schemas/ScheduledCommunicationTime’

          serviceContinuityScenarios:

            type: array

            items:

              $ref: ‘TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario’

          serviceContinuitySupport:

            type: array

            items:

              $ref: ‘TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario’

    EdgeManagementMode:

      description: ‘The management mode of an EAS.’

      anyOf:

        – type: string

          enum: [EM_AF_DRIVEN, EM_APP_DRIVEN]

        – type: string

          description: >

            This string provides forward-compatibility with future

            extensions to the enumeration but is not used to encode

            content defined in the present version of this API.

C.3.10 M1_EventDataProcessingProvisioning API

openapi: 3.0.0

info:

title: M1_EventDataProcessingProvisioning

version: 2.0.0

description: |

5GMS AF M1 Event Data Processing Provisioning API

© 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).

All rights reserved.

tags:

– name: M1_EventDataProcessingProvisioning

description: ‘5G Media Streaming: Provisioning (M1) APIs: Event Data Processing Provisioning’

externalDocs:

description: ‘TS 26.512 V17.2.0; 5G Media Streaming (5GMS); Protocols’

url: ‘https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/’

servers:

– url: ‘{apiRoot}/3gpp-m1/v2’

variables:

apiRoot:

default: https://example.com

description: See 3GPP TS 29.512 clause 6.1.

paths:

/provisioning-sessions/{provisioningSessionId}/event-data-processing-configurations:

parameters:

– name: provisioningSessionId

in: path

required: true

schema:

$ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

description: ‘The resource identifier of an existing Provisioning Session.’

post:

operationId: createEventDataProcessingConfiguration

summary: ‘Supply an Event Data Processing Configuration for the specified Provisioning Session’

requestBody:

description: ‘A JSON representation of a Event Data Processing Configuration’

required: true

content:

application/json:

schema:

$ref: ‘#/components/schemas/EventDataProcessingConfiguration’

responses:

‘201’:

description: ‘Event Data Processing Configuration Created’

headers:

Location:

description: ‘URL of the newly created Event Data Processing Configuration (same as request URL).’

required: true

schema:

$ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’

/provisioning-sessions/{provisioningSessionId}/event-data-processing-configurations/{eventDataProcessingConfigurationId}:

parameters:

– name: provisioningSessionId

in: path

required: true

schema:

$ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

description: ‘The resource identifier of an existing Provisioning Session.’

– name: eventDataProcessingConfigurationId

in: path

required: true

schema:

$ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

description: ‘The resource identifier of an Event Data Processing Configuration.’

get:

operationId: retrieveEventDataProcessingConfiguration

summary: ‘Retrieve the specified Event Data Processing Configuration of the specified Provisioning Session’

responses:

‘200’:

description: ‘Success’

content:

application/json:

schema:

$ref: ‘#/components/schemas/EventDataProcessingConfiguration’

put:

operationId: updateEventDataProcessingConfiguration

summary: ‘Update the specified Event Data Processing Configuration for the specified Provisioning Session’

requestBody:

description: ‘A JSON representation of a Event Data Processing Configuration’

required: true

content:

application/json:

schema:

$ref: ‘#/components/schemas/EventDataProcessingConfiguration’

responses:

‘204’:

description: ‘Updated Event Data Processing Configuration’

‘404’:

description: ‘Not Found’

patch:

operationId: patchEventDataProcessingConfiguration

summary: ‘Patch the specified Event Data Processing Configuration for the specified Provisioning Session’

requestBody:

description: ‘A JSON representation of a Event Data Processing Configuration’

required: true

content:

application/merge-patch+json:

schema:

$ref: ‘#/components/schemas/EventDataProcessingConfiguration’

application/json-patch+json:

schema:

$ref: ‘#/components/schemas/EventDataProcessingConfiguration’

responses:

‘200’:

description: ‘Patched Event Data Processing Configuration’

content:

application/json:

schema:

$ref: ‘#/components/schemas/EventDataProcessingConfiguration’

‘404’:

description: ‘Not Found’

delete:

operationId: destroyEventDataProcessingConfiguration

summary: ‘Destroy the specified Event Data Processing Configuration of the specified Provisioning Session’

responses:

‘204’:

description: ‘Destroyed Event Data Processing Configuration’

‘404’:

description: ‘Not Found’

components:

schemas:

EventDataProcessingConfiguration:

description: ‘A representation of an Event Data Processing Configuration resource.’

type: object

required:

– eventDataProcessingConfigurationId

– eventId

– dataAccessProfiles

properties:

eventDataProcessingConfigurationId:

$ref: ‘TS26512_CommonData.yaml#/components/schemas/ResourceId’

eventId:

$ref: ‘TS29517_Naf_EventExposure.yaml#/components/schemas/AfEvent’

authorizationUrl:

$ref: ‘TS26512_CommonData.yaml#/components/schemas/Url’

dataAccessProfiles:

type: array

items:

$ref: ‘TS26532_Ndcaf_DataReportingProvisioning.yaml#/components/schemas/DataAccessProfile’