OpenVibe.Media API

Generated at from openvibe-contracts v0.114.0 and openvibe-sdk v0.35.1.

Server https://openvibe.media. 9 routes performing 6 capabilities. OpenAPI 3.1 document.

POST /api/v1/{app}/files

Upload a file object into an app namespace.

Capabilities
media.object.upload
Visibility
public
Parameters
  • app (path, required)
Request body
multipart/form-data media.file-upload@1
Response
application/json media.file@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>media.object.upload</strong> (public): Upload a file object into an app namespace.</p>

GET /api/v1/{app}/files/{key}

Read object metadata / bytes in a namespace.

Capabilities
media.object.read
Visibility
public
Parameters
  • app (path, required)
  • key (path, required)
Response
application/json media.file-read-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>media.object.read</strong> (public): Read object metadata / bytes in a namespace.</p>

GET /api/v1/resources

Read OpenVibe.Media's resource index (ADR-048): GET /api/v1/resources lists the resources Media owns as a page of common.resource-summary@1 (common.resource-list-result@1), and GET /api/v1/resources/:

Capabilities
media.resource.read
Visibility
first-party
Response
application/json common.resource-list-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>media.resource.read</strong> (first-party): Read OpenVibe.Media&#39;s resource index (ADR-048): GET /api/v1/resources lists the resources Media owns as a page of common.resource-summary@1 (common.resource-list-result@1), and GET /api/v1/resources/:ovrn reads one by its OVRN (common.resource-summary@1). Every authority serves these for OpenVibe.Services to fan out and merge; Media&#39;s own resources are its objects (kind media.object, id med_&lt;ULID&gt;), the canonical blobs its v1 vods, clips and files are projections of (migrations/0001_initial.sql media_objects); vods and clips are projections over objects (bigint ids) and are never listed. An object carries the project of the tenant that owns it when that tenant is a developer project; an object in a first-party app tenant has no project and so no OVRN. Planned until Media ships the index.</p>

GET /api/v1/resources/{ovrn}

Read OpenVibe.Media's resource index (ADR-048): GET /api/v1/resources lists the resources Media owns as a page of common.resource-summary@1 (common.resource-list-result@1), and GET /api/v1/resources/:

Capabilities
media.resource.read
Visibility
first-party
Parameters
  • ovrn (path, required)
Response
application/json common.resource-list-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>media.resource.read</strong> (first-party): Read OpenVibe.Media&#39;s resource index (ADR-048): GET /api/v1/resources lists the resources Media owns as a page of common.resource-summary@1 (common.resource-list-result@1), and GET /api/v1/resources/:ovrn reads one by its OVRN (common.resource-summary@1). Every authority serves these for OpenVibe.Services to fan out and merge; Media&#39;s own resources are its objects (kind media.object, id med_&lt;ULID&gt;), the canonical blobs its v1 vods, clips and files are projections of (migrations/0001_initial.sql media_objects); vods and clips are projections over objects (bigint ids) and are never listed. An object carries the project of the tenant that owns it when that tenant is a developer project; an object in a first-party app tenant has no project and so no OVRN. Planned until Media ships the index.</p>

GET /api/v2/{app}/objects

List the objects of a namespace (the list verb of Media's namespace grants, WS-G task 2): a Network token sees only the namespaces its ns covers, and ?namespace= narrows the list to one namespace and

Capabilities
media.object.list
Visibility
public
Parameters
  • app (path, required)
Response
application/json media.object-list@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>media.object.list</strong> (public): List the objects of a namespace (the list verb of Media&#39;s namespace grants, WS-G task 2): a Network token sees only the namespaces its ns covers, and ?namespace= narrows the list to one namespace and those below it. The same verb guards the job list (GET /api/v2/:app/jobs), the namespace list with quotas and usage (GET /api/v2/:app/namespaces) and the v1 file list (GET /api/v1/:app/files). media.object.read also grants it, for tokens issued before the verbs were split, unless the namespace&#39;s policy is strict_verbs.</p>

DELETE /api/v2/{app}/objects/{id}

Delete an object in a namespace (the delete verb of Media's namespace grants, WS-G task 2): a soft delete that keeps the bytes for the retention period, and the restore that undoes it within that peri

Capabilities
media.object.delete
Visibility
public
Parameters
  • app (path, required)
  • id (path, required)
Response
application/json media.object@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>media.object.delete</strong> (public): Delete an object in a namespace (the delete verb of Media&#39;s namespace grants, WS-G task 2): a soft delete that keeps the bytes for the retention period, and the restore that undoes it within that period (checked against the namespace&#39;s quotas); refused while the object is under a retention hold. The same verb guards the v1 file delete (DELETE /api/v1/:app/files/:key). media.object.upload also grants it, for tokens issued before the verbs were split, unless the namespace&#39;s policy is strict_verbs.</p>

POST /api/v2/{app}/objects/{id}/restore

Delete an object in a namespace (the delete verb of Media's namespace grants, WS-G task 2): a soft delete that keeps the bytes for the retention period, and the restore that undoes it within that peri

Capabilities
media.object.delete
Visibility
public
Parameters
  • app (path, required)
  • id (path, required)
Response
application/json media.object@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>media.object.delete</strong> (public): Delete an object in a namespace (the delete verb of Media&#39;s namespace grants, WS-G task 2): a soft delete that keeps the bytes for the retention period, and the restore that undoes it within that period (checked against the namespace&#39;s quotas); refused while the object is under a retention hold. The same verb guards the v1 file delete (DELETE /api/v1/:app/files/:key). media.object.upload also grants it, for tokens issued before the verbs were split, unless the namespace&#39;s policy is strict_verbs.</p>

GET /f/{key}

Read object metadata / bytes in a namespace.

Capabilities
media.object.read
Visibility
public
Parameters
  • key (path, required)
Response
application/json media.file-read-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>media.object.read</strong> (public): Read object metadata / bytes in a namespace.</p>

POST /internal/avatar-ingest

Network asks Media to fetch a person's new avatar from a URL they chose (through Media's egress guard) and store it as their avatar object on openvibe.media.

Capabilities
media.avatar.ingest
Visibility
internal
Request body
application/json media.avatar-ingest-request@1
Response
application/json media.avatar-ingest-result@1
Errors
errors.problem@1 (application/problem+json)
Description<p><strong>media.avatar.ingest</strong> (internal): Network asks Media to fetch a person&#39;s new avatar from a URL they chose (through Media&#39;s egress guard) and store it as their avatar object on openvibe.media.</p>