Nokia Network as Code Quality-of-Service on Demand v1.0.0 API

The Quality-of-Service on Demand v1.0.0 API from Nokia Network as Code — 4 operation(s) for quality-of-service on demand v1.0.0.

Operations 6

GET /quality-on-demand/v1/sessions Return QoD settings for your devices. #
POST /quality-on-demand/v1/sessions Creates a new session #
GET /quality-on-demand/v1/sessions/{sessionId} Get QoS session information #
DELETE /quality-on-demand/v1/sessions/{sessionId} Delete a QoS session #
POST /quality-on-demand/v1/sessions/{sessionId}/extend Extend the duration of an active session #
POST /quality-on-demand/v1/retrieve-sessions Retrieve sessions for a specific device #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/nokia-network-as-code-quality-of-service-on-demand-v1-0-0-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

nokia-network-as-code-quality-of-service-on-demand-v1-0-0-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Nokia Network As Code Quality-of-Service on Demand v1.0.0 API
  version: 1.0.0
  termsOfService: https://developer.networkascode.nokia.io/legal/terms-of-service
  x-refined-note:
  - x-badges differs across the merged source definitions and was not carried
  - x-camara-commonalities differs across the merged source definitions and was not carried
  - x-category differs across the merged source definitions and was not carried
  - x-collections differs across the merged source definitions and was not carried
  - x-long-description differs across the merged source definitions and was not carried
  - x-public differs across the merged source definitions and was not carried
  - x-thumbnail differs across the merged source definitions and was not carried
  - x-version-lifecycle differs across the merged source definitions and was not carried
  - x-website differs across the merged source definitions and was not carried
  description: 'Operations tagged Quality-of-Service on Demand v1.0.0 across 2 of this provider''s published API definitions: nokia-network-as-code-camara-openapi.yml, nokia-network-as-code-platform-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: '{apiRoot}/geofencing-subscriptions/v0.3'
  variables:
    apiRoot:
      default: http://localhost:9091
      description: API root
- url: '{apiRoot}/geofencing-subscriptions/v0.4'
  variables:
    apiRoot:
      default: http://localhost:9091
      description: API root
- url: https://network-as-code.p-eu.rapidapi.com
tags:
- name: Quality-of-Service on Demand v1.0.0
paths:
  /quality-on-demand/v1/sessions:
    get:
      tags:
      - Quality-of-Service on Demand v1.0.0
      summary: Return QoD settings for your devices.
      description: Return device communication Quality-on-Demand settings for your devices.
      operationId: getAllSessions-QoD-V1
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/SessionInfo-QoD-V1'
                type: array
                title: Response Getallsessions
      security:
      - oAuth2ClientCredentials: []
    post:
      tags:
      - Quality-of-Service on Demand v1.0.0
      summary: Creates a new session
      description: 'Create QoS Session to manage latency/throughput priorities


        If the qosStatus in the API response is "AVAILABLE" and a notification callback is provided the API consumer will receive in addition to the response a

        `QOS_STATUS_CHANGED` event notification with `qosStatus` as `AVAILABLE`.


        If the `qosStatus` in the API response is `REQUESTED`, the client will receive either

        - a `QOS_STATUS_CHANGED` event notification with `qosStatus` as `AVAILABLE` after the network notifies that it has created the requested session, or

        - a `QOS_STATUS_CHANGED` event notification with `qosStatus` as `UNAVAILABLE` and `statusInfo` as `NETWORK_TERMINATED` after the network notifies that it has failed to provide the requested session.


        A `QOS_STATUS_CHANGED` event notification with `qosStatus` as `UNAVAILABLE` will also be send if the network terminates the session before the requested duration expired


        NOTE: in case of a `QOS_STATUS_CHANGED` event with `qosStatus` as `UNAVAILABLE` and `statusInfo` as `NETWORK_TERMINATED` the resources of the QoS session

        are not directly released, but will get deleted automatically at earliest 360 seconds after the event.

        This behavior allows clients which are not receiving notification events but are polling to get the session information with

        the `qosStatus` `UNAVAILABLE` (the `statusInfo` parameter is not included in the current version but will be adding to `SessionInfo` in an upcoming release). Before a client can attempt to create a new QoD session

        for the same device and flow period they must release the session resources with an explicit `delete` operation if not yet automatically deleted.

        '
      operationId: createSession-QoD-V1
      requestBody:
        description: Parameters to create a new session
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSession-QoD-V1'
            examples:
              QOS_STATUS_AVAILABLE_NO_INFO_PHONE_NUMBER:
                value:
                  device:
                    phoneNumber: '+99999991001'
                    ipv4Address:
                      publicAddress: 233.252.0.2
                      privateAddress: 192.0.2.25
                      publicPort: 80
                  applicationServer:
                    ipv4Address: 8.8.8.8
                  qosProfile: DOWNLINK_M_UPLINK_L
                  duration: 60
        required: true
      callbacks:
        notifications:
          '{$request.body#/sink}':
            post:
              tags:
              - Session notifications callback
              summary: Session notifications callback
              description: 'Important: this endpoint is to be implemented by the API consumer.

                The API provider will call this endpoint whenever any QoS session change (e.g. network termination) related event occurs.

                Currently only QOS_STATUS_CHANGED event is defined.

                '
              operationId: postNotification
              requestBody:
                required: true
                content:
                  application/cloudevents+json:
                    schema:
                      $ref: '#/components/schemas/CloudEvent-QoD-V1'
                    examples:
                      QOS_STATUS_CHANGED_EXAMPLE:
                        $ref: '#/components/examples/QOS_STATUS_CHANGED_EXAMPLE-QoD-V1'
              responses:
                '204':
                  description: Successful notification
                '400':
                  $ref: '#/components/responses/Generic400-QoD-V1'
                '401':
                  $ref: '#/components/responses/Generic401-QoD-V1'
                '403':
                  $ref: '#/components/responses/Generic403-QoD-V1'
                '500':
                  $ref: '#/components/responses/Generic500-QoD-V1'
                '503':
                  $ref: '#/components/responses/Generic503-QoD-V1'
              security:
              - {}
              - notificationsBearerAuth: []
      responses:
        '201':
          description: Session created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionInfo-QoD-V1'
        '400':
          description: Invalid input for createSession operation
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ErrorInfo-QoD-V1'
                - type: object
                  properties:
                    status:
                      enum:
                      - 400
                    code:
                      enum:
                      - INVALID_ARGUMENT
                      - OUT_OF_RANGE
                      - QUALITY_ON_DEMAND.DURATION_OUT_OF_RANGE
                      - INVALID_CREDENTIAL
                      - INVALID_TOKEN
              examples:
                GENERIC_400_INVALID_ARGUMENT:
                  description: Invalid Argument. Generic Syntax Exception
                  value:
                    status: 400
                    code: INVALID_ARGUMENT
                    message: Client specified an invalid argument, request body or query param.
                GENERIC_400_OUT_OF_RANGE:
                  description: Out of Range. Specific Syntax Exception used when a given field has a pre-defined range or a invalid filter criteria combination is requested
                  value:
                    status: 400
                    code: OUT_OF_RANGE
                    message: Client specified an invalid range.
                DurationOutOfRangeForQoSProfile:
                  description: The requested duration is out of the allowed range for the specific QoS profile
                  value:
                    status: 400
                    code: QUALITY_ON_DEMAND.DURATION_OUT_OF_RANGE
                    message: The requested duration is out of the allowed range for the specific QoS profile
                GENERIC_400_INVALID_CREDENTIAL:
                  value:
                    status: 400
                    code: INVALID_CREDENTIAL
                    message: Only Access token is supported
                GENERIC_400_INVALID_TOKEN:
                  value:
                    status: 400
                    code: INVALID_TOKEN
                    message: Only bearer token is supported
        '401':
          $ref: '#/components/responses/Generic401-QoD-V1'
        '403':
          $ref: '#/components/responses/Generic403-QoD-V1'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo-QoD-V1'
              example:
                status: 409
                code: CONFLICT
                message: Another session is created for the same device
        '500':
          $ref: '#/components/responses/Generic500-QoD-V1'
        '501':
          $ref: '#/components/responses/Generic501-QoD-V1'
        '503':
          $ref: '#/components/responses/Generic503-QoD-V1'
      security:
      - oAuth2ClientCredentials: []
    servers:
    - url: '{apiRoot}/geofencing-subscriptions/v0.3'
      variables:
        apiRoot:
          default: http://localhost:9091
          description: API root
    - url: '{apiRoot}/geofencing-subscriptions/v0.4'
      variables:
        apiRoot:
          default: http://localhost:9091
          description: API root
  /quality-on-demand/v1/sessions/{sessionId}:
    get:
      tags:
      - Quality-of-Service on Demand v1.0.0
      summary: Get QoS session information
      description: Querying for QoS session resource information details
      operationId: getSession-QoD-V1
      parameters:
      - name: sessionId
        in: path
        description: Session ID that was obtained from the createSession operation
        required: true
        schema:
          $ref: '#/components/schemas/SessionId-QoD-V1'
      responses:
        '200':
          description: Contains information about active session
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionInfo-QoD-V1'
        '400':
          $ref: '#/components/responses/Generic400-QoD-V1'
        '401':
          $ref: '#/components/responses/Generic401-QoD-V1'
        '403':
          $ref: '#/components/responses/Generic403-QoD-V1'
        '404':
          $ref: '#/components/responses/SessionNotFound404-QoD-V1'
        '500':
          $ref: '#/components/responses/Generic500-QoD-V1'
        '503':
          $ref: '#/components/responses/Generic503-QoD-V1'
      security:
      - oAuth2ClientCredentials: []
    delete:
      tags:
      - Quality-of-Service on Demand v1.0.0
      summary: Delete a QoS session
      description: 'Release resources related to QoS session


        If the notification callback is provided and the `qosStatus` of the session was `AVAILABLE` the client will receive in addition to the response a `QOS_STATUS_CHANGED` event with

        - `qosStatus` as `UNAVAILABLE` and

        - `statusInfo` as `DELETE_REQUESTED`

        There will be no notification event if the `qosStatus` was already `UNAVAILABLE`.

        '
      operationId: deleteSession-QoD-V1
      parameters:
      - name: sessionId
        in: path
        description: Session ID that was obtained from the createSession operation
        required: true
        schema:
          $ref: '#/components/schemas/SessionId-QoD-V1'
      responses:
        '204':
          description: Session deleted
        '400':
          $ref: '#/components/responses/Generic400-QoD-V1'
        '401':
          $ref: '#/components/responses/Generic401-QoD-V1'
        '403':
          $ref: '#/components/responses/Generic403-QoD-V1'
        '404':
          $ref: '#/components/responses/SessionNotFound404-QoD-V1'
        '500':
          $ref: '#/components/responses/Generic500-QoD-V1'
        '503':
          $ref: '#/components/responses/Generic503-QoD-V1'
      security:
      - oAuth2ClientCredentials: []
    servers:
    - url: '{apiRoot}/geofencing-subscriptions/v0.3'
      variables:
        apiRoot:
          default: http://localhost:9091
          description: API root
    - url: '{apiRoot}/geofencing-subscriptions/v0.4'
      variables:
        apiRoot:
          default: http://localhost:9091
          description: API root
  /quality-on-demand/v1/sessions/{sessionId}/extend:
    post:
      tags:
      - Quality-of-Service on Demand v1.0.0
      summary: Extend the duration of an active session
      description: 'Extend the overall duration of an active QoS session. If this operation is executed successfully, the new duration of the target session will be the original duration plus the additionally requested duration.

        The new remaining duration of the QoS session shall not exceed the maximum remaining duration limit (currently fixed at 86,400 seconds) where the remaining duration is calculated as the difference between the `expiresAt` and current time when the request to extend the session duration is received. If this maximum limit would be exceeded, the overall duration shall be set such that the remaining duration is equal to this limit.

        An example: A QoD session was originally created with duration 80,000 seconds. 10,000 seconds later, the developer requested to extend the session by 20,000 seconds.

        - Original duration: 80,000 seconds

        - Elapsed time: 10,000 seconds

        - Remaining duration: 70,000 seconds

        - New remaining duration: 86,400 seconds (the maximum allowed)

        - New overall session duration: 96,400 seconds

        '
      operationId: extendQosSessionDuration-QoD-V1
      parameters:
      - name: sessionId
        in: path
        description: Session ID that was obtained from the createSession operation
        required: true
        schema:
          $ref: '#/components/schemas/SessionId-QoD-V1'
      requestBody:
        description: Parameters to extend the duration of an active session
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtendSessionDuration-QoD-V1'
        required: true
      responses:
        '200':
          description: Contains information about active session
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionInfo-QoD-V1'
        '400':
          description: Invalid input for extendQosSessionDuration operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo-QoD-V1'
              examples:
                Generic400:
                  summary: Some parameter combinations or parameter values provided are not schema compliant
                  value:
                    status: 400
                    code: INVALID_ARGUMENT
                    message: Schema validation failed at  ...
                InactiveSession:
                  summary: The target session is inactive
                  value:
                    status: 400
                    code: INVALID_ARGUMENT
                    message: The target session is inactive
        '401':
          $ref: '#/components/responses/Generic401-QoD-V1'
        '403':
          $ref: '#/components/responses/Generic403-QoD-V1'
        '404':
          $ref: '#/components/responses/SessionNotFound404-QoD-V1'
        '500':
          $ref: '#/components/responses/Generic500-QoD-V1'
        '503':
          $ref: '#/components/responses/Generic503-QoD-V1'
      security:
      - oAuth2ClientCredentials: []
    servers:
    - url: '{apiRoot}/geofencing-subscriptions/v0.3'
      variables:
        apiRoot:
          default: http://localhost:9091
          description: API root
    - url: '{apiRoot}/geofencing-subscriptions/v0.4'
      variables:
        apiRoot:
          default: http://localhost:9091
          description: API root
  /quality-on-demand/v1/retrieve-sessions:
    post:
      tags:
      - Quality-of-Service on Demand v1.0.0
      summary: Retrieve sessions for a specific device
      description: Return all QoD sessions related to the specified device.
      operationId: retrieveSessions-QoD-V1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveSessionInput-QoD-V1'
            examples:
              QOS_RETRIEVE_SESSION_PHONE_NUMBER:
                value:
                  device:
                    phoneNumber: '+99999991001'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/SessionInfo-QoD-V1'
                type: array
                title: Response Retrievesessions
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError-QoD-V1'
      security:
      - oAuth2ClientCredentials: []
    servers:
    - url: '{apiRoot}/geofencing-subscriptions/v0.3'
      variables:
        apiRoot:
          default: http://localhost:9091
          description: API root
    - url: '{apiRoot}/geofencing-subscriptions/v0.4'
      variables:
        apiRoot:
          default: http://localhost:9091
          description: API root
components:
  schemas:
    RetrieveSessionInput-QoD-V1:
      properties:
        device:
          $ref: '#/components/schemas/Device-QoD-V1'
      type: object
      required:
      - device
      title: RetrieveSessionInput
    QosStatus-QoD-V1:
      description: 'The current status of the requested QoS session. The status can be one of the following:

        * `REQUESTED` - QoS has been requested by creating a session

        * `AVAILABLE` - The requested QoS has been provided by the network

        * `UNAVAILABLE` - The requested QoS cannot be provided by the network due to some reason

        '
      type: string
      enum:
      - REQUESTED
      - AVAILABLE
      - UNAVAILABLE
    SessionId-QoD-V1:
      description: Session ID in UUID format
      type: string
      format: uuid
    ApplicationServerIpv4Address-QoD-V1:
      type: string
      example: 192.168.0.1/24
      description: "IPv4 address may be specified in form <address/mask> as:\n  - address - an IPv4 number in dotted-quad form 1.2.3.4. Only this exact IP number will match the flow control rule.\n  - address/mask - an IP number as above with a mask width of the form 1.2.3.4/24.\n    In this case, all IP numbers from 1.2.3.0 to 1.2.3.255 will match. The bit width MUST be valid for the IP version.\n"
    HTTPValidationError-QoD-V1:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError-QoD-V1'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    QosProfileName-QoD-V1:
      description: "A unique name for identifying a specific QoS profile.\nThis may follow different formats depending on the service providers implementation.\nSome options addresses:\n\n\n\n\n  - A UUID style string\n  - Support for predefined profiles QOS_S, QOS_M, QOS_L, and QOS_E\n  - A searchable descriptive name\n"
      type: string
      example: QCI_1_voice
      minLength: 3
      maxLength: 256
      format: string
      pattern: ^[a-zA-Z0-9_.-]+$
    Port-QoD-V1:
      description: TCP or UDP port number
      type: integer
      minimum: 0
      maximum: 65535
    ApplicationServer-QoD-V1:
      description: 'A server hosting backend applications to deliver some business logic to clients.


        The developer can choose to provide the below specified device identifiers:


        * `ipv4Address`

        * `ipv6Address`

        '
      type: object
      properties:
        ipv4Address:
          $ref: '#/components/schemas/ApplicationServerIpv4Address-QoD-V1'
        ipv6Address:
          $ref: '#/components/schemas/ApplicationServerIpv6Address-QoD-V1'
      minProperties: 1
    ErrorInfo-QoD-V1:
      type: object
      properties:
        status:
          type: integer
          description: HTTP status code returned along with this error response
        code:
          type: string
          description: Code given to this error
        message:
          type: string
          description: Detailed error description
      required:
      - status
      - code
      - message
    NetworkAccessIdentifier-QoD-V1:
      description: A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator.
      type: string
      example: 123456789@domain.com
    PhoneNumber-QoD-V1:
      description: A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'.
      type: string
      pattern: ^\+?[0-9]{5,15}$
      example: '+123456789'
    BaseSessionInfo-QoD-V1:
      description: Common attributes of a QoD session
      type: object
      properties:
        device:
          $ref: '#/components/schemas/Device-QoD-V1'
        applicationServer:
          $ref: '#/components/schemas/ApplicationServer-QoD-V1'
        devicePorts:
          description: The ports used locally by the device for flows to which the requested QoS profile should apply. If omitted, then the qosProfile will apply to all flows between the device and the specified application server address and ports
          allOf:
          - $ref: '#/components/schemas/PortsSpec-QoD-V1'
        applicationServerPorts:
          description: A list of single ports or port ranges on the application server
          allOf:
          - $ref: '#/components/schemas/PortsSpec-QoD-V1'
        qosProfile:
          $ref: '#/components/schemas/QosProfileName-QoD-V1'
        sink:
          type: string
          format: uri
          description: The address to which events about all status changes of the session (e.g. session termination) shall be delivered using the selected protocol.
          example: https://endpoint.example.com/sink
        sinkCredential:
          description: A sink credential provides authentication or authorization information necessary to enable delivery of events to a target.
          allOf:
          - $ref: '#/components/schemas/SinkCredential-QoD-V1'
      required:
      - applicationServer
      - qosProfile
    CloudEvent-QoD-V1:
      description: Event compliant with the CloudEvents specification
      required:
      - id
      - source
      - specversion
      - type
      - time
      properties:
        id:
          description: Identifier of this event, that must be unique in the source context.
          type: string
        source:
          description: Identifies the context in which an event happened in the specific Provider Implementation.
          type: string
          format: uri-reference
        type:
          description: The type of the event.
          type: string
          enum:
          - org.camaraproject.quality-on-demand.v1.qos-status-changed
        specversion:
          description: Version of the specification to which this event conforms (must be 1.0 if it conforms to cloudevents 1.0.2 version)
          type: string
          enum:
          - '1.0'
        datacontenttype:
          description: media-type that describes the event payload encoding, must be "application/json" for CAMARA APIs
          type: string
          enum:
          - application/json
        data:
          description: Event notification details payload, which depends on the event type
          type: object
        time:
          description: 'Timestamp of when the occurrence happened. It must follow RFC 3339

            '
          type: string
          format: date-time
      discriminator:
        propertyName: type
        mapping:
          org.camaraproject.quality-on-demand.v1.qos-status-changed: '#/components/schemas/EventQosStatusChanged'
    DeviceIpv6Address-QoD-V1:
      description: 'The device should be identified by the observed IPv6 address, or by any single IPv6 address from within the subnet allocated to the device (e.g. adding ::0 to the /64 prefix).


        The session shall apply to all IP flows between the device subnet and the specified application server, unless further restricted by the optional parameters devicePorts or applicationServerPorts.

        '
      type: string
      format: ipv6
      example: 2001:db8:85a3:8d3:1319:8a2e:370:7344
    DeviceIpv4Addr-QoD-V1:
      type: object
      description: 'The device should be identified by either the public (observed) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers).


        If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then  the same address should be specified for both publicAddress and privateAddress.


        If NAT64 is in use, the device should be identified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object)


        In all cases, publicAddress must be specified, along with at least one of either privateAddress or publicPort, dependent upon which is known. In general, mobile devices cannot be identified by their public IPv4 address alone.

        '
      properties:
        publicAddress:
          $ref: '#/components/schemas/SingleIpv4Addr-QoD-V1'
        privateAddress:
          $ref: '#/components/schemas/SingleIpv4Addr-QoD-V1'
        publicPort:
          $ref: '#/components/schemas/Port-QoD-V1'
      anyOf:
      - required:
        - publicAddress
        - privateAddress
      - required:
        - publicAddress
        - publicPort
      example:
        publicAddress: 84.125.93.10
        publicPort: 59765
    StatusInfo-QoD-V1:
      description: 'Reason for the new `qosStatus`. Currently `statusInfo` is only applicable when `qosStatus` is ''UNAVAILABLE''.

        * `DURATION_EXPIRED` - Session terminated due to requested duration expired

        * `NETWORK_TERMINATED` - Network terminated the session before the requested duration expired

        * `DELETE_REQUESTED`- User requested the deletion of the session before the requested duration expired

        '
      type: string
      enum:
      - DURATION_EXPIRED
      - NETWORK_TERMINATED
      - DELETE_REQUESTED
    CreateSession-QoD-V1:
      description: Attributes required to create a session
      allOf:
      - $ref: '#/components/schemas/BaseSessionInfo-QoD-V1'
      - type: object
        properties:
          duration:
            description: 'Session duration in seconds. Maximal value of 24 hours is used if not set.

              After session is expired the, client will receive a `QOS_STATUS_CHANGED` event with

              - `qosStatus` as `UNAVAILABLE`, and,

              - `statusInfo` as `DURATION_EXPIRED`.

              See notification callback.

              '
            type: integer
            format: int32
            minimum: 1
            maximum: 86400
            default: 86400
            example: 86400
    ExtendSessionDuration-QoD-V1:
      description: Attributes required to extend the duration of an active session
      type: object
      properties:
        requestedAdditionalDuration:
          description: 'Additional duration in seconds to be extended.

            '
          type: integer
          format: int32
          minimum: 1
          maximum: 86399
          example: 60
      required:
      - requestedAdditionalDuration
    Message-QoD-V1:
      type: object
      properties:
        severity:
          description: Message severity
          type: string
          enum:
          - INFO
          - WARNING
        description:
          description: Detailed message text
          type: string
      required:
      - severity
      - description
    PortsSpec-QoD-V1:
      type: object
      minProperties: 1
      properties:
        ranges:
          type: array
          minItems: 1
          items:
            type: object
            required:
            - from
            - to
            properties:
              from:
                $ref: '#/components/schemas/Port-QoD-V1'
              to:
                $ref: '#/components/schemas/Port-QoD-V1'
        ports:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/Port-QoD-V1'
      example:
        ranges:
        - from: 5010
          to: 5020
        ports:
        - 5060
        - 5070
    SessionInfo-QoD-V1:
      description: Session related information.
      allOf:
      - $ref: '#/components/schemas/BaseSessionInfo-QoD-V1'
      - type: object
        properties:
          sessionId:
            $ref: '#/components/schemas/SessionId-QoD-V1'
          duration:
            type: integer
            format: int32
            minimum: 1
            example: 86400
          startedAt:
            type: integer
            example: 1639479600
            description: Timestamp of session start in seconds since Unix epoch
            format: int64
          expiresAt:
            type: integer
            example: 1639566000
            description: Timestamp of session expiration if the session was not deleted, in seconds since Unix epoch
            format: int64
          qosStatus:
            $ref: '#/components/schemas/QosStatus-QoD-V1'
          statusInfo:
            $ref: '#/components/schemas/StatusInfo-QoD-V1'
          messages:
            type: array
            items:
              $ref: '#/components/schemas/Message-QoD-V1'
        required:
        - sessionId
        - duration
        - startedAt
        - expiresAt
        - qosStatus
    ValidationError-QoD-V1:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    ApplicationServerIpv6Address-QoD-V1:
      type: string
      example: 2001:db8:85a3:8d3:1319:8a2e:370:7344
      description: "IPv6 address may be specified in form <address/mask> as:\n  - address - The /128 subnet is optional for single addresses:\n    - 2001:db8:85a3:8d3:1319:8a2e:370:7344\n    - 2001:db8:85a3:8d3:1319:8a2e:370:7344/128\n  - address/mask - an IP v6 number with a mask:\n    - 2001:db8:85a3:8d3::0/64\n    - 2001:db8:85a3:8d3::/64\n"
    Device-QoD-V1:
      description: 'End-user equipment able to connect to a network. Examples of devices include smartphones or IoT sensors/actuators.


        The developer can choose to provide the below specified device identifiers:


        * `ipv4Address`

        * `ipv6Address`

        * `phoneNumber`

        * `networkAccessIdentifier`


        NOTE: the MNO might support only a subset of these options. The API invoker can provide multiple identifiers to be compatible across different MNOs. In this case the identifiers MUST belong to the same device

        '
      type: object
      properties:
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumber-QoD-V1'
        networkAccessIdentifier:
          $ref: '#/components/schemas/NetworkAccessIdentifier-Q

# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nokia-network-as-code/refs/heads/main/openapi/nokia-network-as-code-quality-of-service-on-demand-v1-0-0-api-openapi.yml