openapi: 3.0.0
info:
  version: 1.0.0
  title: Nausf_SoRProtection Service
  description: AUSF SoR Protection Service
servers:
  - url: '{apiRoot}/nausf-sorprotection/v1'
    variables:
      apiRoot:
        default: https://example.com
        description: apiRoot as defined in subclause 4.4 of 3GPP TS 29.501
security:
  - {}
  - oAuth2ClientCredentials:
      - nausf-sorprotection
paths:
  /{supi}/ue-sor:
    post:
      parameters:
        - name: supi
          in: path
          description: Identifier of the UE
          required: true
          schema:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SorInfo'
        required: true
      responses:
        '201':
          description: SorSecurityInfo
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SorSecurityInfo'
        '503':
          description: Service Unavailable
          content:
            application/problem+json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails'
components:
  securitySchemes:
    oAuth2ClientCredentials:
      type: oauth2
      flows: 
        clientCredentials: 
          tokenUrl: '{nrfApiRoot}/oauth2/token'
          scopes:
            nausf-sorprotection: Access to the Nausf_SoRProtection API
  schemas:
    SorInfo:
      type: object
      properties:
        steeringContainer:
          $ref: '#/components/schemas/SteeringContainer'
        ackInd:
          $ref: '#/components/schemas/AckInd'
      required:
        - ackInd
    SorSecurityInfo:
      type: object
      properties:
        sorMacIausf:
          $ref: '#/components/schemas/SorMac'
        counterSor:
          $ref: '#/components/schemas/CounterSor'
        sorXmacIue:
          $ref: '#/components/schemas/SorMac'
      required:
        - sorMacIausf
        - counterSor
    SteeringContainer:
      oneOf:
        - type: array
          items:
            $ref: 'TS29509_Nausf_SoRProtection.yaml#/components/schemas/SteeringInfo'
          minItems: 1
        - $ref: '#/components/schemas/SecuredPacket'
    SteeringInfo:
      type: object
      properties:
        plmnId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
        accessTechList:
          type: array
          items:
            $ref: '#/components/schemas/AccessTech'
          minItems: 1
      required:
        - plmnId
    SorMac:
      type: string
      pattern: '^[A-Fa-f0-9]{32}$'
    CounterSor:
      type: string
      pattern: '^[A-Fa-f0-9]{4}$'
    AckInd:
      type: boolean
    SecuredPacket:
      type: string
      format: base64
    AccessTech:
      anyOf:
      - type: string
        enum:
        - NR
        - EUTRAN_IN_WBS1_MODE_AND_NBS1_MODE
        - EUTRAN_IN_NBS1_MODE_ONLY
        - EUTRAN_IN_WBS1_MODE_ONLY
        - UTRAN
        - GSM_AND_ECGSM_IoT
        - GSM_WITHOUT_ECGSM_IoT
        - ECGSM_IoT_ONLY
        - CDMA_1xRTT
        - CDMA_HRPD
        - GSM_COMPACT
      - type: string
externalDocs:
  description: 3GPP TS 29.509 V15.2.0; 5G System; Authentication Server Services
  url: 'http://www.3gpp.org/ftp/Specs/archive/29_series/29.509'