Go to primary content
Oracle® Communications Network Slice Selection Function (NSSF) Cloud Native User's Guide
Release 1.0
F16990-01
Go To Table Of Contents
Contents

Previous
Previous

A 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         
components:
  schemas:
    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:
        - grant
        - accessType

This is the start of your topic.