diff --git a/CHANGELOG.md b/CHANGELOG.md
index cde72f0..307b174 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,37 @@
# Changelog Region Device Count
-# r0.1
+## Table of Contents
+- **[r1.1](#r11)**
-**Initial contribution of two API definitions for Region Device Count**, including initial documentation and implementation code.
+**Please be aware that the project will have frequent updates to the main branch. There are no compatibility guarantees associated with code in any branch, including main, until it has been released. For example, changes may be reverted before a release is published. For the best results, use the latest published release.**
+
+
+# r1.1
+## Release Notes
+
+This pre-release contains the definition and documentation of
+* region-device-count 0.1.0-rc.1
+
+The API definition(s) are based on
+* Commonalities v0.5.0
+* Identity and Consent Management v0.3.0
+
+
+## region-device-count v0.1.0-rc.1
+
+**region-device-count v0.1.0-rc.1 is the first release-candidate version for v0.1.0 of the region-device-count API. The following changes have been made for v0.1.0 through https://github.com/camaraproject/RegionDeviceCount/pull/47**
+
+ * Error model aligment with commonalities, which implies use of normalization values (i.e. enums) for `status` and `code`
+ * Removal of 404,405,406,5xx errors
+ * Change the validation rule of the `Filter` parameter from `oneOf` to `anyOf`
+ * Fix MegaLinter error
+
+ API definition **with inline documentation**:
+[[YAML]](https://github.com/camaraproject/RegionDeviceCount/blob/r1.1/code/API_definitions/region-device-count.yaml)
+[[View it on ReDoc]](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/RegionDeviceCount/r1.1/code/API_definitions/region-device-count.yaml&nocors)
+[[View it on Swagger Editor]](https://editor.swagger.io/?url=https://raw.githubusercontent.com/camaraproject/RegionDeviceCount/r1.1/code/API_definitions/region-device-count.yaml)
+
+**Initial contribution of API definitions for Region Device Count**, including initial documentation and implementation code.
## What's Changed
* Initial yaml file including regionUserCount api in https://github.com/camaraproject/RegionDeviceCount/pull/5
@@ -10,5 +39,6 @@
* Add startime and endtime parameters to support querying the number of devices within a certain time period in https://github.com/camaraproject/RegionDeviceCount/pull/31
* Added filter parameter in the request parameters to filter the roaming status and type of the device in https://github.com/camaraproject/RegionDeviceCount/pull/38
* Add capability for async response behaviour in https://github.com/camaraproject/RegionDeviceCount/pull/42
+* Add test file in https://github.com/camaraproject/RegionDeviceCount/pull/46
diff --git a/README.md b/README.md
index cb2e0f4..72b8788 100644
--- a/README.md
+++ b/README.md
@@ -24,6 +24,11 @@ Repository to describe, develop, document and test the RegionDeviceCount API
+* **Pre-release r1.1 with region-device-count v0.1.0-rc.1:**
+ [[YAML]](https://github.com/camaraproject/RegionDeviceCount/blob/r1.1/code/API_definitions/region-device-count.yaml)
+ [[View it on ReDoc]](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/RegionDeviceCount/r1.1/code/API_definitions/region-device-count.yaml&nocors)
+ [[View it on Swagger Editor]](https://editor.swagger.io/?url=https://raw.githubusercontent.com/camaraproject/RegionDeviceCount/r1.1/code/API_definitions/region-device-count.yaml)
+
## Contributing
* Meetings are held virtually
* Schedule: Bi-Weekly on Fridays 11:00 CET/CEST / 09:00 UTC
diff --git a/code/API_definitions/README.MD b/code/API_definitions/README.MD
deleted file mode 100644
index 04313f1..0000000
--- a/code/API_definitions/README.MD
+++ /dev/null
@@ -1 +0,0 @@
-Here you can add your definitions and delete this README.MD file
diff --git a/code/API_definitions/region-device-count.yaml b/code/API_definitions/region-device-count.yaml
index d8dcc2c..f445767 100644
--- a/code/API_definitions/region-device-count.yaml
+++ b/code/API_definitions/region-device-count.yaml
@@ -5,64 +5,61 @@ info:
Region Device Count API enables API consumers to obtain the number of devices within a certain geographical area during a specific time interval.
# Introduction
-
+
This API allows for the API Consumer to query device count in the specified area during a certain time interval.The query area can be a circle or a polygon composed of longitude and latitude points.
This functionality can be used for multiple use cases, some of the possible use cases for this API are:
-
+
- [Emergency Rescue](https://github.com/camaraproject/RegionDeviceCount/blob/main/documentation/API_documentation/RDC_User_Story_Emergency%20Rescue.md)
-
+
- [Outdoor Live Streaming](https://github.com/camaraproject/RegionDeviceCount/blob/main/documentation/API_documentation/RDC_User_Story_Outdoor%20Live%20Streaming.md)
-
+
# Relevant terms and definitions
-
+
* **Device Count**: Refers to the total number of devices that appear within a given area and a specific time interval. A device will be counted as long as it appears at least once in the specified area during the time interval.
* **Notification URL and token**: Developers may provide a callback URL (`sink`) for receiving an async response. This is an optional parameter. If `sink` is included, it is RECOMMENDED for the client to provide as well the `sinkCredential` property to protect the notification endpoint. In the current version,`sinkCredential.credentialType` MUST be set to `ACCESSTOKEN` if provided.
-
+
# API Functionality
-
+
## Request Parameters and Area Definition
-
+
When making a request, the API consumer needs to specify the area, start time, end time, and filter conditions in the request body. The area can be defined as a circle or a polygon. For a circular area, the center and radius must be provided; for a polygon area, a list of longitude and latitude points must be provided. If the start and end times are not provided, the API will return the current number of devices in the area.
-
+
## Filter Condition Application
-
+
The filter condition is used for precise device filtering and currently includes two filtering criteria: `roamingStatus` and `deviceType`, with support for future expansion. The `IN` logic is applied for multiple filter items within a single filtering criterion, and the `AND` logic is used between multiple filtering criteria.
-
-
+
+
For example, "filter":{"roamingStatus": ["roaming"],"deviceType": ["human device","IoT device"]}" means the API will only return the number of human network devices and IoT devices in roaming mode. "filter":{"roamingStatus": ["non-roaming"]}" will return the number of all non-roaming devices. Note that at least one filtering criterion must be provided; otherwise, the request will be invalid.
-
+
## Response Result Explanation
-
+
The API response returns a RegionDeviceCountResponse object containing the device count and status. The status values include `SUPPORTED_AREA` (the entire requested area is supported, and the device count for the entire area is returned, with 100% telecom coverage), `PART_OF_AREA_NOT_SUPPORTED` (part of the area is outside the telecom operator's coverage area, and only the device count within the coverage area is returned, with 50% <= telecom coverage < 100%), `AREA_NOT_SUPPORTED` (the entire requested area has no telecom coverage, and no data is returned, with telecom coverage < 50%), `DENSITY_BELOW_PRIVACY_THRESHOLD` (the number of connected devices in the area is below the local regulatory privacy threshold), and `TIME_INTERVAL_NO_DATA_FOUND` (no device count data is found within the requested time interval).
-
+
## Callback Function
-
+
The standard behaviour of the API is synchronous, although for large area requests the API may behave asynchronously. An API invoker can enforce asynchronous behaviour by providing a callback URL (`sink`)
is in the request, in this case the API sends a callback to the callback URL provided with the result of the request. If `sink` is included, it is RECOMMENDED for the client to provide as well the `sinkCredential` property to protect the notification endpoint. In the current version,`sinkCredential.credentialType` MUST be set to `ACCESSTOKEN` if provided.
-
+
For requests with a combination of area, startTime and endTime properties involving an amount of processing that cannot be processed synchronously, the API returns the error response REGION_DEVICE_COUNT.UNSUPPORTED_SYNC_RESPONSE.
For requests with a combination of area, startTime and endTime properties too big for both synchronous and asynchronous processing, the API returns the error response REGION_DEVICE_COUNT.UNSUPPPORTED_REQUEST.
-
+
# Authorization and Authentication
-
+
Region Device Count API does not involve the input and output of user personal data.Therefore, the access to Region Device Count APII is defined as `Client Credentials - 2-legged`. Please refer to [Identify and Consent Management](https://github.com/camaraproject/IdentityAndConsentManagement/) for the latest detailed specification of this authentication/authorization flow.
-
-
-
- version: wip
- contact:
- email: sp-ruc@lists.camaraproject.org
+
+ version: 0.1.0-rc.1
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
+ x-camara-commonalities: 0.5
externalDocs:
description: Project documentation at CAMARA
url: https://github.com/camaraproject/RegionDeviceCount
servers:
- - url: '{apiRoot}/regionDeviceCount/vwip'
+ - url: '{apiRoot}/region-device-count/v0.1rc1'
variables:
apiRoot:
default: http://localhost:9091
@@ -82,7 +79,7 @@ paths:
- If the areaType is circle, the circleCenter and circleRadius must be provided; if the area is a polygon, the point list must be provided.
- If starttime and endtime are not passed in,this api should return the current number of devices in the area.
- If the device appears in the specified area at least once during the certain time interval, it should be counted.
-
+
operationId: count
parameters:
- $ref: '#/components/parameters/x-correlator'
@@ -92,10 +89,10 @@ paths:
schema:
$ref: '#/components/schemas/RegionDeviceCountRequestBody'
examples:
- LOCATION_CIRCLE:
- $ref: "#/components/examples/RETRIEVAL_CIRCLE"
- LOCATION_POLYGON:
- $ref: "#/components/examples/RETRIEVAL_POLYGON"
+ LOCATION_CIRCLE:
+ $ref: "#/components/examples/RETRIEVAL_CIRCLE"
+ LOCATION_POLYGON:
+ $ref: "#/components/examples/RETRIEVAL_POLYGON"
required: true
callbacks:
regionDeviceCountCallback:
@@ -137,12 +134,8 @@ paths:
$ref: '#/components/responses/Generic401'
'403':
$ref: '#/components/responses/Generic403'
- '500':
- $ref: '#/components/responses/Generic500'
- '503':
- $ref: '#/components/responses/Generic503'
- '504':
- $ref: '#/components/responses/Generic504'
+ '410':
+ $ref: '#/components/responses/Generic410'
security:
- {}
- notificationsBearerAuth: []
@@ -151,7 +144,7 @@ paths:
description: OK
headers:
x-correlator:
- $ref: "#/components/headers/x-correlator"
+ $ref: "#/components/headers/x-correlator"
content:
application/json:
schema:
@@ -171,15 +164,11 @@ paths:
$ref: '#/components/responses/Generic401'
'403':
$ref: '#/components/responses/Generic403'
- '500':
- $ref: '#/components/responses/Generic500'
- '503':
- $ref: '#/components/responses/Generic503'
- '504':
- $ref: '#/components/responses/Generic504'
+ '429':
+ $ref: '#/components/responses/Generic429'
security:
- openId:
- - region-device-count
+ - region-device-count
components:
securitySchemes:
openId:
@@ -190,6 +179,8 @@ components:
description: Correlation id for the different services
schema:
type: string
+ pattern: ^[a-zA-Z0-9-]{0,55}$
+ example: "b4333c46-49c0-4f62-80d7-f0ef930f1c46"
parameters:
x-correlator:
name: x-correlator
@@ -197,6 +188,8 @@ components:
description: Correlation id for the different services
schema:
type: string
+ pattern: ^[a-zA-Z0-9-]{0,55}$
+ example: "b4333c46-49c0-4f62-80d7-f0ef930f1c46"
schemas:
RegionDeviceCountRequestBody:
type: object
@@ -204,19 +197,19 @@ components:
properties:
area:
$ref: "#/components/schemas/Area"
- starttime:
+ starttime:
type: string
format: date-time
description: Starting timestamp for counting the number of devices in the area. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z)
nullable: true
example: "2023-07-03T14:27:08.312+02:00"
- endtime:
+ endtime:
type: string
format: date-time
description: Ending timestamp for counting the number of devices in the area. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-04T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z)
nullable: true
example: "2023-07-04T14:27:08.312+02:00"
- filter:
+ filter:
$ref: "#/components/schemas/Filter"
sink:
type: string
@@ -311,15 +304,15 @@ components:
minimum: -180
maximum: 180
Filter:
- description: |
+ description: |
This parameter is used to filter devices. Currently, two filtering criteria are defined, `roamingStatus` and `deviceType`, which can be expanded in the future. `IN` logic is used used for multiple filtering items within a single filtering criterion, `AND` logic is used between multiple filtering criteria.
- - If a filtering critera is not provided, it means that there is no need to filter this item.
+ - If a filtering critera is not provided, it means that there is no need to filter this item.
- At least one of the criteria must be provided,a filter without any criteria is not allowed.
- If no filtering is required, this parameter does not need to be provided.
For example ,`"filter":{"roamingStatus": ["roaming"],"deviceType": ["human device","IoT device"]}` means the API need to return the count of human network devices and IoT devices that are in roaming mode.`"filter":{"roamingStatus": ["non-roaming"]}` means that the API need to return the count of all devices that are not in roaming mode.
type: object
- properties:
- roamingStatus:
+ properties:
+ roamingStatus:
description: Filter whether the device is in roaming mode,'roaming' represents the need to filter devices that are in roaming mode,'non-roaming' represents the need to filter devices that are not roaming.
type: array
items:
@@ -328,7 +321,7 @@ components:
- 'roaming'
- 'non-roaming'
minItems: 1
- deviceType:
+ deviceType:
description: Filtering by device type, 'human device' represents the need to filter for human network devices, 'IoT device' represents the need to filter for IoT devices, and 'other' represents the need to filter for other types of devices.
type: array
items:
@@ -338,9 +331,9 @@ components:
- 'IoT device'
- 'other'
minItems: 1
- oneOf:
- - required: ['roamingStatus']
- - required: ['deviceType']
+ anyOf:
+ - required: ['roamingStatus']
+ - required: ['deviceType']
SinkCredential:
type: object
properties:
@@ -433,8 +426,6 @@ components:
RegionDeviceCountResponse:
type: object
description: RegionDeviceCount result
- required:
- - count
properties:
count:
$ref: '#/components/schemas/Count'
@@ -444,15 +435,15 @@ components:
description: Device Count
type: number
Status:
- description: |
+ description: |
SUPPORTED_AREA: The whole requested area is supported Region Device Count for the entire requested area is returned - Telco Coverage = 100 %
-
+
PART_OF_AREA_NOT_SUPPORTED: Part of the requested area is outside the MNOs coverage area, the area outside the coverage area are not returned - 100% >Telco Coverage >=50%
-
+
AREA_NOT_SUPPORTED: The whole requested area is outside the MNO coverage area No data will be returned- Telco Coverage <50%
-
+
DENSITY_BELOW_PRIVACY_THRESHOLD: The number of connected devices is below privacy threshold of local regulation
-
+
TIME_INTERVAL_NO_DATA_FOUND: Unable to find device count data within the requested time interval
type: string
enum:
@@ -486,10 +477,26 @@ components:
content:
application/json:
schema:
- $ref: "#/components/schemas/ErrorInfo"
+ allOf:
+ - $ref: "#/components/schemas/ErrorInfo"
+ - type: object
+ properties:
+ status:
+ enum:
+ - 400
+ code:
+ enum:
+ - INVALID_ARGUMENT
+ - REGION_DEVICE_COUNT.TIME_INVALID_ARGUMENT
+ - REGION_DEVICE_COUNT.INVALID_END_DATE
+ - REGION_DEVICE_COUNT.INVALID_CIRCLE_AREA
+ - REGION_DEVICE_COUNT.INVALID_POLYGON_AREA
+ - INVALID_CREDENTIAL
+ - INVALID_TOKEN
+ - REGION_DEVICE_COUNT.UNSUPPORTED_SYNC_RESPONSE
+ - REGION_DEVICE_COUNT.UNSUPPPORTED_REQUEST
examples:
GENERIC_400_INVALID_ARGUMENT:
- summary: Generic Invalid Argument
description: Invalid Argument. Generic Syntax Exception
value:
status: 400
@@ -518,12 +525,12 @@ components:
GENERIC_400_INVALID_CREDENTIAL:
value:
status: 400
- code: "INVALID_CREDENTIAL"
+ code: INVALID_CREDENTIAL
message: "Only Access token is supported"
GENERIC_400_INVALID_TOKEN:
value:
status: 400
- code: "INVALID_TOKEN"
+ code: INVALID_TOKEN
message: "Only bearer token is supported"
GENERIC_400_UNSUPPORTED_SYNC_RESPONSE:
value:
@@ -535,7 +542,7 @@ components:
status: 400
code: REGION_DEVICE_COUNT.UNSUPPPORTED_REQUEST
message: "Indicated combination of area or time interval is too big"
-
+
Generic401:
description: Unauthorized
headers:
@@ -544,7 +551,17 @@ components:
content:
application/json:
schema:
- $ref: "#/components/schemas/ErrorInfo"
+ allOf:
+ - $ref: "#/components/schemas/ErrorInfo"
+ - type: object
+ properties:
+ status:
+ enum:
+ - 401
+ code:
+ enum:
+ - UNAUTHENTICATED
+ - AUTHENTICATION_REQUIRED
examples:
GENERIC_401_UNAUTHENTICATED:
description: Request cannot be authenticated
@@ -559,122 +576,94 @@ components:
code: AUTHENTICATION_REQUIRED
message: New authentication is required.
Generic403:
- description: Client does not have sufficient permission
+ description: Forbidden
headers:
x-correlator:
$ref: "#/components/headers/x-correlator"
content:
application/json:
schema:
- $ref: '#/components/schemas/ErrorInfo'
+ allOf:
+ - $ref: "#/components/schemas/ErrorInfo"
+ - type: object
+ properties:
+ status:
+ enum:
+ - 403
+ code:
+ enum:
+ - PERMISSION_DENIED
+ - INVALID_TOKEN_CONTEXT
examples:
- PermissionDenied:
+ GENERIC_403_PERMISSION_DENIED:
+ description: Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security
value:
status: 403
code: PERMISSION_DENIED
- message: "Client does not have sufficient permissions to perform this action"
- Generic404:
- description: Not found
- headers:
- x-correlator:
- $ref: "#/components/headers/x-correlator"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ErrorInfo"
- examples:
- GENERIC_404_NOT_FOUND:
- description: Resource is not found
+ message: Client does not have sufficient permissions to perform this action.
+ GENERIC_403_INVALID_TOKEN_CONTEXT:
+ description: Reflect some inconsistency between information in some field of the API and the related OAuth2 Token
value:
- status: 404
- code: NOT_FOUND
- message: The specified resource is not found.
- Generic405:
- description: Method Not Allowed
+ status: 403
+ code: INVALID_TOKEN_CONTEXT
+ message: "{{field}} is not consistent with access token."
+ Generic410:
+ description: Gone
headers:
x-correlator:
$ref: "#/components/headers/x-correlator"
content:
application/json:
schema:
- $ref: "#/components/schemas/ErrorInfo"
+ allOf:
+ - $ref: "#/components/schemas/ErrorInfo"
+ - type: object
+ properties:
+ status:
+ enum:
+ - 410
+ code:
+ enum:
+ - GONE
examples:
- GENERIC_405_METHOD_NOT_ALLOWED:
- description: Invalid HTTP verb used with a given endpoint
+ GENERIC_410_GONE:
+ description: Use in notifications flow to allow API Consumer to indicate that its callback is no longer available
value:
- status: 405
- code: METHOD_NOT_ALLOWED
- message: The requested method is not allowed/supported on the target resource.
+ status: 410
+ code: GONE
+ message: Access to the target resource is no longer available.
Generic429:
- description: Too Many Requests
+ description: Either out of resource quota or reaching rate limiting
headers:
x-correlator:
$ref: "#/components/headers/x-correlator"
content:
application/json:
schema:
- $ref: "#/components/schemas/ErrorInfo"
+ allOf:
+ - $ref: "#/components/schemas/ErrorInfo"
+ - type: object
+ properties:
+ status:
+ enum:
+ - 429
+ code:
+ enum:
+ - QUOTA_EXCEEDED
+ - TOO_MANY_REQUESTS
examples:
GENERIC_429_QUOTA_EXCEEDED:
description: Request is rejected due to exceeding a business quota limit
value:
status: 429
code: QUOTA_EXCEEDED
- message: Either out of resource quota or reaching rate limiting.
+ message: Out of resource quota.
GENERIC_429_TOO_MANY_REQUESTS:
- description: API Server request limit is overpassed
+ description: Access to the API has been temporarily blocked due to rate or spike arrest limits being reached
value:
status: 429
code: TOO_MANY_REQUESTS
- message: Either out of resource quota or reaching rate limiting.
- Generic500:
- description: Internal Server Error
- headers:
- x-correlator:
- $ref: "#/components/headers/x-correlator"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ErrorInfo"
- examples:
- GENERIC_500_INTERNAL:
- description: Problem in Server side. Regular Server Exception
- value:
- status: 500
- code: INTERNAL
- message: Unknown server error. Typically a server bug.
- Generic503:
- description: Service Unavailable
- headers:
- x-correlator:
- $ref: "#/components/headers/x-correlator"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ErrorInfo"
- examples:
- GENERIC_503_UNAVAILABLE:
- description: Service is not available. Temporary situation usually related to maintenance process in the server side
- value:
- status: 503
- code: UNAVAILABLE
- message: Service Unavailable.
- Generic504:
- description: Gateway Timeout
- headers:
- x-correlator:
- $ref: "#/components/headers/x-correlator"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/ErrorInfo"
- examples:
- GENERIC_504_TIMEOUT:
- description: API Server Timeout
- value:
- status: 504
- code: TIMEOUT
- message: Request timeout exceeded.
+ message: Rate limit reached.
examples:
RETRIEVAL_CIRCLE:
value:
@@ -688,8 +677,8 @@ components:
endtime: "2023-07-04T14:27:08.312+02:00"
filter:
roamingStatus: ["roaming"]
- deviceType: ["human device","IoT device"]
- sink: https://endpoint.example.com/sink
+ deviceType: ["human device", "IoT device"]
+ sink: "https://endpoint.example.com/sink"
sinkCredential:
credentialType: ACCESSTOKEN
accessToken: "yJ2ZXIiOiIxLjAiLCJ0eXAiO..."
@@ -713,7 +702,7 @@ components:
filter:
roamingStatus: ["non-roaming"]
deviceType: ["other"]
- sink: https://endpoint.example.com/sink
+ sink: "https://endpoint.example.com/sink"
sinkCredential:
credentialType: ACCESSTOKEN
accessToken: "yJ2ZXIiOiIxLjAiLCJ0eXAiO..."
diff --git a/documentation/API_documentation/RDC_User_Story_Emergency Rescue.md b/documentation/API_documentation/RDC_User_Story_Emergency_Rescue.md
similarity index 100%
rename from documentation/API_documentation/RDC_User_Story_Emergency Rescue.md
rename to documentation/API_documentation/RDC_User_Story_Emergency_Rescue.md
diff --git a/documentation/API_documentation/RDC_User_Story_Outdoor Live Streaming.md b/documentation/API_documentation/RDC_User_Story_Outdoor_Live_Streaming.md
similarity index 100%
rename from documentation/API_documentation/RDC_User_Story_Outdoor Live Streaming.md
rename to documentation/API_documentation/RDC_User_Story_Outdoor_Live_Streaming.md
diff --git a/documentation/API_documentation/region-device-count-API-Readiness-Checklist.md b/documentation/API_documentation/region-device-count-API-Readiness-Checklist.md
index 79b44eb..9226605 100644
--- a/documentation/API_documentation/region-device-count-API-Readiness-Checklist.md
+++ b/documentation/API_documentation/region-device-count-API-Readiness-Checklist.md
@@ -1,18 +1,18 @@
# API Readiness Checklist
-Checklist for region-device-count 0.1.0 in r1.1
+Checklist for region-device-count 0.1.0-rc.1 in r1.1
-| Nr | API release assets | alpha | release-candidate | initial
public | stable
public | Status | Comments |
+| 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/region-device-count.yaml) |
-| 2 | Design guidelines from Commonalities applied | O | M | M | M | Y | |
-| 3 | Guidelines from ICM applied | O | M | M | M | Y | |
+| 2 | Design guidelines from Commonalities applied | O | M | M | M | Y | r2.2 |
+| 3 | Guidelines from ICM applied | O | M | M | M | Y | r2.2 |
| 4 | API versioning convention applied | M | M | M | M | Y | |
| 5 | API documentation | M | M | M | M | Y | Embed documentation into API spec - [link](/code/region-device-count.yaml) |
-| 6 | User stories | O | O | O | M | Y | [check](/documentation/API_documentation/RDC_User_Story_Emergency Rescue.md) (/documentation/API_documentation/RDC_User_Story_Outdoor Live Streaming.md) |
-| 7 | Basic API test cases & documentation | O | M | M | M | N | |
-| 8 | Enhanced API test cases & documentation | O | O | O | M | N | |
+| 6 | User stories | O | O | O | M | Y | [UserStory1-Emergency_Rescue](/documentation/API_documentation/RDC_User_Story_Emergency_Rescue.md) [UserStory2-Outdoor_Live_Streaming](/documentation/API_documentation/RDC_User_Story_Outdoor_Live_Streaming.md) |
+| 7 | Basic API test cases & documentation | O | M | M | M | Y | [link](/code/Test_definitions/region-device-count.feature) |
+| 8 | Enhanced API test cases & documentation | O | O | O | M | Y | [link](/code/Test_definitions/region-device-count.feature) |
| 9 | Test result statement | O | O | O | M | N | |
| 10 | API release numbering convention applied | M | M | M | M | Y | |
| 11 | Change log updated | M | M | M | M | Y | [link](/CHANGELOG.md) |
-| 12 | Previous public release was certified | O | O | O | M | N | |
\ No newline at end of file
+| 12 | Previous public release was certified | O | O | O | M | N | |