AppManifest codes.app-manifest@1
Generated at from
openvibe-contracts v0.33.0 and
openvibe-sdk v0.5.0.
- Version
- 1.0.0
- Owner
- codes
- Visibility
- public
- Status
- active
- Compatibility
- backward
- Decision
- ADR-014
- Schema
https://openvibe.network/contracts/codes/app-manifest.v1.json
PROPOSAL (OpenVibe.Codes, roadmap Wave 20): an app release as the platform knows it. The app is a Network developer app (ADR-014): its id is the Network app id, its capabilities are only a request (the grants in Network are the authority), and trust tiers are metadata that never change a grant check. OpenVibe.Codes validates with this schema, loaded into openvibe-contracts' validator, until Contracts publishes it as codes.app-manifest@1.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
id | string | yes | The Network app id (its client_id). Its principal subject is app:<id>. |
|
name | string | yes |
| |
version | string | yes | Semantic version of this release. |
|
description | string |
| ||
publisher | identity.subject-ref | yes | Who publishes the release: the app itself or a member of its project. | |
project_id | string | yes | The Network project that owns the app. Tenancy in other services is keyed by it (ADR-014). |
|
environment | enum | The app's environment. Apps never change environment. |
| |
capabilities | array of string | yes | Capability ids the app asks for (3+ segments). Only active public (or partner, by staff allowance) capabilities can ever be granted to apps. |
|
events | object |
| ||
events.consumes | array of string | Event types (or a trailing .* family) the app subscribes to. |
| |
redirect_uris | array of string | Informational copy of the redirect URIs registered in Network (Network's list is the authority). |
| |
homepage | string |
| ||
repository | string |
| ||
license | string | SPDX license expression. |
| |
compatibility | object | yes |
| |
compatibility.contracts | string | yes | Semver range of openvibe-contracts releases it was built against. |
|
compatibility.sdk | string | Semver range of openvibe-sdk releases it uses. |
|
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: starter
{
"id": "app_01JABCDEFGHJKMNPQRSTVWXYZ0",
"name": "My app",
"version": "0.1.0",
"publisher": {
"type": "app",
"id": "app_01JABCDEFGHJKMNPQRSTVWXYZ0"
},
"project_id": "prj_01JABCDEFGHJKMNPQRSTVWXYZ0",
"environment": "sandbox",
"capabilities": [],
"compatibility": {
"contracts": "^0.26.0",
"sdk": "^0.2.2"
}
}Rejected: bad-id
{
"id": "app_lowercase",
"name": "My app",
"version": "0.1.0",
"publisher": {
"type": "app",
"id": "app_01JABCDEFGHJKMNPQRSTVWXYZ0"
},
"project_id": "prj_01JABCDEFGHJKMNPQRSTVWXYZ0",
"environment": "sandbox",
"capabilities": [],
"compatibility": {
"contracts": "^0.26.0",
"sdk": "^0.2.2"
}
}Rejected: no-contracts-range
{
"id": "app_01JABCDEFGHJKMNPQRSTVWXYZ0",
"name": "My app",
"version": "0.1.0",
"publisher": {
"type": "app",
"id": "app_01JABCDEFGHJKMNPQRSTVWXYZ0"
},
"project_id": "prj_01JABCDEFGHJKMNPQRSTVWXYZ0",
"environment": "sandbox",
"capabilities": [],
"compatibility": {}
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('codes.app-manifest@1', value); // { valid, errors: [{ path, message }] }