diff --git a/CHANGELOG.md b/CHANGELOG.md index 4434d16..802f3fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Changelog Network Slice Booking ## Table of Contents +- [r1.2](#r1.2) - [r1.1](#r1.1) @@ -13,8 +14,34 @@ The below sections record the changes for each API version in each release as fo * for subsequent release-candidate(s), only the delta to the previous release-candidate * for a public release, the consolidated changes since the previous public release +# r1.2 +## Release Notes +This release contains the definition and documentation of + +- network-slice-booking v0.1.0 + +The API definition(s) are based on + +- Commonalities v0.6.0 +- Identity and Consent Management v0.4.0 +## network-slice-booking v0.1.0 + +**network-slice-booking v0.1.0 is first public release version of the network-slice-booking API** + +- API definition **with inline documentation**: + - [View it on ReDoc](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/NetworkSliceBooking/r1.2/code/API_definitions/network-slice-booking.yaml&nocors) + - [View it on Swagger Editor](https://camaraproject.github.io/swagger-ui/?url=https://raw.githubusercontent.com/camaraproject/NetworkSliceBooking/r1.2/code/API_definitions/network-slice-booking.yaml) + - OpenAPI [YAML spec file](https://github.com/camaraproject/NetworkSliceBooking/blob/r1.2/code/API_definitions/network-slice-booking.yaml) +### Changed +* Align the error name to Generic429 and change mandatory description for date-time string format in [#75](https://github.com/camaraproject/NetworkSliceBooking/issues/75) +### Added +* Add centralized linting workflows to ensure code quality and API specification compliance in [#69](https://github.com/camaraproject/NetworkSliceBooking/pull/69) +* Add text description for duration format fields in [#75](https://github.com/camaraproject/NetworkSliceBooking/issues/75) + +**Full Changelog**: https://github.com/camaraproject/NetworkSliceBooking/commits/r1.2 + # r1.1 -## Release note: +## Release Notes This release contains the definition and documentation of - network-slice-booking v0.1.0-rc.1 @@ -28,9 +55,9 @@ The API definition(s) are based on **network-slice-booking v0.1.0-rc.1 is first pre-release version of the network-slice-booking API** - API definition **with inline documentation**: - - [View it on ReDoc](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/NetworkSliceBooking/r1.1/code/API_definitions/NetworkSliceBooking.yaml&nocors) - - [View it on Swagger Editor](https://camaraproject.github.io/swagger-ui/?url=https://raw.githubusercontent.com/camaraproject/NetworkSliceBooking/r1.1/code/API_definitions/NetworkSliceBooking.yaml) - - OpenAPI [YAML spec file](https://github.com/camaraproject/NetworkSliceBooking/blob/r1.1/code/API_definitions/NetworkSliceBooking.yaml) + - [View it on ReDoc](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/NetworkSliceBooking/r1.1/code/API_definitions/network-slice-booking.yaml&nocors) + - [View it on Swagger Editor](https://camaraproject.github.io/swagger-ui/?url=https://raw.githubusercontent.com/camaraproject/NetworkSliceBooking/r1.1/code/API_definitions/network-slice-booking.yaml) + - OpenAPI [YAML spec file](https://github.com/camaraproject/NetworkSliceBooking/blob/r1.1/code/API_definitions/network-slice-booking.yaml) ### Added * Upload Network Slice Booking API initial documentation in [#4](https://github.com/camaraproject/NetworkSliceBooking/pull/4) * Add Network Slice Booking API user story in [#13](https://github.com/camaraproject/NetworkSliceBooking/pull/13) @@ -40,3 +67,6 @@ The API definition(s) are based on * Update API yaml, modify and format the status codes 200, 204, 404, 409 aligment with commonalities in [#50](https://github.com/camaraproject/NetworkSliceBooking/pull/50) * Update API yaml, remove AUTHENTICATION_REQUIRED error code in [#55](https://github.com/camaraproject/NetworkSliceBooking/pull/55) * Add the test file of Network Slice Booking API and update the file of checklist in [#57](https://github.com/camaraproject/NetworkSliceBooking/pull/57) +* Align the API definition with Commonalities r3.2 and ICM r3.2 in [#59](https://github.com/camaraproject/NetworkSliceBooking/pull/59) + +**Full Changelog**: https://github.com/camaraproject/NetworkSliceBooking/commits/r1.1 diff --git a/README.md b/README.md index 5fc8468..c197c4f 100644 --- a/README.md +++ b/README.md @@ -22,11 +22,15 @@ Sandbox API Repository to describe, develop, document, and test the NetworkSlice ## Release Information -Pre-releases of this sub project are available in https://github.com/camaraproject/NetworkSliceBooking/releases - - - +- `NEW`:Public release [r1.2](https://github.com/camaraproject/NetworkSliceBooking/releases/tag/r1.2) with network-slice-booking v0.1.0 is now available: + - [View it on ReDoc](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/NetworkSliceBooking/r1.2/code/API_definitions/network-slice-booking.yaml&nocors) + - [View it on Swagger Editor](https://camaraproject.github.io/swagger-ui/?url=https://raw.githubusercontent.com/camaraproject/NetworkSliceBooking/r1.2/code/API_definitions/network-slice-booking.yaml) + - OpenAPI [YAML spec file](https://github.com/camaraproject/NetworkSliceBooking/blob/r1.2/code/API_definitions/network-slice-booking.yaml) + + +The latest public release is available here: https://github.com/camaraproject/NetworkSliceBooking/releases/latest For changes see [CHANGELOG.md](https://github.com/camaraproject/NetworkSliceBooking/blob/main/CHANGELOG.md) + ## Contributing * Meetings are held virtually diff --git a/code/API_definitions/network-slice-booking.yaml b/code/API_definitions/network-slice-booking.yaml index 6fe94e3..083e534 100644 --- a/code/API_definitions/network-slice-booking.yaml +++ b/code/API_definitions/network-slice-booking.yaml @@ -3,7 +3,7 @@ info: title: Network Slice Booking description: | The Network Slice Booking (NSB) API provides programmable interface for developers to reserve a slice resource of a selected area within a period, and manage device access control as needed. - For specific details, please refer to [Network Slice Booking API Design.md](/documentation/API_documentation/Network_Slice_Booking_API_Design.md). + For specific details, please refer to [Network Slice Booking API Design.md](https://github.com/camaraproject/NetworkSliceBooking/blob/r1.2/documentation/API_documentation/Network_Slice_Booking_API_Design.md). # Introduction @@ -41,7 +41,7 @@ info: As a specific rule, error `501 - NOT_IMPLEMENTED` can be only a possible error response if it is explicitly documented in the API. - version: 0.1.0-rc.1 + version: 0.1.0 x-camara-commonalities: 0.6 license: name: Apache 2.0 @@ -50,7 +50,7 @@ externalDocs: description: Project documentation at CAMARA url: https://github.com/camaraproject/NetworkSliceBooking servers: - - url: "{apiRoot}/network-slice-booking/v0.1rc1" + - url: "{apiRoot}/network-slice-booking/v0.1" variables: apiRoot: default: http://localhost:9100 @@ -74,6 +74,8 @@ paths: security: - openId: - network-slice-booking:sessions:create + parameters: + - $ref: "#/components/parameters/x-correlator" requestBody: description: Parameters to create a new session content: @@ -90,6 +92,9 @@ paths: responses: "201": description: Session created successfully + headers: + x-correlator: + $ref: "#/components/headers/x-correlator" content: application/json: schema: @@ -105,10 +110,8 @@ paths: $ref: "#/components/responses/Generic401" "403": $ref: "#/components/responses/Generic403" - "410": - $ref: "#/components/responses/Generic410" "422": - $ref: "#/components/responses/Generic422" + $ref: "#/components/responses/NetworkSliceBooking422" "429": $ref: "#/components/responses/Generic429" @@ -135,9 +138,13 @@ paths: required: true schema: $ref: "#/components/schemas/SessionId" + - $ref: "#/components/parameters/x-correlator" responses: "204": description: Session deleted + headers: + x-correlator: + $ref: "#/components/headers/x-correlator" "400": $ref: "#/components/responses/Generic400" "401": @@ -170,9 +177,13 @@ paths: required: true schema: $ref: "#/components/schemas/SessionId" + - $ref: "#/components/parameters/x-correlator" responses: "200": description: Contains information about active session + headers: + x-correlator: + $ref: "#/components/headers/x-correlator" content: application/json: schema: @@ -588,32 +599,7 @@ components: status: 404 code: NOT_FOUND message: The specified resource is not found. - Generic410: - description: Gone - headers: - x-correlator: - $ref: "#/components/headers/x-correlator" - content: - application/json: - schema: - allOf: - - $ref: "#/components/schemas/ErrorInfo" - - type: object - properties: - status: - enum: - - 410 - code: - enum: - - GONE - examples: - GENERIC_410_GONE: - description: Use in notifications flow to allow API Consumer to indicate that its callback is no longer available - value: - status: 410 - code: GONE - message: Access to the target resource is no longer available. - Generic422: + NetworkSliceBooking422: description: Unprocessable Content headers: x-correlator: @@ -687,16 +673,16 @@ components: maxNumOfDevices: 5 downStreamRatePerDevice: value: 10 - unit: "bps" + unit: bps upStreamRatePerDevice: value: 10 - unit: "bps" + unit: bps downStreamDelayBudget: value: 12 - unit: "Milliseconds" + unit: Milliseconds upStreamDelayBudget: value: 12 - unit: "Milliseconds" + unit: Milliseconds RETRIEVAL_POLYGON: value: serviceTime: @@ -717,16 +703,16 @@ components: maxNumOfDevices: 5 downStreamRatePerDevice: value: 10 - unit: "bps" + unit: bps upStreamRatePerDevice: value: 10 - unit: "bps" + unit: bps downStreamDelayBudget: value: 12 - unit: "Milliseconds" + unit: Milliseconds upStreamDelayBudget: value: 12 - unit: "Milliseconds" + unit: Milliseconds RESPONSE_CIRCLE: value: serviceTime: @@ -742,16 +728,16 @@ components: maxNumOfDevices: 5 downStreamRatePerDevice: value: 10 - unit: "bps" + unit: bps upStreamRatePerDevice: value: 10 - unit: "bps" + unit: bps downStreamDelayBudget: value: 12 - unit: "Milliseconds" + unit: Milliseconds upStreamDelayBudget: value: 12 - unit: "Milliseconds" + unit: Milliseconds sessionId: "3fa85f64-5717-4562-b3fc-2c963f66afa6" RESPONSE_POLYGON: value: @@ -773,14 +759,14 @@ components: maxNumOfDevices: 5 downStreamRatePerDevice: value: 10 - unit: "bps" + unit: bps upStreamRatePerDevice: value: 10 - unit: "bps" + unit: bps downStreamDelayBudget: value: 12 - unit: "Milliseconds" + unit: Milliseconds upStreamDelayBudget: value: 12 - unit: "Milliseconds" + unit: Milliseconds sessionId: "3fa85f64-5717-4562-b3fc-2c963f66afa6" diff --git a/code/Test_definitions/network-slice-booking-createSession.feature b/code/Test_definitions/network-slice-booking-createSession.feature index d1077fe..1f61c02 100644 --- a/code/Test_definitions/network-slice-booking-createSession.feature +++ b/code/Test_definitions/network-slice-booking-createSession.feature @@ -1,4 +1,4 @@ -Feature: CAMARA Network Slice Booking API v0.1.0-rc.1 - Operation createSession +Feature: CAMARA Network Slice Booking API v0.1.0 - Operation createSession # Input to be provided by the implementation to the tester # @@ -14,11 +14,11 @@ Feature: CAMARA Network Slice Booking API v0.1.0-rc.1 - Operation createSession # * An Area outside the supported area # * A combination of request parameters including service area, start time, and end time, configuration information of network slicing # - # References to OAS spec schemas refer to schemas specifies in network-slice-booking.yaml, version 0.1.0-rc.1 + # References to OAS spec schemas refer to schemas specified in network-slice-booking.yaml, version 0.1.0 Background: Common createSession setup Given an environment at "apiRoot" - And the resource "/network-slice-booking/v0.1rc1/sessions" + And the resource "/network-slice-booking/v0.1/sessions" And the header "Content-Type" is set to "application/json" And the header "Authorization" is set to a valid access token And the header "x-correlator" complies with the schema at "#/components/schemas/XCorrelator" @@ -83,17 +83,6 @@ Feature: CAMARA Network Slice Booking API v0.1.0-rc.1 - Operation createSession And the response property "$.code" is "PERMISSION_DENIED" And the response property "$.message" contains a user friendly text - @network_slice_booking_createSession_06_resource_exhaustion_scenario - Scenario: Error response for resource exhaustion - Given the right request body property argument - When the request "createSession" is sent - Then the response status code is 410 - And the response header "x-correlator" has same value as the request header "x-correlator" - And the response header "Content-Type" is "application/json" - And the response property "$.status" is 410 - And the response property "$.code" is "GONE" - And the response property "$.message" is "Access to the target resource is no longer available." - @network_slice_booking_createSession_07_area_not_support_fail_scenario Scenario: Common validations for fail scenario of area not supported Given starttime, endtime, the request body property "$.serviceArea" is set to the service area of not supported and the configuration of information of network slicing diff --git a/code/Test_definitions/network-slice-booking-deleteSession.feature b/code/Test_definitions/network-slice-booking-deleteSession.feature index b6c9383..cc94b01 100644 --- a/code/Test_definitions/network-slice-booking-deleteSession.feature +++ b/code/Test_definitions/network-slice-booking-deleteSession.feature @@ -1,4 +1,4 @@ -Feature: CAMARA Network Slice Booking API v0.1.0-rc.1 - Operation deleteSession +Feature: CAMARA Network Slice Booking API v0.1.0 - Operation deleteSession # Input to be provided by the implementation to the tester # @@ -7,11 +7,11 @@ Feature: CAMARA Network Slice Booking API v0.1.0-rc.1 - Operation deleteSession # # Testing assets: # * The sessionId of an existing session. - # * References to OAS spec schemas refer to schemas specifies in network-slice-booking.yaml, version 0.1.0-rc.1 + # * References to OAS spec schemas refer to schemas specified in network-slice-booking.yaml, version 0.1.0 Background: Common deleteSession setup Given an environment at "apiRoot" - And the resource "/network-slice-booking/v0.1rc1/sessions/{sessionId}" + And the resource "/network-slice-booking/v0.1/sessions/{sessionId}" And the header "Content-Type" is set to "application/json" And the header "Authorization" is set to a valid access token And the header "x-correlator" complies with the schema at "#/components/schemas/XCorrelator" @@ -47,7 +47,7 @@ Feature: CAMARA Network Slice Booking API v0.1.0-rc.1 - Operation deleteSession And the response header "Content-Type" is "application/json" And the response header "x-correlator" has same value as the request header "x-correlator" And the response property "$.status" is 400 - And the response property "$.code" is "INVALID_ARGUMENT" + And the response property "$.code" is "OUT_OF_RANGE" And the response property "$.message" is "Client specified an invalid range." @network_slice_booking_deleteSession_04_missing_authorization_scenario diff --git a/code/Test_definitions/network-slice-booking-getSession.feature b/code/Test_definitions/network-slice-booking-getSession.feature index a325192..4faf176 100644 --- a/code/Test_definitions/network-slice-booking-getSession.feature +++ b/code/Test_definitions/network-slice-booking-getSession.feature @@ -1,4 +1,4 @@ -Feature: CAMARA Network Slice Booking API v0.1.0-rc.1 - Operation getSession +Feature: CAMARA Network Slice Booking API v0.1.0 - Operation getSession # Input to be provided by the implementation to the tester # @@ -7,11 +7,11 @@ Feature: CAMARA Network Slice Booking API v0.1.0-rc.1 - Operation getSession # # Testing assets: # * The sessionId of an existing session. - # * References to OAS spec schemas refer to schemas specifies in network-slice-booking.yaml, version 0.1.0-rc.1 + # * References to OAS spec schemas refer to schemas specified in network-slice-booking.yaml, version 0.1.0 Background: Common getSession setup Given an environment at "apiRoot" - And the resource "/network-slice-booking/v0.1rc1/sessions/{sessionId}" + And the resource "/network-slice-booking/v0.1/sessions/{sessionId}" And the header "Content-Type" is set to "application/json" And the header "Authorization" is set to a valid access token And the header "x-correlator" complies with the schema at "#/components/schemas/XCorrelator" @@ -50,7 +50,7 @@ Feature: CAMARA Network Slice Booking API v0.1.0-rc.1 - Operation getSession And the response header "Content-Type" is "application/json" And the response header "x-correlator" has same value as the request header "x-correlator" And the response property "$.status" is 400 - And the response property "$.code" is "INVALID_ARGUMENT" + And the response property "$.code" is "OUT_OF_RANGE" And the response property "$.message" is "Client specified an invalid range." @network_slice_booking_getSession_04_missing_authorization_scenario diff --git a/documentation/API_documentation/Network Slice Booking API Design.md b/documentation/API_documentation/Network_Slice_Booking_API_Design.md similarity index 100% rename from documentation/API_documentation/Network Slice Booking API Design.md rename to documentation/API_documentation/Network_Slice_Booking_API_Design.md diff --git a/documentation/API_documentation/network-slice-booking-API-Readiness-Checklist.md b/documentation/API_documentation/network-slice-booking-API-Readiness-Checklist.md index 1b6d5d9..257aaa5 100644 --- a/documentation/API_documentation/network-slice-booking-API-Readiness-Checklist.md +++ b/documentation/API_documentation/network-slice-booking-API-Readiness-Checklist.md @@ -1,13 +1,13 @@ # API Readiness Checklist -Checklist for network-slicing-book v0.1.0-rc.1 in r1.1 +Checklist for network-slicing-book v0.1.0 in r1.2 | Nr | API release assets | alpha | release-candidate | initial
public | stable
public | Status | Reference information | |----|----------------------------------------------|:-----:|:-----------------:|:-------:|:------:|:----:|:-------------------------------------------------------------------------------------------:| | 1 | API definition | M | M | M | M | Y | [link](/code/API_definitions/network-slice-booking.yaml) | -| 2 | Design guidelines from Commonalities applied | O | M | M | M | Y | [r3.2](https://github.com/camaraproject/Commonalities/releases/tag/r3.2) | -| 3 | Guidelines from ICM applied | O | M | M | M | Y | [r3.2](https://github.com/camaraproject/IdentityAndConsentManagement/releases/tag/r3.2) | -| 4 | API versioning convention applied | M | M | M | M | Y | v0.1.0-rc.1 | +| 2 | Design guidelines from Commonalities applied | O | M | M | M | Y | [r3.3](https://github.com/camaraproject/Commonalities/releases/tag/r3.3) | +| 3 | Guidelines from ICM applied | O | M | M | M | Y | [r3.3](https://github.com/camaraproject/IdentityAndConsentManagement/releases/tag/r3.3) | +| 4 | API versioning convention applied | M | M | M | M | Y | v0.1.0 | | 5 | API documentation | M | M | M | M | Y | Embed documentation into API spec - [link](/code/API_definitions/network-slice-booking.yaml) | | 6 | User stories | O | O | O | M | Y | [UserStory for Network Slicing Booking](/documentation/API_documentation/NSB_User_Story.md) | | 7 | Basic API test cases & documentation | O | M | M | M | Y | [link](/code/Test_definitions) |