Open API Specification

This appendix provides a sample of Open API specification in NSSF.

Open API 3.0

 openapi: 3.0.0
info:
  title: "NSSF-CONFIGURATION"
  version: v0.1
servers:
  - url: 'https://{apiRoot}/'
    variables:
      apiRoot:
        default: nssf
        description: >-
          apiRoot should be mentioned as defined in NSSF configuration script
paths:
  '/nssf-configuration/v1/nsiprofiles':
    post:
      summary: "Create a network slice instance profile"
      tags: 
        - "Create a network slice instance profile"
      requestBody:
        content:
          application/json:    # Media type
            schema:            # Request body contents
              $ref: '#/components/schemas/NssfNsiProfile'     
      responses:
        '201' :
          description: Created
        '403' :
          description: Forbidden
        '409' :
          description: Conflict
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error
    get:
      summary: "Read all network slice instance profiles"
      tags: 
        - "Read all network slice instance profiles"
      responses:
        '200' :
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NssfNsiProfile'
        '403' :
          description: Forbidden
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error
  '/nssf-configurations/v1/nsiprofiles/{name}':  
    get:
      summary: "Read a network slice instance profile"
      tags: 
        - "Read a network slice instance profile"
      parameters: 
        - name: name
          in: path
          description: "network slice instance profile name"
          required: true
          schema:
            type: string
      responses:
        '200' :
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NssfNsiProfile'
        '400' :   
          description: Bad Request
        '403' :
          description: Forbidden
        '404' :
          description: Not Found
        '405' :
          description: Method Not Allowed
        '409' :
          description: Conflict
        '500' :
          description: Internal Server Error  
        '502' :
          description: Bad Gateway
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error      
    delete:
      summary: "Delete a network slice instance profile"
      tags: 
        - "Delete a network slice instance profile"
      parameters: 
        - name: name
          in: path
          description: "network slice instance profile name"
          required: true
          schema:
            type: string        
      responses:
        '204' :
          description: No Content
        '403' :
          description: Forbidden
        '404' :
          description: No Found
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error
  '/nssf-configuration/v1/nssrules':
    post:
      summary: "Create a network slice selection rule"
      tags: 
        - "Create a network slice selection rule"
      requestBody:
        content:
          application/json:    # Media type
            schema:            # Request body contents
              $ref: '#/components/schemas/NssfNssRule'     
      responses:
        '201' :
          description: Created
        '403' :
          description: Forbidden
        '409' :
          description: Conflict
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error
    get:
      summary: "Read all network slice selection rules"
      tags: 
        - "Read all network slice selection rules"
      responses:
        '200' :
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NssfNssRule'
        '403' :
          description: Forbidden
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error
  '/nssf-configuration/v1/nssrule/{name}':  
    get:
      summary: "Read a network slice selection rule"
      tags: 
        - "Read a network slice selection rule"
      parameters: 
        - name: name
          in: path
          description: "network slice selection rule name"
          required: true
          schema:
            type: string
      responses:
        '200' :
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NssfNssRule'
        '400' :   
          description: Bad Request
        '403' :
          description: Forbidden
        '404' :
          description: Not Found
        '405' :
          description: Method Not Allowed
        '409' :
          description: Conflict
        '500' :
          description: Internal Server Error  
        '502' :
          description: Bad Gateway
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error      
    delete:
      summary: "Delete a network slice selection rule"
      tags: 
        - "Delete a network slice selection rule"
      parameters: 
        - name: name
          in: path
          description: "network slice selection rule name"
          required: true
          schema:
            type: string        
      responses:
        '204' :
          description: No Content
        '403' :
          description: Forbidden
        '404' :
          description: No Found
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error 
  '/nssf-configuration/v1/nssaiauth':
    post:
      summary: "Create a network slice authentication rule"
      tags:
        - "Create a network slice authentication rule"
      requestBody:
        content:
          application/json:    # Media type
            schema:            # Request body contents
              $ref: '#/components/schemas/NssfNssaiAuth'    
      responses:
        '201' :
          description: Created
        '403' :
          description: Forbidden
        '409' :
          description: Conflict
        '500' :
          description: Internal Server Error 
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error
    get:
      summary: "Read all network slice authentication rules"
      tags:
        - "Read all network slice authentication rules"
      responses:
        '200' :
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NssfNssaiAuth'
        '403' :
          description: Forbidden
        '500' :
          description: Internal Server Error 
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error
  '/nssf-configuration/v1/timeprofiles':
    post:
      summary: "Create a time profile"
      tags: 
        - "Create a time profile"
      requestBody:
        content:
          application/json:    # Media type
            schema:            # Request body contents
              $ref: '#/components/schemas/Nssftimeprofile'     
      responses:
        '201' :
          description: Created
        '403' :
          description: Forbidden
        '409' :
          description: Conflict
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error
    get:
      summary: "Read all time profiles"
      tags: 
        - "Read all time profiles"
      responses:
        '200' :
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Nssftimeprofile'
        '403' :
          description: Forbidden
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error
  '/nssf-configurations/v1/timeprofiles/{name}':  
    get:
      summary: "Read a time profile"
      tags: 
        - "Read a time profile"
      parameters: 
        - name: name
          in: path
          description: "time profile name"
          required: true
          schema:
            type: string
      responses:
        '200' :
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Nssftimeprofile'
        '400' :   
          description: Bad Request
        '403' :
          description: Forbidden
        '404' :
          description: Not Found
        '405' :
          description: Method Not Allowed
        '409' :
          description: Conflict
        '500' :
          description: Internal Server Error  
        '502' :
          description: Bad Gateway
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error      
    delete:
      summary: "Delete a time profile"
      tags: 
        - "Delete a time profile"
      parameters: 
        - name: name
          in: path
          description: "time profile name"
          required: true
          schema:
            type: string        
      responses:
        '204' :
          description: No Content
        '403' :
          description: Forbidden
        '404' :
          description: No Found
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error
  '/nssf-configuration/v1/nssaiAuth/{name}': 
    get:
      summary: "Read a network slice authentication rule"
      tags:
        - "Read a network slice authentication rule"
      parameters:
        - name: name
          in: path
          description: "network slice authentication rule name"
          required: true
          schema:
            type: string
      responses:
        '200' :
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NssfNssaiAuth'
        '400' :  
          description: Bad Request
        '403' :
          description: Forbidden
        '404' :
          description: Not Found
        '405' :
          description: Method Not Allowed
        '409' :
          description: Conflict
        '500' :
          description: Internal Server Error 
        '502' :
          description: Bad Gateway
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error     
    delete:
      summary: "Delete a network slice authentication rule"
      tags:
        - "Delete a network slice authentication rule"
      parameters:
        - name: name
          in: path
          description: "network slice authentication rule name"
          required: true
          schema:
            type: string       
      responses:
        '204' :
          description: No Content
        '403' :
          description: Forbidden
        '404' :
          description: No Found
        '500' :
          description: Internal Server Error 
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error    
  '/nssf-configuration/v1/amfresolutions':
    post:
      summary: "Create a Amf Resolution"
      tags: 
        - "Create a Amf Resolution"
      requestBody:
        content:
          application/json:    # Media type
            schema:            # Request body contents
              $ref: '#/components/schemas/NssfAmfResolution'     
      responses:
        '201' :
          description: Created
        '403' :
          description: Forbidden
        '409' :
          description: Conflict
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error
    get:
      summary: "Read all Amf Resolutions"
      tags: 
        - "Read all Amf Resolutions"
      responses:
        '200' :
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NssfAmfResolution'
        '403' :
          description: Forbidden
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error
  '/nssf-configurations/v1/amfresolutions/{region_id}[:{set_id}[:{instance_id}]]':  
    get:
      summary: "Read a Amf Resolution"
      tags: 
        - "Read a Amf Resolution"
      parameters: 
        - name: region_id
          in: path
          description: "Amf Region ID"
          required: true
          schema:
            type: string
        - name: set_id
          in: path
          description: "Amf Set ID"
          required: true
          schema:
            type: string
        - name: instance_id
          in: path
          description: "Amf instance ID"
          required: true
          schema:
            type: string
      responses:
        '200' :
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NssfAmfResolution'
        '400' :   
          description: Bad Request
        '403' :
          description: Forbidden
        '404' :
          description: Not Found
        '405' :
          description: Method Not Allowed
        '409' :
          description: Conflict
        '500' :
          description: Internal Server Error  
        '502' :
          description: Bad Gateway
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error      
    delete:
      summary: "Delete a Amf Resolution"
      tags: 
        - "Delete a Amf Resolution"
      parameters: 
        - name: region_id
          in: path
          description: "Amf region ID"
          required: true
          schema:
            type: string
        - name: set_id
          in: path
          description: "Amf set ID"
          required: true
          schema:
            type: string
        - name: instance_id
          in: path
          description: "Amf instance ID"
          required: true
          schema:
            type: string       
      responses:
        '204' :
          description: No Content
        '403' :
          description: Forbidden
        '404' :
          description: No Found
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error   
  '/nssf-configuration/v1/configurednssais':
    post:
      summary: "Create a Configured S-NSSAI "
      tags: 
        - "Create a Configured S-NSSAI "
      requestBody:
        content:
          application/json:    # Media type
            schema:            # Request body contents
              $ref: '#/components/schemas/NssfConfiguredNssai'     
      responses:
        '201' :
          description: Created
        '403' :
          description: Forbidden
        '409' :
          description: Conflict
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error
    get:
      summary: "Read all Configured S-NSSAI "
      tags: 
        - "Read all Configured S-NSSAI "
      responses:
        '200' :
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NssfConfiguredNssai'
        '403' :
          description: Forbidden
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error
  '/nssf-configurations/v1/configurednssais/{amf_id}:{mcc}:{mnc}[:{tac}[:{sst}:{sd}]]':  
    get:
      summary: "Read a Amf Resolution"
      tags: 
        - "Read a Amf Resolution"
      parameters: 
        - name: amf_id
          in: path
          description: "Amf ID"
          required: true
          schema:
            type: string
        - name: mcc
          in: path
          description: "Mobile country code"
          required: true
          schema:
            type: string
        - name: mnc
          in: path
          description: "Mobile Network code"
          required: true
          schema:
            type: string
        - name: tac
          in: path
          description: "Tracking Area code"
          required: true
          schema:
            type: string
        - name: sst
          in: path
          description: "Slice service type"
          required: true
          schema:
            type: integer
        - name: sd
          in: path
          description: "Slice descriptor"
          required: true
          schema:
            type: string
            pattern: '^[A-Fa-f0-9]{6}$'
      responses:
        '200' :
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NssfConfiguredNssai'
        '400' :   
          description: Bad Request
        '403' :
          description: Forbidden
        '404' :
          description: Not Found
        '405' :
          description: Method Not Allowed
        '409' :
          description: Conflict
        '500' :
          description: Internal Server Error  
        '502' :
          description: Bad Gateway
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error      
    delete:
      summary: "Delete a Amf Resolution"
      tags: 
        - "Delete a Amf Resolution"
      parameters: 
        - name: amf_id
          in: path
          description: "Amf ID"
          required: true
          schema:
            type: string
        - name: mcc
          in: path
          description: "Mobile country code"
          required: true
          schema:
            type: string
        - name: mnc
          in: path
          description: "Mobile Network code"
          required: true
          schema:
            type: string
        - name: tac
          in: path
          description: "Tracking Area code"
          required: true
          schema:
            type: string
        - name: sst
          in: path
          description: "Slice service type"
          required: true
          schema:
            type: integer
        - name: sd
          in: path
          description: "Slice descriptor"
          required: true
          schema:
            type: string
            pattern: '^[A-Fa-f0-9]{6}$'    
      responses:
        '204' :
          description: No Content
        '403' :
          description: Forbidden
        '404' :
          description: No Found
        '500' :
          description: Internal Server Error  
        '503' :
          description: Service Unavailable
        default:
          description: Unexpected error   
components:
  schemas:
    NssfNssaiAuth:
      type: object
      properties: 
        name: 
          type: string
          description:  "Authentication Rule Name"
          minLength: 1
          maxLength: 255
          example: "AUTH-RULE-1"
        plmnId:
          $ref: '#/components/schemas/PlmnId'
        tac:
          type: string
          description: "AMF Identifier"
          minLength: 1
          maxLength: 255
        snssai:
          $ref: '#/components/schemas/Snssai'
        grant:
          type: string
          enum: 
            - ALLOWED
            - RESTRICTED
    NssfNsiProfile:
      type: object
      properties: 
        name: 
          type: string
          description:  "Network Slice Instance Profile Name"
          minLength: 1
          maxLength: 255
          example: "Slice01"
        nrfUri:
          type:  string
          description: "URI of the Network Resource Function"
          minLength: 1
          maxLength: 255
          example: nrf.oracle.com
        nsiId:
          type: string
          description: "Network Slice Intance Identifier"
          minLength: 1
          maxLength: 255
        targetAmfSets:
          type: array
          description: "List of Target AMF Sets mapped to this Network Slice Instance"
          items: 
              $ref: '#/components/schemas/NssfTargetAmfSet'
          minItems: 1
      required: 
        - name
        - nrfUri
        - targetAmfSets
    NssfTargetAmfSet:
      type: object
      properties: 
        regionId: 
          type: string
          description:  "Target AMF Region Id"
          minLength: 1
          maxLength: 2
          example: "01"
        setId: 
          type: string
          description:  "Target AMF Set Id"
          minLength: 1
          maxLength: 3
          example: "001"
        setFqdn:
          type: string
          description: "Target AMF Set Fqdn"
          pattern: "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.){2,}([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]){2,}$"
          example: "set001.region01.amfset.5gc.mnc311.mcc282.3gppnetwork.org"
      required: 
        - regionId
        - setId
    NssfNssRule:
      type: object
      properties: 
        name: 
          type: string
          description:  "Network Slice Selection Rule Name"
          minLength: 1
          maxLength: 255
          example: "NSS-Rule01"
        amfId:
          type:  string
          description: "AMF Identifier"
          minLength: 1
          maxLength: 255
        plmnId:
          $ref: '#/components/schemas/PlmnId'
        tac:
          type: string
          description: "AMF Identifier"
          minLength: 1
          maxLength: 255
        snssai:
          $ref: '#/components/schemas/Snssai'
        salience:
          type: integer
          description: "Order of importance, higher salience, more important"
          minimum: 0
          maximum: 65535
        behavior:
          $ref: '#/components/schemas/NssfNssRuleBehavior'
      required: 
        - name
        - nrfUri
        - snssai
        - behavior
    PlmnId:
      type: object
      properties:
        mcc:
          type: string
          description: "Mobile Country Code"
          minLength: 1
          maxLength: 3
        mnc:
          type: string
          description: "Mobile Network Code"
          minLength: 1
          maxLength: 3
      required:
        - mcc
        - mnc
    Snssai:
      type: object
      properties:
        sst:
          type: integer
          minimum: 0
          maximum: 255
        sd:
          type: string
          pattern: '^[A-Fa-f0-9]{6}$'
      required:
        - sst
    NssfNssRuleBehavior:
      type: object
      properties:
        grant:
          type: string
          enum: 
            - ALLOWED
            - RESTRICTED
          description: "Whether the requested S-NSSAI is allowed or restricted"
        accessType:
          type: string
          enum:
            - 3GPP_ACCESS
            - NON_3GPP_ACCESS
          description: "Access Type in which the grant applies"
        nsiProfiles:
          type: array
          items:
            properties:
              name:
                type: string
                description: "Network Slice Instance profile name"
              salience:
                type: integer
                description: "Order of importance, higher salience, more important"
            required:
              - name
      required:
        - accessType
    Nssftimeprofile:
      type: object
      properties:
        name: 
          type: string
          description:  "Network Slice Instance Profile Name"
          minLength: 1
          maxLength: 255
          example: "TimeProfile01"
        startDate:
          type: string
          description:  "Start Date format yyyy-mm-dd"
          example: "2044-11-01"
        endDate:
          type: string
          description:  "end Date format yyyy-mm-dd"
          example: "2044-11-09"
        daysOfWeek:
          type: array
          description: "List of days on which profile is active"
          items:
            $ref: '#/components/schemas/DaysOfWeek'
        timeSpans:
          type: array
          items:
            properties:
              startTime:
                type: string
                description: "Start time format hh:mm:ss"
              endTime:
                type: string
                description: "end time format hh:mm:ss"
            required:
              - startTime
              - endTime
      required:
        - name
        - startTime
        - endTime
    DaysOfWeek:
      description: "Days of Week"
      enum: 
                - MONDAY
                - TUESDAY
                - WEDNESDAY
                - THURSDAY
                - FRIDAY
                - SATURDAY
                - SUNDAY
    NssfAmfResolution:
      type: object
      properties: 
        reqionId: 
          type: string
          description:  "Region Id of AMF"
          minLength: 2
          maxLength: 3
          example: "101"
        setId: 
          type: string
          description:  "Set Id of AMF"
          minLength: 2
          maxLength: 3
          example: "101"
        candidateAmfList:
          type: array
          items:
            properties:
              fqdn:
                type: string
                description: "AMF FQDN"
              instanceId:
                type: string
                description: "NF isnstance ID of AMF"
            required:
              - instanceId
      required: 
        - reqionId
        - setId
        - candidateAmfList
    NssfConfiguredNssai:
      type: object
      properties: 
        amfId:
          type:  string
          description: "AMF Identifier"
          minLength: 1
          maxLength: 255
        plmnId:
          $ref: '#/components/schemas/PlmnId'
        tac:
          type: string
          description: "TAC Identifier"
          minLength: 1
          maxLength: 255
        nssai:
          type: array
          description: "List of Configured S-Nssais"
          items: 
              $ref: '#/components/schemas/Snssai'
          minItems: 1
        salience:
          type: integer
          description: "Order of importance, higher salience, more important"
          minimum: 0
          maximum: 65535
      required: 
        - nssai