Skip to Content
We are live but in Staging 🎉

Versions — API Reference

Package: dodil.ignite.v1 · Service: ComputeService

A version is an immutable, numbered snapshot produced by PublishDraft. The app’s active_version is the one that serves traffic; rolling back just repoints it at an older version — nothing is rewritten. The per-version type is AppVersionInfo, which snapshots the resource tier, scaling, and runtime as they were at publish time. Mutable code lives in the draft (version 0).

gRPC reaches every method at dodil.ignite.v1.ComputeService/<Method> on $IGNITE_GRPC; the HTTP gateway mirrors each one. See Conventions → Using gRPC for grpcurl setup. gRPC requests use the proto field names (snake_case); HTTP uses pbjson (camelCase). Responses render camelCase.

RPCHTTP
ListAppVersionsGET /v1/ignite/app/{organization_name}/{app_name}/versions
GetAppVersionGET /v1/ignite/app/{organization_name}/{app_name}/versions/{version}
RollbackAppPOST /v1/ignite/app/{organization_name}/{app_name}/rollback
TestAppVersionPOST /v1/ignite/app/{organization_name}/{app_name}/versions/{version}/test
GetAppCodeGET /v1/ignite/app/{organization_name}/{app_name}/code/versions/{version}

ListAppVersions

Lists every published version of an app, newest-relevant first, each as an AppVersionInfo.

Request

curl -sS "https://api.dev.dodil.io/v1/ignite/app/acme-corp/my-data-processor/versions" \ -H "Authorization: Bearer $DODIL_TOKEN"

Response

{ "versions": [ { "version": 4, "codeHash": "9f1c2a7e", "createdAtMs": "1716900300000", "status": "VERSION_STATUS_ACTIVE", "resourceTier": "RESOURCE_TIER_MEDIUM", "runtime": { "rust": { "target": "RUST_COMPILATION_TARGET_NATIVE", "toolchainVersion": "1.82" } } }, { "version": 3, "codeHash": "1b8e4d02", "createdAtMs": "1716800000000", "status": "VERSION_STATUS_SUPERSEDED" } ] }

GetAppVersion

Returns the metadata for one specific version as an AppMeta snapshot.

Request

curl -sS "https://api.dev.dodil.io/v1/ignite/app/acme-corp/my-data-processor/versions/3" \ -H "Authorization: Bearer $DODIL_TOKEN"

Response

GetAppVersionResponse { AppMeta app = 1; } — the AppMeta for that version.

RollbackApp

Repoints active_version at an older version. The target becomes the version serving traffic; use ListAppVersions first to find a valid target.

Request

curl -sS -X POST "https://api.dev.dodil.io/v1/ignite/app/acme-corp/my-data-processor/rollback" \ -H "Authorization: Bearer $DODIL_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "targetVersion": 3 }'

Response

{ "app": { "id": "acme-corp/my-data-processor", "name": "my-data-processor", "activeVersion": 3 } }

TestAppVersion

Runs a specific version against a payload without promoting it. The target version must have DRAFT status. Returns an execution_id — use GetExecution to retrieve status and output.

Request

# `payload` is the JSON input, base64-encoded (here: {"name":"world"}). curl -sS -X POST "https://api.dev.dodil.io/v1/ignite/app/acme-corp/my-data-processor/versions/5/test" \ -H "Authorization: Bearer $DODIL_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "payload": "eyJuYW1lIjoid29ybGQifQ==" }'

Response

{ "executionId": "exec-8b21cd", "appId": "acme-corp/my-data-processor", "version": 5 }

GetAppCode

Returns the source files for a version, for display. Pass version = 0 for the current/latest version. The HTTP gateway also accepts .../code (no version) as the latest.

Request

curl -sS "https://api.dev.dodil.io/v1/ignite/app/acme-corp/my-data-processor/code/versions/4" \ -H "Authorization: Bearer $DODIL_TOKEN"

Response

{ "codeFormat": "CODE_FORMAT_INTERNAL_SOURCE", "version": 4, "codeHash": "9f1c2a7e", "files": [ { "path": "src/main.rs", "content": "dXNlIGlnbml0ZTo6cHJlbHVkZTo6Kjsg...", "isBinary": false, "sizeBytes": "412" } ] }

See also