Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
ff3097b
Update README.md
urvika-v Jun 24, 2025
5894fbe
Update optimal-edge-discovery.yaml
urvika-v Jun 24, 2025
4151382
Update CHANGELOG.md
urvika-v Jun 24, 2025
f222113
Update Optimal-Edge-Discovery-API-Readiness-Checklist.md
urvika-v Jun 24, 2025
154be68
Fixed version number by adding minor version
Kevsy Jun 26, 2025
271d9c3
Merge branch 'camaraproject:main' into urvika-v-patch-1
urvika-v Jun 30, 2025
85571d4
Update optimal-edge-discovery.feature
urvika-v Jun 30, 2025
2c92782
Update Optimal-Edge-Discovery-API-Readiness-Checklist.md
urvika-v Jun 30, 2025
3bd8d70
Update CHANGELOG.md
urvika-v Jun 30, 2025
34b3d50
Update documentation/API_documentation/Optimal-Edge-Discovery-API-Rea…
urvika-v Jun 30, 2025
f5f9dd0
Update CHANGELOG.md
urvika-v Jul 1, 2025
d391cbf
Update CHANGELOG.md
urvika-v Jul 1, 2025
baea5dd
Update documentation/API_documentation/Optimal-Edge-Discovery-API-Rea…
urvika-v Jul 1, 2025
c2bdef1
Rename Optimal-Edge-Discovery-API-Readiness-Checklist.md to optimal-e…
urvika-v Jul 1, 2025
5217052
Update CHANGELOG.md
urvika-v Jul 2, 2025
c79af62
Update optimal-edge-discovery.yaml
urvika-v Jul 23, 2025
9f20434
Update optimal-edge-discovery.yaml
urvika-v Jul 23, 2025
8d914cd
Update code/API_definitions/optimal-edge-discovery.yaml
urvika-v Jul 24, 2025
d2c8c87
Update optimal-edge-discovery.yaml
urvika-v Jul 24, 2025
12f995a
Update optimal-edge-discovery.yaml
urvika-v Jul 24, 2025
0f43bc0
Update optimal-edge-discovery.yaml
urvika-v Jul 24, 2025
f5725c9
Update optimal-edge-discovery.yaml
urvika-v Jul 24, 2025
1a80dc0
Update optimal-edge-discovery.feature
urvika-v Jul 24, 2025
4efbe59
Update optimal-edge-discovery.feature
urvika-v Jul 28, 2025
382de65
Update optimal-edge-discovery.yaml
urvika-v Jul 29, 2025
60f038d
Update code/Test_definitions/optimal-edge-discovery.feature
hdamker Jul 30, 2025
fd6e9f7
Update README.md
hdamker Jul 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 38 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1 +1,38 @@
Please see https://github.com/camaraproject/ReleaseManagement/blob/main/documentation/CHANGELOG_TEMPLATE.md when creating your first release and CHANGELOG.md entry.
# Changelog Optimal Edge Discovery

## Table of contents

- **[r1.1 - rc](#r11---rc)**

**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.**

The below sections record the changes for each API version in each release as follows:

- for an alpha release, the delta with respect to the previous release
- for the first release-candidate, all changes since the last public release
- 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

<!--Repeat the below release section (header 1 and subsections) at the top of this file for each new (pre-)release-->

# r1.1 - rc

## Release Notes

This release contains the definition and documentation of

- optimal-edge-discovery v0.1.0-rc.1, a release-candidate pre-release

The API definition(s) are based on

- Commonalities r3.2
- Identity and Consent Management r3.2

## optimal-edge-discovery v0.1.0-rc.1

**optimal-edge-discovery v0.1.0-rc1 is the initial release candidate version of this API, includes documentation and definitions.**

- API definition **with inline documentation**:
- [View it on ReDoc](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/OptimalEdgeDiscovery/r1.1/code/API_definitions/optimal-edge-discovery.yaml&nocors)
- [View it on Swagger Editor](https://camaraproject.github.io/swagger-ui/?url=https://raw.githubusercontent.com/camaraproject/OptimalEdgeDiscovery/r1.1/code/API_definitions/optimal-edge-discovery.yaml)
- OpenAPI [YAML spec file](https://github.com/camaraproject/OptimalEdgeDiscovery/blob/r1.1/code/API_definitions/optimal-edge-discovery.yaml)
7 changes: 3 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,11 @@ Sandbox API Repository to describe, develop, document, and test the OptimalEdgeD

## Release Information

The repository has no (pre)releases yet, work in progress is within the main branch.
<!-- Optional: an explicit listing of the latest (pre-)release with additional information, e.g. links to the API definitions -->
<!-- In addition use/uncomment one or multiple the following alternative options when becoming applicable -->
<!-- Pre-releases of this sub project are available in https://github.com/camaraproject/OptimalEdgeDiscovery/releases -->
<!-- The latest public release is available here: https://github.com/camaraproject/OptimalEdgeDiscovery/releases/latest -->
<!-- For changes see [CHANGELOG.md](https://github.com/camaraproject/OptimalEdgeDiscovery/blob/main/CHANGELOG.md) -->
Pre-releases of this sub project are available in https://github.com/camaraproject/OptimalEdgeDiscovery/releases
The latest public release is available here: https://github.com/camaraproject/OptimalEdgeDiscovery/releases/latest
For changes see [CHANGELOG.md](https://github.com/camaraproject/OptimalEdgeDiscovery/blob/main/CHANGELOG.md)

## Contributing

Expand Down
81 changes: 41 additions & 40 deletions code/API_definitions/optimal-edge-discovery.yaml
Comment thread
urvika-v marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@ openapi: 3.0.3
# API info #
############################################################################
info:
title: Optimal Edge Discovery API
version: wip
title: Optimal Edge Discovery
version: 0.1.0-rc.1
x-camara-commonalities: 0.6
contact:
email: sp-edc@lists.camaraproject.org
description: |
# Introduction
---
Expand Down Expand Up @@ -169,15 +167,18 @@ info:
with an explanation.

### Additional CAMARA error responses
The list of error codes in this API specification is not exhaustive. Therefore
the API specification may not document some non-mandatory error statuses as
indicated in `CAMARA API Design Guidelines`.

Please refer to the `CAMARA_common.yaml` of the Commonalities Release associated
to this API version for a complete list of error responses.
The list of error codes in this API specification is not exhaustive.
Therefore the API specification may not document some non-mandatory error
statuses as indicated in `CAMARA API Design Guide`.

As a specific rule, error `501 - NOT_IMPLEMENTED` can be only a possible error
response if it is explicitly documented in the API.
Please refer to the `CAMARA_common.yaml` of the Commonalities Release
associated to this API version for a complete list of error responses.
The applicable Commonalities Release can be identified in the `API
Readiness Checklist` document associated to this API version.

As a specific rule, error `501 - NOT_IMPLEMENTED` can be only a possible
error response if it is explicitly documented in the API.

# Notes for Optimal Edge Discovery API publishers

Expand All @@ -188,37 +189,37 @@ info:

# Authorization and authentication

The "Camara Security and Interoperability Profile" provides details on how a
client requests an access token. Please refer to Identify and Consent
Management (https://github.com/camaraproject/IdentityAndConsentManagement/)
for the released version of the Profile.

Which specific authorization flows are to be used will be determined during
onboarding process, happening between the API Client and the Telco Operator
exposing the API, taking into account the declared purpose for accessing
the API, while also being subject to the prevailing legal framework
dictated by local legislation.

It is important to remark that in cases where personal user data is
processed by the API, and users can exercise their rights through
mechanisms such as opt-in and/or opt-out, the use of 3-legged access tokens
becomes mandatory. This measure ensures that the API remains in strict
compliance with user privacy preferences and regulatory obligations,
upholding the principles of transparency and user-centric data control.
The "Camara Security and Interoperability Profile" provides details of how
an API consumer requests an access token. Please refer to
Identity and Consent Management
(https://github.com/camaraproject/IdentityAndConsentManagement/)
for the released version of the profile.

The specific authorization flows to be used will be agreed upon during the
onboarding process, happening between the API consumer and the
API provider, taking into account the declared purpose for accessing the
API, whilst also being subject to the prevailing legal framework dictated
by local legislation.

In cases where personal data is processed by the API and users can exercise
their rights through mechanisms such as opt-in and/or opt-out, the use of
three-legged access tokens is mandatory. This ensures that the API remains
in compliance with privacy regulations, upholding the principles of
transparency and user-centric privacy-by-design.
---

license:
name: Apache-2.0
name: Apache 2.0
url: "https://www.apache.org/licenses/LICENSE-2.0.html"
externalDocs:
description: Project documentation at Camara
url: https://github.com/camaraproject/EdgeCloud
description: Product documentation at CAMARA
url: https://github.com/camaraproject/OptimalEdgeDiscovery

############################################################################
# Servers #
############################################################################
servers:
- url: "{apiRoot}/optimal-edge-discovery/vwip"
- url: "{apiRoot}/optimal-edge-discovery/v0.1rc1"
variables:
apiRoot:
default: https://localhost:9091
Expand All @@ -245,7 +246,7 @@ paths:
/regions:
get:
summary: Fetch all Regions
operationId: get-regions
operationId: getRegions
security:
- openId:
- "optimal-edge-discovery:regions:read"
Expand Down Expand Up @@ -280,7 +281,7 @@ paths:
regions where edge cloud zones are available.
/retrieve-optimal-edge-cloud-zones:
post:
operationId: get-edgeCloudZone
operationId: discoverOptimalEdge
security:
- openId:
- "optimal-edge-discovery:edge-zones:read"
Expand Down Expand Up @@ -342,19 +343,19 @@ components:
x-correlator:
description: Correlation id for the different services
schema:
type: string
pattern: ^[a-zA-Z0-9-_:;.\/<>{}]{0,256}$
$ref: "#/components/schemas/XCorrelator"
parameters:
x-correlator:
name: x-correlator
in: header
description: Correlation id for the different services
schema:
type: string
pattern: ^[a-zA-Z0-9-_:;.\/<>{}]{0,256}$
example: "b4333c46-49c0-4f62-80d7-f0ef930f1c46"

$ref: "#/components/schemas/XCorrelator"
schemas:
XCorrelator:
type: string
pattern: ^[a-zA-Z0-9-_:;.\/<>{}]{0,256}$
example: "b4333c46-49c0-4f62-80d7-f0ef930f1c46"
EdgeDiscoveryResponse:
type: object
description: |
Expand Down
62 changes: 43 additions & 19 deletions code/Test_definitions/optimal-edge-discovery.feature
Comment thread
urvika-v marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -1,78 +1,102 @@
@Optimal_Edge_Discovery
Feature: CAMARA Optimal Edge Discovery API, vwip - Operations for discovering optimal edge cloud zones
Feature: CAMARA Optimal Edge Discovery API, v0.1.0-rc.1 - Operations for discovering optimal edge cloud zones
Comment thread
urvika-v marked this conversation as resolved.

# Input to be provided by the implementation to the tests
# References to OAS spec schemas refer to schemas specified in optimal-edge-discovery.yaml

Background: Common Optimal Edge Discovery setup
Given the resource "{apiroot}/optimal-edge-discovery/vwip" as base-url
Given the resource "{apiroot}/optimal-edge-discovery/v0.1rc1" as base-url
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" is set to a UUID value
And the header "x-correlator" complies with the schema at "#/components/schemas/XCorrelator"

######### Happy Path Scenarios #################################

@optimal_edge_discovery_01_discover_optimal_edge
@optimal_edge_discovery_01_get_regions
Scenario: Get all available Edge Cloud Regions successfully
When the request "getRegions" is sent
Then the response code is 200
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 body is an array of EdgeCloudRegion objects
And each item in the response array complies with the OAS schema at "/components/schemas/EdgeCloudRegion"

@optimal_edge_discovery_02_discover_optimal_edge
Scenario: Discover optimal Edge Cloud Zone successfully
Given a valid device identifier in the system
When the request "discoverOptimalEdge" is sent
And a valid applicationProfileId is provided
When the request "discoverOptimalEdge" is sent with the device and applicationProfileId
Then the response code is 200
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 body complies with the OAS schema at "/components/schemas/ResourcesEdgeCloudZones"
And the response body complies with the OAS schema at "/components/schemas/EdgeDiscoveryResponse"
And the response contains at least one optimal Edge Cloud Zone

@optimal_edge_discovery_02_discover_edge_with_filters
@optimal_edge_discovery_03_discover_edge_with_filters
Scenario: Discover Edge Cloud Zone with filter parameters
Given a valid device identifier in the system
And a valid applicationProfileId is provided
And valid filter parameters for edge discovery
When the request "discoverOptimalEdge" is sent
When the request "discoverOptimalEdge" is sent with the device, applicationProfileId and filters
Then the response code is 200
And the response header "Content-Type" is "application/json"
And the response body complies with the OAS schema at "/components/schemas/ResourcesEdgeCloudZones"
And the response body complies with the OAS schema at "/components/schemas/EdgeDiscoveryResponse"
And the response contains filtered Edge Cloud Zones matching the specified parameters

@optimal_edge_discovery_03_discover_edge_no_results
######### Error Scenarios #################################

@optimal_edge_discovery_04_discover_edge_no_results
Scenario: Discover Edge Cloud Zone with no matching results
Given a valid device identifier in the system
And a valid applicationProfileId is provided
And filter parameters that would return no matching Edge Cloud Zones
When the request "discoverOptimalEdge" is sent
Then the response code is 200
When the request "discoverOptimalEdge" is sent with the device, applicationProfileId and filters
Then the response code is 404
And the response header "Content-Type" is "application/json"
And the response body complies with the OAS schema at "/components/schemas/ResourcesEdgeCloudZones"
And the response is an empty array
And the response body complies with the OAS schema at "/components/schemas/ErrorInfo"
And the response property "$.code" is "NOT_FOUND"

######### Error Scenarios #################################
@optimal_edge_discovery_05_get_regions_unauthenticated
Scenario: Get regions without authentication
Given the header "Authorization" is not present
When the request "getRegions" is sent
Then the response code is 401
And the response header "Content-Type" is "application/json"
And the response body complies with the OAS schema at "/components/schemas/ErrorInfo"
And the response property "$.code" is "UNAUTHENTICATED"

@optimal_edge_discovery_04_invalid_device_identifier
@optimal_edge_discovery_06_invalid_device_identifier
Scenario: Discover optimal Edge Cloud Zone with invalid device identifier
Given an invalid device identifier
And a valid applicationProfileId is provided
When the request "discoverOptimalEdge" is sent
Then the response code is 400
And the response header "Content-Type" is "application/json"
And the response body complies with the OAS schema at "/components/schemas/ErrorInfo"
And the response property "$.code" is "INVALID_ARGUMENT"

@optimal_edge_discovery_05_device_not_found
@optimal_edge_discovery_07_device_not_found
Scenario: Discover optimal Edge Cloud Zone with non-existing device
Given a non-existing device identifier
And a valid applicationProfileId is provided
When the request "discoverOptimalEdge" is sent
Then the response code is 404
And the response header "Content-Type" is "application/json"
And the response body complies with the OAS schema at "/components/schemas/ErrorInfo"
And the response property "$.code" is "IDENTIFIER_NOT_FOUND"

@optimal_edge_discovery_06_invalid_filter
@optimal_edge_discovery_08_invalid_filter
Scenario: Discover optimal Edge Cloud Zone with invalid filter parameters
Given a valid device identifier in the system
And a valid applicationProfileId is provided
And invalid filter parameters
When the request "discoverOptimalEdge" is sent
Then the response code is 400
And the response header "Content-Type" is "application/json"
And the response body complies with the OAS schema at "/components/schemas/ErrorInfo"
And the response property "$.code" is "INVALID_ARGUMENT"

@optimal_edge_discovery_07_unauthenticated
@optimal_edge_discovery_09_unauthenticated
Scenario: Discover optimal Edge Cloud Zone without authentication
Given a valid device identifier in the system
And the header "Authorization" is not present
Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,19 @@
# Optimal Edge Discovery API Readiness minimum criteria checklist

Checklist for Optimal-Edge-Discovery vwip
Checklist for Optimal-Edge-Discovery v0.1.0-rc.1 in r1.1

| Nr | API release assets | alpha | release-candidate | initial<br>public | stable<br> public | Status | Reference information |
|----|----------------------------------------------|:-----:|:-----------------:|:-------:|:------:|:----:|----|
| 1 | API definition | M | M | M | M | Y | [link](/code/API_definitions/optimal-edge-discovery.yaml) |
| 2 | Design guidelines from Commonalities applied | O | M | M | M | Y | Comm. release r3.1 |
| 3 | Guidelines from ICM applied | O | M | M | M | Y | ICM release r3.1 |
| 2 | Design guidelines from Commonalities applied | O | M | M | M | Y | Comm. release r3.2 |
| 3 | Guidelines from ICM applied | O | M | M | M | Y | ICM release r3.2 |
| 4 | API versioning convention applied | M | M | M | M | Y | |
| 5 | API documentation | M | M | M | M | Y | inline in YAML |
| 6 | User stories | O | O | O | M | Y | [link](/documentation/API_documentation/optimal-edge-discovery-User-Story.md) |
| 7 | Basic API test cases & documentation | O | M | M | M | Y | [link](/code/Test_definitions/optimal-edge-discovery.feature) |
| 8 | Enhanced API test cases & documentation | O | O | O | M | N | |
| 9 | Test result statement | O | O | O | M | N | |
| 10 | API release numbering convention applied | M | M | M | M | N | |
| 11 | Change log updated | M | M | M | 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 | |
| 13 | API description (for marketing) | O | O | M | M | N | [Wiki link](https://lf-camaraproject.atlassian.net/wiki/) |

To fill the checklist:
- in the line above the table, replace the api-name, api-version and the rx.y by their actual values for the current API version and release.
- in the Status column, put "Y" (yes) if the release asset is available or fulfilled in the current release, a "N" (no) or a "tbd". Example use of "tbd" is in case an alpha or release-candidate API version does not yet provide all mandatory assets for the release.
- in the Reference information column, provide the relative links (from the API repository home folder) to the release asset once available, the applicable release numbers (not versions) of Commonalities and ICM, and any other relevant links or information.
- For the point 12: The Reference information comment shall reference a note (e.g. "see (1)") under the checklist table to be added that states the certified company(s) as can be found on the following link: [GSMA Open Gateway Portal](https://open-gateway.gsma.com/).

Note: the checklists of a public API version and of its preceding release-candidate API version can be the same.

The documentation for the content of the checklist is here: see API Readiness Checklist section in the [API Release Process](https://lf-camaraproject.atlassian.net/wiki/x/jine).
| 13 | API description (for marketing) | O | O | M | M | Y | [Wiki link](https://lf-camaraproject.atlassian.net/wiki/x/N4AtC) |