Commit 7967db1c authored by Dimitrios Gogos's avatar Dimitrios Gogos
Browse files

docs: update README to clarify API capabilities and specifications

parent 2a9c0442
Loading
Loading
Loading
Loading
Loading
+20 −9
Changes for README.md: 20 added lines, 9 removed lines.
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ OEG is a FastAPI service (`open_exposure_gateway.main:app`). It serves the north

| Edge Application Management | Federation Lifecycle API (GSMA OPG.04 v1.4.0) | Network APIs (QoD, Traffic Influence, Location Retrieval) |
| ------------- | ------------- | ------------- |
| Application registration, retrieval and removal | Create one direction federation | Create, retrieve and remove a QoD session |
| Application registration, retrieval and removal | Create one direction federation | Create, retrieve, extend and remove a QoD session; retrieve a device's sessions |
| Application instantiation, retrieval and removal | Retrieve details about federation with the partner OP | Create, list, retrieve and remove a Traffic Influence resource |
| Multi-zone deployments | Retrieve the existing federationContextId with partner | Create a Traffic Influence resource for one device (`POST /traffic-influence-devices`) |
| Edge cloud zones | Remove existing federation with partner OP | Retrieve a device location (`POST /retrieve`) |
@@ -19,14 +19,16 @@ OEG is a FastAPI service (`open_exposure_gateway.main:app`). It serves the north

The federation lifecycle API is served under `/platform/v1/federation/partners/{partnerOpId}/federations/...`,
where `partnerOpId` is the UUID the Federation Manager assigned when the partner was registered.
OEG forwards each request unchanged to the Federation Manager's matching `/internal/...` endpoint
The same prefix `/platform/v1/federation` also serves the operator's partner setup: our identity
(`/identity`), partner registration (`/partners`), our own zones (`/local-zones`) and partner
agreements (`/agreements`). OEG forwards each request unchanged to the Federation Manager's matching `/internal/...` endpoint
and relays its answer; every error on these routes is a GSMA `application/problem+json` `ProblemDetails`.

## Deployment

OEG is deployed with the platform Helm chart (`oop-platform-chart` in the helm repository). Settings are
environment variables read by `src/open_exposure_gateway/core/config.py`; `.env.example` lists every one
with its default. The ones you most often change:
environment variables read by `src/open_exposure_gateway/core/config.py`, which holds every one with its
default; `.env.example` lists most of them. The ones you most often change:

| **Variable**                | **Description**                                             |
|-----------------------------|-------------------------------------------------------------|
@@ -59,11 +61,11 @@ make type # mypy

### CAMARA specs and conformance testing

The northbound API implements pinned versions of the CAMARA specs. Each pin is
a folder under `src/open_exposure_gateway/api/camara/<api>/<ref>/`, named after
the upstream commit or tag it tracks. A pin that serves as a conformance target
carries the upstream OpenAPI YAML verbatim (upstream's `code/` layout is
mirrored so relative `$ref`s resolve).
The northbound API implements pinned versions of the CAMARA specs. Each pin's
code is a folder under `src/open_exposure_gateway/api/camara/<api>/<ref>/`, named
after the API version it serves. The upstream OpenAPI YAML the conformance suite
runs against is vendored verbatim, in the pin folder for EAM and in
`<api>/API_definitions/` for the other APIs.

The conformance suite (`pytest -m conformance`) drives every operation of the
vendored spec against the app with schemathesis and validates responses against
@@ -92,6 +94,15 @@ curl -sL -o API_definitions/edge-application-management-0.1.0-alpha.1.yaml \
  "https://raw.githubusercontent.com/camaraproject/EdgeApplicationManagement/$SHA/code/API_definitions/edge-application-management.yaml"
```

The other vendored specs, with their upstream release and commit recorded in the architecture
repository's `external-specs/`:

| API | Version | Served under | Vendored file |
|---|---|---|---|
| Quality on Demand | `1.1.0` (r3.2) | `{apiRoot}/quality-on-demand/v1` | `quality_on_demand/API_definitions/qod-api.yaml` |
| Traffic Influence | `0.10.0` (r1.3) | `{apiRoot}/traffic-influence/v0.10` | `traffic_influence/API_definitions/traffic-influence.yaml` |
| Location Retrieval | `0.5.0` (r3.2) | `{apiRoot}/location-retrieval/v0.5` | `location_retrieval/API_definitions/location-retrieval.yaml` |

### Running with Docker

To run the server on a Docker container, please execute the following from the root directory: