Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added clarification of notifications to be sent and added StatusInfo "DELETE_REQUESTED" to addres #241 #258

Merged
merged 7 commits into from
Feb 1, 2024
Merged
38 changes: 32 additions & 6 deletions code/API_definitions/qod-api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ info:
Duration (in seconds) for which the QoS session (between application client and application server) should be created. This parameter is optional. When not specified, a default session duration (e.g. 24 hours) is applied. The user may request a termination before its expiration.

* **Notification URL and token**:
Developers may provide a callback URL on which notifications (eg. session termination) regarding the session can be received from the service provider. This is an optional parameter.
Developers may provide a callback URL on which notifications about all status change events of the session (eg. session termination) can be received from the service provider. This is an optional parameter.

# API functionality

Expand Down Expand Up @@ -92,7 +92,24 @@ paths:
tags:
- QoS Sessions
summary: Creates a new session
description: Create QoS Session to manage latency/throughput priorities
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 client will receive in addition to the response a
`QOS_STATUS_CHANGED` event notification with `qosStatus` as `AVAILABLE`.
hdamker marked this conversation as resolved.
Show resolved Hide resolved

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 set free, but will get deleted automatically only 360 seconds after the event.
This behavior should allow clients which are not receiving notification events but are polling the session information the opportunity
to see the `qosStatus` `UNAVAILABLE` and `statusInfo` `NETWORK_TERMINATED`. Before a client can attempt to create a new QoD session
for the same device and flow within this time period they must free the session resources with an explicit `delete` operation.

operationId: createSession
requestBody:
description: Parameters to create a new session
Expand All @@ -110,7 +127,7 @@ paths:
summary: "Session notifications callback"
description: |
Important: this endpoint is to be implemented by the API consumer.
The QoD server will call this endpoint whenever any network related event occurs.
The QoD server 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:
Expand Down Expand Up @@ -273,7 +290,13 @@ paths:
tags:
- QoS Sessions
summary: Delete a QoS session
description: Free resources related to QoS session
description: |
Free resources related to QoS session
hdamker marked this conversation as resolved.
Show resolved Hide resolved

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
parameters:
- name: sessionId
Expand Down Expand Up @@ -887,10 +910,13 @@ components:
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

Device:
description: |
Expand Down Expand Up @@ -1034,8 +1060,8 @@ components:
EventQosStatus:
description: |
The current status of a requested or previously available session. Applicable values in the event are:
* `AVAILABLE` - The requested QoS has been provided by the network
* `UNAVAILABLE` - A requested or previously available QoS session is currently unavailable. `statusInfo` may provide additional information about the reason for the unavailability.
* `AVAILABLE` - The requested QoS has been provided by the network. NOTE: this event will be sent always, also if status within the response to `createSession` is already `AVAILABLE`
hdamker marked this conversation as resolved.
Show resolved Hide resolved
* `UNAVAILABLE` - A requested or previously available QoS session is currently unavailable. `statusInfo` may provide additional information about the reason for the unavailability. NOTE: this event will be sent always, also if the user deletes the session explicitly
hdamker marked this conversation as resolved.
Show resolved Hide resolved
type: string
enum:
- AVAILABLE
Expand Down
Loading