Pulse upload protocol (2.3)

Download OpenAPI specification:

The HTTP surface of the Pulse upload protocol, as implemented by @mieweb/pulsevault. Generated from the plugin's route schemas — see PROTOCOL.md for the full contract.

pulsevault

Routes mounted by the plugin

TUS resumable upload endpoint

TUS v1 resumable upload protocol.

  • POST creates a new upload. The Upload-Metadata header must include base64-encoded key/value pairs:
    • artifactId (or the legacy videoid/projectid aliases) — a UUID generated by your server.
    • filename — original filename; the extension must match the kind's allowed list.
    • kind — video (default), project, captions, or thumbnail. Determines the storage subdir and which completion hooks fire.
    • relatedTo — optional UUID of another artifact this one belongs to (e.g. the captions, beat manifest or thumbnail belonging to a pulse's video).
    • checksum — optional <algorithm>:<hex digest> of the finished file, verified post-upload if a checksum validator is configured.
  • PATCH appends a chunk at the offset given by Upload-Offset, with Content-Type: application/offset+octet-stream.
  • HEAD returns the current offset for a resumable upload.
  • DELETE removes the upload and its artifact, whether in flight (a cancel) or finished. Authorized as delete.

See https://tus.io/protocols/resumable-upload for the full protocol.

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string"
}

TUS resumable upload endpoint

TUS v1 resumable upload protocol.

  • POST creates a new upload. The Upload-Metadata header must include base64-encoded key/value pairs:
    • artifactId (or the legacy videoid/projectid aliases) — a UUID generated by your server.
    • filename — original filename; the extension must match the kind's allowed list.
    • kind — video (default), project, captions, or thumbnail. Determines the storage subdir and which completion hooks fire.
    • relatedTo — optional UUID of another artifact this one belongs to (e.g. the captions, beat manifest or thumbnail belonging to a pulse's video).
    • checksum — optional <algorithm>:<hex digest> of the finished file, verified post-upload if a checksum validator is configured.
  • PATCH appends a chunk at the offset given by Upload-Offset, with Content-Type: application/offset+octet-stream.
  • HEAD returns the current offset for a resumable upload.
  • DELETE removes the upload and its artifact, whether in flight (a cancel) or finished. Authorized as delete.

See https://tus.io/protocols/resumable-upload for the full protocol.

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string"
}

TUS resumable upload endpoint

TUS v1 resumable upload protocol.

  • POST creates a new upload. The Upload-Metadata header must include base64-encoded key/value pairs:
    • artifactId (or the legacy videoid/projectid aliases) — a UUID generated by your server.
    • filename — original filename; the extension must match the kind's allowed list.
    • kind — video (default), project, captions, or thumbnail. Determines the storage subdir and which completion hooks fire.
    • relatedTo — optional UUID of another artifact this one belongs to (e.g. the captions, beat manifest or thumbnail belonging to a pulse's video).
    • checksum — optional <algorithm>:<hex digest> of the finished file, verified post-upload if a checksum validator is configured.
  • PATCH appends a chunk at the offset given by Upload-Offset, with Content-Type: application/offset+octet-stream.
  • HEAD returns the current offset for a resumable upload.
  • DELETE removes the upload and its artifact, whether in flight (a cancel) or finished. Authorized as delete.

See https://tus.io/protocols/resumable-upload for the full protocol.

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string"
}

TUS resumable upload endpoint

TUS v1 resumable upload protocol.

  • POST creates a new upload. The Upload-Metadata header must include base64-encoded key/value pairs:
    • artifactId (or the legacy videoid/projectid aliases) — a UUID generated by your server.
    • filename — original filename; the extension must match the kind's allowed list.
    • kind — video (default), project, captions, or thumbnail. Determines the storage subdir and which completion hooks fire.
    • relatedTo — optional UUID of another artifact this one belongs to (e.g. the captions, beat manifest or thumbnail belonging to a pulse's video).
    • checksum — optional <algorithm>:<hex digest> of the finished file, verified post-upload if a checksum validator is configured.
  • PATCH appends a chunk at the offset given by Upload-Offset, with Content-Type: application/offset+octet-stream.
  • HEAD returns the current offset for a resumable upload.
  • DELETE removes the upload and its artifact, whether in flight (a cancel) or finished. Authorized as delete.

See https://tus.io/protocols/resumable-upload for the full protocol.

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string"
}

TUS resumable upload endpoint

TUS v1 resumable upload protocol.

  • POST creates a new upload. The Upload-Metadata header must include base64-encoded key/value pairs:
    • artifactId (or the legacy videoid/projectid aliases) — a UUID generated by your server.
    • filename — original filename; the extension must match the kind's allowed list.
    • kind — video (default), project, captions, or thumbnail. Determines the storage subdir and which completion hooks fire.
    • relatedTo — optional UUID of another artifact this one belongs to (e.g. the captions, beat manifest or thumbnail belonging to a pulse's video).
    • checksum — optional <algorithm>:<hex digest> of the finished file, verified post-upload if a checksum validator is configured.
  • PATCH appends a chunk at the offset given by Upload-Offset, with Content-Type: application/offset+octet-stream.
  • HEAD returns the current offset for a resumable upload.
  • DELETE removes the upload and its artifact, whether in flight (a cancel) or finished. Authorized as delete.

See https://tus.io/protocols/resumable-upload for the full protocol.

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string"
}

TUS resumable upload endpoint

TUS v1 resumable upload protocol.

  • POST creates a new upload. The Upload-Metadata header must include base64-encoded key/value pairs:
    • artifactId (or the legacy videoid/projectid aliases) — a UUID generated by your server.
    • filename — original filename; the extension must match the kind's allowed list.
    • kind — video (default), project, captions, or thumbnail. Determines the storage subdir and which completion hooks fire.
    • relatedTo — optional UUID of another artifact this one belongs to (e.g. the captions, beat manifest or thumbnail belonging to a pulse's video).
    • checksum — optional <algorithm>:<hex digest> of the finished file, verified post-upload if a checksum validator is configured.
  • PATCH appends a chunk at the offset given by Upload-Offset, with Content-Type: application/offset+octet-stream.
  • HEAD returns the current offset for a resumable upload.
  • DELETE removes the upload and its artifact, whether in flight (a cancel) or finished. Authorized as delete.

See https://tus.io/protocols/resumable-upload for the full protocol.

path Parameters
*
required
string

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string"
}

TUS resumable upload endpoint

TUS v1 resumable upload protocol.

  • POST creates a new upload. The Upload-Metadata header must include base64-encoded key/value pairs:
    • artifactId (or the legacy videoid/projectid aliases) — a UUID generated by your server.
    • filename — original filename; the extension must match the kind's allowed list.
    • kind — video (default), project, captions, or thumbnail. Determines the storage subdir and which completion hooks fire.
    • relatedTo — optional UUID of another artifact this one belongs to (e.g. the captions, beat manifest or thumbnail belonging to a pulse's video).
    • checksum — optional <algorithm>:<hex digest> of the finished file, verified post-upload if a checksum validator is configured.
  • PATCH appends a chunk at the offset given by Upload-Offset, with Content-Type: application/offset+octet-stream.
  • HEAD returns the current offset for a resumable upload.
  • DELETE removes the upload and its artifact, whether in flight (a cancel) or finished. Authorized as delete.

See https://tus.io/protocols/resumable-upload for the full protocol.

path Parameters
*
required
string

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string"
}

TUS resumable upload endpoint

TUS v1 resumable upload protocol.

  • POST creates a new upload. The Upload-Metadata header must include base64-encoded key/value pairs:
    • artifactId (or the legacy videoid/projectid aliases) — a UUID generated by your server.
    • filename — original filename; the extension must match the kind's allowed list.
    • kind — video (default), project, captions, or thumbnail. Determines the storage subdir and which completion hooks fire.
    • relatedTo — optional UUID of another artifact this one belongs to (e.g. the captions, beat manifest or thumbnail belonging to a pulse's video).
    • checksum — optional <algorithm>:<hex digest> of the finished file, verified post-upload if a checksum validator is configured.
  • PATCH appends a chunk at the offset given by Upload-Offset, with Content-Type: application/offset+octet-stream.
  • HEAD returns the current offset for a resumable upload.
  • DELETE removes the upload and its artifact, whether in flight (a cancel) or finished. Authorized as delete.

See https://tus.io/protocols/resumable-upload for the full protocol.

path Parameters
*
required
string

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string"
}

TUS resumable upload endpoint

TUS v1 resumable upload protocol.

  • POST creates a new upload. The Upload-Metadata header must include base64-encoded key/value pairs:
    • artifactId (or the legacy videoid/projectid aliases) — a UUID generated by your server.
    • filename — original filename; the extension must match the kind's allowed list.
    • kind — video (default), project, captions, or thumbnail. Determines the storage subdir and which completion hooks fire.
    • relatedTo — optional UUID of another artifact this one belongs to (e.g. the captions, beat manifest or thumbnail belonging to a pulse's video).
    • checksum — optional <algorithm>:<hex digest> of the finished file, verified post-upload if a checksum validator is configured.
  • PATCH appends a chunk at the offset given by Upload-Offset, with Content-Type: application/offset+octet-stream.
  • HEAD returns the current offset for a resumable upload.
  • DELETE removes the upload and its artifact, whether in flight (a cancel) or finished. Authorized as delete.

See https://tus.io/protocols/resumable-upload for the full protocol.

path Parameters
*
required
string

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string"
}

TUS resumable upload endpoint

TUS v1 resumable upload protocol.

  • POST creates a new upload. The Upload-Metadata header must include base64-encoded key/value pairs:
    • artifactId (or the legacy videoid/projectid aliases) — a UUID generated by your server.
    • filename — original filename; the extension must match the kind's allowed list.
    • kind — video (default), project, captions, or thumbnail. Determines the storage subdir and which completion hooks fire.
    • relatedTo — optional UUID of another artifact this one belongs to (e.g. the captions, beat manifest or thumbnail belonging to a pulse's video).
    • checksum — optional <algorithm>:<hex digest> of the finished file, verified post-upload if a checksum validator is configured.
  • PATCH appends a chunk at the offset given by Upload-Offset, with Content-Type: application/offset+octet-stream.
  • HEAD returns the current offset for a resumable upload.
  • DELETE removes the upload and its artifact, whether in flight (a cancel) or finished. Authorized as delete.

See https://tus.io/protocols/resumable-upload for the full protocol.

path Parameters
*
required
string

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string"
}

Discover this deployment's protocol version and configuration

Unauthenticated — the response carries no secrets. Lets a client detect protocol compatibility, allowed artifact kinds/extensions and the upload size cap before pairing.

Responses

Response samples

Content type
application/json
{
  • "protocolVersion": 1,
  • "protocolRevision": "string",
  • "minSupportedVersion": 1,
  • "maxSupportedVersion": 1,
  • "kinds": [
    ],
  • "allowedExtensions": {
    },
  • "maxUploadSize": 0,
  • "checksum": {
    },
  • "viewLinks": true
}

Delete an uploaded artifact

Deletes all storage for an artifactId (bytes + sidecar metadata), regardless of kind. Runs the authorize hook with phase: "delete" before the adapter's remove is called. Returns 204 on success, 404 if the artifactId was unknown, 501 if the adapter does not implement remove.

path Parameters
artifactId
required
string <uuid>

UUID of the upload to delete.

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string"
}

Serve a previously uploaded artifact

Resolves the artifactId through the configured storage adapter and either streams the bytes or redirects (for CDN-backed adapters). The artifact's kind (video, project, or captions) is resolved from storage, not the URL. Runs the authorize hook before resolve.

path Parameters
artifactId
required
string <uuid>

UUID returned from the upload flow.

query Parameters
token
string

Optional bearer token for pre-authenticated watch links. Forwarded to the authorize hook as ctx.token so parent servers can validate it without a separate login step.

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string"
}

Mint a read-only view link for a finished artifact

Returns a token that opens the artifact (and the artifacts relatedTo it) as GET /artifacts/:artifactId?token=, and nothing more — no uploads, deletes or further links. Runs the authorize hook with phase: "share"; the host's issueViewLink decides how long the link works. 404 unless the server enables view links (/capabilities viewLinks) and the artifact is finished; 403 when the host refuses a link for it.

path Parameters
artifactId
required
string <uuid>

UUID of the finished artifact to link to.

Responses

Response samples

Content type
application/json
{
  • "token": "string",
  • "expiresAt": 0
}

Where an upload is: uploading, processing or ready

Reports the artifact's state (unknown, uploading, processing while a web-ready conversion rewrites it, ready), its kind and relatedTo, the bytes received against its declared length, whether the host's onUploadComplete has finished (acknowledged), and what the host recorded with recordOutcome (outcome). Runs the authorize hook with phase: "status"; createCapabilityAuthorize grants it to the pairing token and to a view token. Never cached.

path Parameters
artifactId
required
string <uuid>

UUID of the upload to report on.

query Parameters
token
string

Optional bearer token (the pairing token or a view token), forwarded to the authorize hook as ctx.token for browsers that can’t set a header.

Responses

Response samples

Content type
application/json
{
  • "artifactId": "706a3f1e-c357-4634-b1bf-20c221b5bb4e",
  • "state": "unknown",
  • "kind": "video",
  • "relatedTo": "378c13a9-e20d-414b-882a-16755f7f0eba",
  • "name": "string",
  • "bytesReceived": 0,
  • "size": 0,
  • "acknowledged": true,
  • "outcome": null
}

Serve a video's poster frame

Streams or redirects to the finished thumbnail relatedTo the video, exactly as GET /artifacts/:artifactId would serve it. Runs the authorize hook with phase: "resolve" on the video, so whoever may watch it may see its poster. 404 until the poster has landed.

path Parameters
artifactId
required
string <uuid>

UUID of the video (the pulse's anchor artifact).

query Parameters
token
string

Optional bearer token for pre-authenticated watch links, forwarded to the authorize hook as ctx.token.

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string"
}