This service is an **OSL controller** which acts as a **CAPIF 3GPP API Invoker Management layer**. In a nutshell it:
- Registers and manages multiple CAPIF invokers, each one registered as a Resource Specification in the OSL Resource Specification catalog under the category invoker.capif.osl.etsi.org.
-Comminicates with a CAPIF Core component (e.g. https://capifcore.org:443)
- Registers and manages multiple CAPIF invokers each one registered as Resource Specification in OSL Resource Specification catalog under category invoker.capif.osl.etsi.org.
-Talks to a CAPIF Core component (e.g. https://capifcore.org:443)
- Can automatically onboard Invokers, and manage certificates (via public/private keys)
@@ -25,15 +25,17 @@ The service performs the following:
- This allows external configuration of multiple API Invokers.
Currently application.yaml onboards two example invokers with self-signed certificates. In general the `capif:` section in `application.yaml` configures the Spring Boot application to:
Currently application.yaml onboards two example invokers with self-signed certificates. In general the
capif:
section in `application.yaml` configures the Spring Boot application to:
- Register as an API Invoker with a CAPIF Core
- Use secure credentials (optional keys)
- Periodically refresh tokens
- Discover available APIs
- Define which invokers to onboard
> The configurable `application.yaml` properties are also exposed through the [respective HELM Chart](https://labs.etsi.org/rep/osl/code/addons/org.etsi.osl.controllers.capif.invoker/-/tree/main/helm?ref_type=heads).
----------
@@ -204,15 +206,9 @@ here is a simple diagram of performed actions:
## 📤 **Using the OSL CAPIF invoker service**
You may deploy the OSL CAPIF service:
- Locally (intended for development): Following the above example configuration
- via HELM (intended for deployment): Downloading the [HELM chart](https://labs.etsi.org/rep/osl/code/addons/org.etsi.osl.controllers.capif.invoker/-/tree/main/helm?ref_type=heads), editing the `values.yaml` in a similar manner, and installing the chart
From the above example configuration, we will get registered in our OSL Resource Specification catalog two invokers: exampleInvoker and exampleInvoker2.
Regardless the intention, the deployment will register two invokers, i.e., exampleInvoker and exampleInvoker2, as OSL Resource Specifications.
You may utilize them as Resource Specification(s) assigned in a Resource Facing Service to design and order CAPIF-enabled services.
Use them as Resource Specification(s) assigned in a Resource Facing Service.
### 📦 **Resource Specification Characteristics**
@@ -224,6 +220,33 @@ You may utilize them as Resource Specification(s) assigned in a Resource Facing
| `status.discoveredServiceAPIs` | CAPIF API discovery result (JSON) | APIs discovered from CAPIF Core |
| `status.state` | Invoker state enum (e.g., CONFIGURED) | Current CAPIF onboarding status |
| `status.infoMessage` | String (e.g., error or health status) | Any message for the user/operator |
| `status.Health` | Resource health verdict (`UP`, `DOWN`, `GONE`) | Human-readable echo of the resource's X.731 health — see below |
----------
### 🩺 Resource health
Besides the characteristics above, every update this controller writes back to the TMF API declares
the resource's **health**: the ITU-T X.731 attributes `operationalState` and `administrativeState`.
That pair, and *not*`resourceStatus`, is what OSOM folds into a verdict and what moves the owning
service:
| What happened | `resourceStatus` | Health | Attributes | Effect on the service |
|--|--|--|--|--|
| Invoker onboarded, bearer token in hand | `AVAILABLE` | `UP` | `ENABLE` / `UNLOCKED` | reaches **ACTIVE** |
| Onboarding failed, or no invoker of that name is configured | `ALARM` | `DOWN` | `DISABLE` / `UNLOCKED` | demoted, with the reason in `status.infoMessage` |
That last row is the one to remember: a resource that declares neither attribute is read as "this
producer has not reported", which neither promotes nor demotes its service. The order does not fail —
it simply never finishes. `resourceStatus` on its own is inventory and pool bookkeeping, and ends no
wait loop.
`usageState` is reported too (`ACTIVE` while the invoker is usable, `IDLE` otherwise). It is
informational: OSOM displays it but never derives a service state from it.
Details in [docs/20260827_1333_x731-health-on-every-write-path.md](docs/20260827_1333_x731-health-on-every-write-path.md).
----------
@@ -233,11 +256,11 @@ You may utilize them as Resource Specification(s) assigned in a Resource Facing
- Value types are all **TEXT**.
The above Resource Specification Characteristics will also be exposed as Service Specification Characteristics when you relate the Invoker Resource Specification with a Service Specification.
The above Resource Specification Characteristics will be also exposed as Service Specification Characteristics.
To properly expose the designed Service Specification, you may need the to relate the created Resource Facing Service Specification with a Customer Facing Service Specification.
Then you can insert this Resource Facing Service Specification as a related Service Specification in a Customer Facing Service Specification.
Following, there is an example rule that will get the latest Bearer and perform an API invocation (POST in this example) to an API provider register in the CAPIF server.
Here is an example rule that will get the latest Bearer and perform an API invocation (POST in this example) to an API provider register in the CAPIF server.