Commit 30d61ec3 authored by Jesus de Gregorio's avatar Jesus de Gregorio
Browse files

SA#91

parent 5f107122
Loading
Loading
Loading
Loading
+179 −0
Original line number Diff line number Diff line
openapi: 3.0.0
info:
  title: 5GMS Common Data Types
  version: 1.0.0
  description: |
    5GMS Common Data Types
    © 2021, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).
    All rights reserved.
tags:
  - name: 5GMS Common Data Types
    description: '5G Media Streaming: Common Data Types'
externalDocs:
  description: 'TS 26.512 V16.2.0; 5G Media Streaming (5GMS); Protocols'
  url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/'
paths: {}
components:
  schemas:
    #################################
    # Clause 6.4.2: Simple data types
    #################################
    ResourceId:
      type: string
      description: String chosen by the 5GMS AF to serve as an identifier in a resource URI.
    Percentage:
      type: number
      minimum: 0.0
      maximum: 100.0
    #DurationSec is defined in TS29571_CommonData
    #DateTime is defined in TS29571_CommonData
    #Uri is defined in TS29571_CommonData
    Url:
      type: string
      format: uri
      description: Uniform Resource Locator, comforming with the URI Generic Syntax specified in IETF RFC 3986.
 
    #####################################
    # Clause 6.4.3: Structured data types
    #####################################
    IpPacketFilterSet:
      type: object
      required:
        - direction
      properties:
        srcIp:
          type: string
        dstIp:
          type: string
        protocol:
          type: integer
        srcPort:
          type: integer
        dstPort:
          type: integer
        toSTc:
          type: string
        flowLabel:
          type: integer
        spi:
          type: integer
        direction:
          type: string

    ServiceDataFlowDescription:
      type: object
      properties:
        flowDescription:
          $ref: '#/components/schemas/IpPacketFilterSet'
        domainName:
          type: string

    M5QoSSpecification:
      type: object
      required:
        - marBwDlBitRate
        - marBwUlBitRate
        - mirBwDlBitRate
        - mirBwUlBitRate
      properties:
        marBwDlBitRate:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        marBwUlBitRate:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        minDesBwDlBitRate:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        minDesBwUlBitRate:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        mirBwDlBitRate:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        mirBwUlBitRate:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        desLatency:
          type: integer
          minimum: 0
        desLoss:
          type: integer
          minimum: 0

    M1QoSSpecification:
      type: object
      properties:
        qosReference:
          type: string
        maxBtrUl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        maxBtrDl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        maxAuthBtrUl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        maxAuthBtrDl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        defPacketLossRateDl:
          type: integer
          minimum: 0
        defPacketLossRateUl:
          type: integer
          minimum: 0

    ChargingSpecification:
      type: object
      properties:
        sponId:
          type: string
        sponStatus:
          $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/SponsoringStatus'
        gpsi:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi'

    TypedLocation:
      type: object
      required:
        - locationIdentifierType
        - location
      properties:
        locationIdentifierType:
          $ref: '#/components/schemas/CellIdentifierType'
        location:
          type: string

    OperationSuccessResponse:
      type: object
      required:
      - success
      properties:
        success:
          type: boolean
        reason:
          type: string

    CellIdentifierType:
      anyOf:
        - type: string
          enum: [CGI, ECGI, NCGI]
        - 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.

    SdfMethod:
      anyOf:
        - type: string
          enum: [5_TUPLE, 2_TUPLE, TYPE_OF_SERVICE_MARKING, FLOW_LABEL, DOMAIN_NAME]
        - 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.

    ProvisioningSessionType:
      anyOf:
        - type: string
          enum: [DOWNLINK, UPLINK]
        - 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.
+114 −0
Original line number Diff line number Diff line
openapi: 3.0.0
info:
  title: M1_ConsumptionReportingProvisioning
  version: 1.0.0
  description: |
    5GMS AF M1 Consumption Reporting Provisioning API
    © 2021, 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 V16.2.0; 5G Media Streaming (5GMS); Protocols'
  url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/'
servers:
  - url: '{apiRoot}/3gpp-m1/v1'
    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
      properties:
        reportingInterval:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec'
        samplePercentage:
          $ref: 'TS26512_CommonData.yaml#/components/schemas/Percentage'
        locationReporting:
          type: boolean
+252 −0
Original line number Diff line number Diff line
openapi: 3.0.0
info:
  title: M1_ContentHostingProvisioning
  version: 1.0.0
  description: |
    5GMS AF M1 Content Hosting Provisioning API
    © 2021, 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 V16.2.0; 5G Media Streaming (5GMS); Protocols'
  url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/'
servers:
  - url: '{apiRoot}/3gpp-m1/v1'
    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
      properties:
        path:
          type: string
        pull:
          type: boolean
        protocol:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri'
        entryPoint:
          $ref: 'TS26512_CommonData.yaml#/components/schemas/Url'
    PathRewriteRule:
      type: object
      required:
        - requestPattern
        - mappedPath
      properties:
        requestPattern:
          type: string
        mappedPath:
          type: string
    CachingConfiguration:
      type: object
      properties:
        urlPatternFilter:
          type: string
        CachingDirectives:
          type: object
          required:
            - urlPatternFilter
            - noCache
          properties:
            statusCodeFilters:
              type: array
              items:
                type: integer
            noCache:
              type: boolean
            maxAge:
              type: integer
              format: int32
    DistributionConfiguration:
      type: object
      required:
        - canonicalDomainName
        - domainNameAlias
      properties:
        contentPreparationTemplateId:
          $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId'
        canonicalDomainName:
          type: string
        domainNameAlias:
          type: string
        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'
    # Schema for the resource itself
    ContentHostingConfiguration:
      type: object
      required:
        - name
        - ingestConfiguration
        - distributionConfigurations
      properties:
        name:
          type: string
        ingestConfiguration:
          $ref: '#/components/schemas/IngestConfiguration'
        distributionConfigurations:
          type: array
          items:
            $ref: '#/components/schemas/DistributionConfiguration'
+117 −0
Original line number Diff line number Diff line
openapi: 3.0.0
info:
  title: M1_ContentPreparationTemplatesProvisioning
  version: 1.0.0
  description: |
    5GMS AF M1 Content Preparation Templates Provisioning API
    © 2021, 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 V16.2.0; 5G Media Streaming (5GMS); Protocols'
  url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/'
servers:
  - url: '{apiRoot}/3gpp-m1/v1'
    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'
+68 −0
Original line number Diff line number Diff line
openapi: 3.0.0
info:
  title: M1_ContentProtocolsDiscovery
  version: 1.0.0
  description: |
    5GMS AF M1 Content Protocols Discovery API
    © 2021, 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 V16.2.0; 5G Media Streaming (5GMS); Protocols'
  url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/'
servers:
  - url: '{apiRoot}/3gpp-m1/v1'
    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
      required:
        - termIdentifier
      properties:
        termIdentifier:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri'
        descriptionLocator:
          $ref: 'TS26512_CommonData.yaml#/components/schemas/Url'
    ContentProtocols:
      type: object
      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
Loading