Skip to content

System and health ​

Liveness, readiness, metrics, the OpenAPI document and the server's capabilities.

Operations of this group with their access rule, retry rule, parameters and answers. Every request carries a key: Authorization: Bearer <key> (see Authentication).

Operations ​

Check detailed readiness ​

GET HEAD /health/ready

Access: Any valid key or session · Retry: Safe to repeat (read)

Answers ready when the database and storage respond, with this node's role (api or reader), whether it accepts writes now (writable is false on a read gateway and while the disk keeps its free-space reserve), the shared download slot of a read gateway and aggregate upload and download admission and bandwidth counters. While the server drains or a dependency is unavailable it answers 503 with Retry-After. It does not count against the request budget; for a load balancer without a key use getReadinessStatus.

Response 200

FieldTypeRequiredRules
rolestringyesone of api, reader
sharedDownloadsobjectyesmay be null
sharedDownloads.slotintegeryesat least 0
sharedDownloads.slotsintegeryesat least 0
sharedDownloads.activebooleanyes—
sharedDownloads.leaseSecondsintegeryesat least 0
statusstringyesone of ready
writablebooleanyes—
replicationobjectnomay be null
replication.copiesintegeryes0–16
replication.requiredintegeryes1–16
replication.singleCopyUntilstring (date-time)yesmay be null
replication.nodestringnoup to 63 characters
replication.profilestringnoone of ha-2, ha-3
replication.peersarray of objectnoup to 16 items
replication.peers[].namestringyesup to 63 characters
replication.peers[].connectedbooleanyes—
replication.peers[].diskstringyesup to 24 characters
replication.peers[].completebooleanyes—
replication.peers[].witnessbooleanyes—
transfersobjectyes—
transfers.uploadsobjectyes—
transfers.uploads.admissionobjectyes—
transfers.uploads.bandwidthobjectyes—
transfers.uploads.sessionsobjectno—
transfers.downloadsobjectyes—
transfers.downloads.admissionobjectyes—
transfers.downloads.bandwidthobjectyes—
transfers.downloads.sessionsobjectno—

Responses: 200, 400, 401, 403, 404, 409, 422, 503, 507

Example

bash
curl -X GET "$ARKVORY_URL/health/ready" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Get server capabilities and limits ​

GET HEAD /api/v1/capabilities

Access: Any valid key or session · Retry: Safe to repeat (read)

Returns the API versions, the gateway role, feature flags (for example selfRegistration or mirrorFeed) and the limits a client adapts to: the largest object (maxObjectBytes, a decimal string), the smallest and largest multipart segment, the largest number of parts and the largest page size. Read it once when a client starts; it lists no resources.

Response 200

FieldTypeRequiredRules
apiVersionsarray of stringyes—
gatewayRolestringyesone of api, reader
featuresmap of booleanyes—
limitsobjectyes—
limits.maxObjectBytesstringnoa whole number in decimal digits, sent as a string
limits.partBytesintegernoSmallest multipart segment.
limits.maxPartBytesintegerno—
limits.maxPartsintegerno—
limits.maxPageSizeintegerno—

Responses: 200, 400, 401, 403, 404, 409, 422, 503, 507

Example

bash
curl -X GET "$ARKVORY_URL/api/v1/capabilities" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Check readiness for a load balancer ​

GET HEAD /health/status

Access: Anyone, without a key · Retry: Safe to repeat (read)

Needs no key and returns no details: 200 with {"status":"ready"}, or 503 with unavailable or draining and Retry-After. The dependency check is shared and cached for one second, so frequent probes do not load the database, and the probe does not count against the request budget.

Response 200

FieldTypeRequiredRules
statusstringyesone of ready, unavailable, draining

Responses: 200, 400, 403, 503

Example

bash
curl -X GET "$ARKVORY_URL/health/status"

Check that the process is alive ​

GET HEAD /health/live

Access: Anyone, without a key · Retry: Safe to repeat (read)

Returns 200 with {"status":"ok"} while the process answers HTTP. It checks no dependency, so use it to decide on a restart and getReadinessStatus to decide on traffic.

Response 200

FieldTypeRequiredRules
statusstringyesone of ok

Responses: 200, 400, 403, 503

Example

bash
curl -X GET "$ARKVORY_URL/health/live"

Get the OpenAPI document ​

GET HEAD /api/v1/openapi.json

Access: Any valid key or session · Retry: Safe to repeat (read)

Returns the OpenAPI 3.0 document of this deployment, with the x-arkvory-* extensions that describe each operation's access, retry and gateway rules. surface (discovery, identity, catalog, transfers, administration or operations) returns only that area; an unknown or repeated query parameter is a 400. The document is the same for every caller and grants nothing: to learn what this credential may call, use listVisibleOperations.

Parameters

NameInTypeRequiredRules
surfacequerystringnoone of discovery, identity, catalog, transfers, administration, operations; Documentation view only; not filtered by caller permissions.

Response 200

FieldTypeRequiredRules
openapistringyesone of 3.0.3
infoobjectyes—
pathsobjectyes—

Responses: 200, 400, 401, 403, 404, 409, 422, 503, 507

Example

bash
curl -X GET "$ARKVORY_URL/api/v1/openapi.json" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Get Prometheus metrics ​

GET HEAD /health/metrics

Access: Any valid key or session · Retry: Safe to repeat (read)

Returns the process metrics in the Prometheus text format (text/plain; version=0.0.4) for a scraper. Counters and histograms belong to this process and start from zero after a restart (see arkvory_process_start_time_seconds); labels are limited to route template, method, status class and transfer direction and never name an artifact, key or account. The scrape does not count against the request budget.

Responses: 200, 400, 401, 403, 404, 409, 422, 503, 507

Example

bash
curl -X GET "$ARKVORY_URL/health/metrics" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -o file

List the operations this credential may call ​

GET HEAD /api/v1/operations

Access: Any valid key or session · Retry: Safe to repeat (read)

Lists the operations of this gateway the credential may call, ordered by operationId, each with its surface, retry rule, required actions and the conditions checked only at call time (such as resource-state or upload-owner). repository adds the operations of that repository (an unknown or foreign repository is a 404), surface narrows the list to one area; pages hold limit items (1–100, default 50), continue with after set to next. The answer is advisory: build menus from it, but every real request is authorized again, and a read gateway lists no changing methods.

Parameters

NameInTypeRequiredRules
repositoryquerystringnomatches ^[a-z0-9][a-z0-9_-]{0,63}$
surfacequerystringnoone of discovery, identity, catalog, transfers, administration, operations
afterquerystringnomatches ^[A-Za-z][A-Za-z0-9]{0,95}$
limitqueryintegerno1–100; default 50

Response 200

FieldTypeRequiredRules
apiVersionstringyesone of v1
documentVersionstringyesmatches ^\d+\.\d+\.\d+$
gatewayRolestringyesone of api, reader
repositorystringyesmatches ^[a-z0-9][a-z0-9_-]{0,63}$; may be null
advisorybooleanyesone of true
itemsarray of objectyesup to 100 items
items[].operationIdstringyesmatches ^[A-Za-z][A-Za-z0-9]{0,95}$
items[].methodstringyesone of get, head, post, put, patch, delete
items[].pathstringyesmatches ^/; up to 512 characters
items[].summarystringyesup to 1024 characters
items[].surfacestringyesone of discovery, identity, catalog, transfers, administration, operations
items[].visibilitystringyesone of public, authenticated, self, repository, owned-resource, delegated, bootstrap, administrator
items[].retrystringyesone of read, never-automatic, idempotent, idempotency-key, compare-and-swap, reconcile-upload, reconcile-job
items[].requiredActionsarray of stringyesup to 33 items; no repeated items; each: one of repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read, service-account.read, service-account.manage, policy.read, policy.manage, credential.read, credential.manage, service-audit.read, backup.read, backup.manage
items[].conditionsarray of stringyesup to 6 items; no repeated items; each: one of resource-state, upload-owner, job-owner, reference-owner, delegation-target-and-ceiling, own-key
nextstringyesmatches ^[A-Za-z][A-Za-z0-9]{0,95}$; may be null

Responses: 200, 400, 401, 403, 404, 409, 422, 503, 507

Example

bash
curl -X GET "$ARKVORY_URL/api/v1/operations" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Arkvory · ProAnimaStudio