Docs & API

The endpoint catalog, grouped by capability.

287 operations across 7 services, all on one base URL and one auth model. Every path below is real; open a capability for the worked examples.

https://api.edge.nexocloud.io/api/v1 base URL287 operations

Auth model

One identity, one tenant header, one idempotency rule.

Authorization: Bearer

Authorization: Bearer $TOKEN — an SS-01 OIDC access token issued at signup.

X-Tenant-Id

X-Tenant-Id: <tenant> — on every tenant-scoped route; cross-tenant reads return zero rows (ADR-0019).

Idempotency-Key

Idempotency-Key: <uuid> — required on money/usage writes (ADR-0039).

AWS SigV4 · /s3

AWS Signature V4 on the /s3 wire gateway — real S3 clients (aws-cli, boto3, SDKs) authenticate with an R2 access key; the tenant is resolved from the key.

Quickstart

curl the control plane — or point a real S3 client at it.

control plane — curl
# Auth is a platform-standard SS-01 OIDC token + your tenant header.
export BASE="https://api.edge.nexocloud.io/api/v1"
export AUTH="Authorization: Bearer $TOKEN"     # from signup / SS-05 key
export TENANT="X-Tenant-Id: acme"

# Create a bucket, deploy a function, route it, roll out.
curl -X POST "$BASE/buckets" -H "$AUTH" -H "$TENANT" \
  -H "Idempotency-Key: $(uuidgen)" -d '{"name":"site-assets","versioning":true}'

curl -X POST "$BASE/functions" -H "$AUTH" -H "$TENANT" -d '{"name":"assets-router"}'
curl -X POST "$BASE/functions/assets-router/deploy" -H "$AUTH" -H "$TENANT" \
  -d '{"code":"export default { fetch(req, env){} }","promote":true}'
curl -X POST "$BASE/functions/assets-router/rollout" -H "$AUTH" -H "$TENANT"
S3 wire gateway — AWS SigV4
# The /s3 wire gateway speaks S3 REST with AWS Signature V4.
# Point any real S3 client at it — tenant is resolved from the access key.

# 1. Issue an S3 access key (secret shown ONCE)
curl -X POST "$BASE/object/access-keys" -H "$AUTH" -H "$TENANT" \
  -d '{"name":"ci-deploy"}'
#  → { "access_key_id": "EDGE...", "secret_access_key": "***shown once***" }

# 2. Configure the AWS CLI against the wire gateway
aws configure set aws_access_key_id     EDGE...
aws configure set aws_secret_access_key  ***
export S3="https://api.edge.nexocloud.io/s3"

# 3. Use it like S3 — ListBuckets, PutObject, multipart, all SigV4-signed
aws --endpoint-url "$S3" s3 ls
aws --endpoint-url "$S3" s3 cp app.v42.js s3://site-assets/app.v42.js
# boto3 / any S3 SDK works the same way.

SDK/CLI note: any S3 SDK (aws-cli, boto3, aws-sdk-js) works unmodified against /s3; the control plane is plain REST + JSON.

Endpoint catalog

Grouped by the six capability groups.

A representative slice per group. Base https://api.edge.nexocloud.io/api/v1. Ops endpoints (/healthz /readyz /metrics /version) exist on every service and are omitted.

Object storage — S3/R2

SS-02 DBaaS58 opsDeep-dive →
GET/api/v1/bucketsList the tenant's buckets.
POST/api/v1/bucketsCreate a bucket (RustFS claim): versioning, visibility, region.
PUT/api/v1/buckets/{bucket}/versioningEnable or suspend bucket versioning.
GET/api/v1/buckets/{bucket}/objectsList objects with prefix + delimiter and pagination.
PUT/api/v1/buckets/{bucket}/objects/{key}Put an object (control-plane metadata).
GET/api/v1/buckets/{bucket}/versionsList object versions incl. delete markers.
PUT/api/v1/buckets/{bucket}/lifecycleSet per-bucket lifecycle rules.
POST/api/v1/buckets/{bucket}/uploadsInitiate a multipart upload.
PUT/api/v1/buckets/{bucket}/uploads/{upload}/parts/{part}Upload a part; returns the part etag.
POST/api/v1/buckets/{bucket}/uploads/{upload}/completeComplete a multipart upload.
POST/api/v1/object/access-keysIssue an S3 access key (secret shown once).
POST/api/v1/buckets/{bucket}/presignPresign a GET or PUT (HMAC, TTL-bounded).
POST/api/v1/object/presign/verifyVerify a presigned request (TTL + signature).
GET/api/v1/buckets/{bucket}/usagePer-bucket usage: stored, objects, zero-rated vs billable egress.
POST/api/v1/buckets/{bucket}/egressRecord egress (intra-edge zero-rated; external billable).
PUT/s3/{bucket}/{key}S3 wire gateway — PutObject / UploadPart (SigV4).

Edge compute & CDN

SS-27 Edge45 opsDeep-dive →
POST/api/v1/functionsCreate an edge function.
POST/api/v1/functions/{name}/deployDeploy an immutable version (optionally promote).
GET/api/v1/functions/{name}/versionsList a function's immutable versions.
POST/api/v1/functions/{name}/rollbackRoll the active pointer back to an earlier version.
POST/api/v1/functions/{name}/routesBind a route pattern / trigger to a function.
GET/api/v1/compute/resolveResolve host+path to the owning function (longest glob wins).
POST/api/v1/functions/{name}/placementPlace a function on all or a named subset of PoPs.
POST/api/v1/functions/{name}/rolloutAdvance the pending→active PoP rollout.
POST/api/v1/functions/{name}/bindingsBind an R2/KV/env resource to a function.
POST/api/v1/functions/{name}/wasmUpload real wasm bytes for a version.
POST/api/v1/functions/{name}/execExecute the active version's real wasm module.
GET/api/v1/functions/{name}/metricsPer-function metrics summary.
PUT/api/v1/classes/{class}Upsert a cache class policy.
POST/api/v1/purgeSurrogate-key / path purge across the fleet.
PUT/api/v1/waf/classes/{class}Upsert an edge WAF class.
PUT/api/v1/pops/{name}Upsert a PoP the fleet can place functions on.

DNS & traffic steering

SS-25 DNS14 opsDeep-dive →
GET/api/v1/zonesList zones.
POST/api/v1/zonesCreate a zone.
POST/api/v1/zones/{zone}/recordsAdd a record to a zone.
PUT/api/v1/zones/{zone}/rrsetsReplace a zone's RRsets atomically.
POST/api/v1/zones/{zone}/dnssec/initInitialise DNSSEC for a zone.
POST/api/v1/zones/{zone}/dnssec/ceremonyRun the DNSSEC signing ceremony.
POST/api/v1/zones/{zone}/dnssec/rotate-zskRotate the zone-signing key.
POST/api/v1/zones/{zone}/publishPublish a zone atomically.
GET/api/v1/zones/{zone}/resolveResolve a name (geo/health-aware).
GET/api/v1/zones/{zone}/answerGet the computed steering answer.
POST/api/v1/health/{target}Report a target's health for steering.
POST/api/v1/distribution/haltHalt zone distribution.
POST/api/v1/distribution/resumeResume zone distribution.
GET/api/v1/sloRead the DNS SLO.

SASE / network security

SS-26 Network82 opsDeep-dive →
POST/api/v1/meshCreate a sovereign mesh overlay (SDP control plane).
POST/api/v1/mesh/{id}/peersZero-knowledge peer enrollment (public key only).
GET/api/v1/mesh/{id}/peers/{device}/netmapGenerate the peer's WireGuard netmap.
POST/api/v1/mesh/{id}/peers/{device}/rekeySeamless mesh-wide re-key.
POST/api/v1/tailnet/devicesEnroll a device into the tenant tailnet.
PUT/api/v1/tailnet/aclSet the tailnet ACL/policy.
POST/api/v1/sase/ztna/policiesCreate a ZTNA access policy (default-deny).
POST/api/v1/sase/ztna/grantEvaluate a ZTNA request and record the verdict.
POST/api/v1/sase/swg/policiesSet a Secure Web Gateway policy.
POST/api/v1/sase/dlp/profilesSet a DLP inspection profile.
POST/api/v1/sdwan/tunnelsCreate an SD-WAN overlay tunnel.
POST/api/v1/sdwan/steerCompute an app-aware steering decision.
POST/api/v1/upo/policyAuthor (create/replace) the unified policy; bumps version.
POST/api/v1/upo/compileCompile the policy to ztna | sdwan | firewall rulesets.
POST/api/v1/upo/applyApply a compiled target; returns the diff vs baseline.
PUT/api/v1/residency/{class}Set a data-residency class rule.

Security & WAF

SS-07 Gateway · SS-28 SecOps65 opsDeep-dive →
POST/api/v1/admitSS-07 — admit a request against gateway policy.
POST/api/v1/entitlementsSS-07 — resolve entitlements.
POST/api/v1/routes/weightsSS-07 — set weighted route versions.
PUT/api/v1/waf/classes/{class}SS-27 — upsert an edge WAF class.
POST/api/v1/waf/exceptionsSS-27 — add a WAF exception.
POST/api/v1/rulesSS-28 — author a detection rule.
GET/api/v1/rules/{id}/versionsSS-28 — list a rule's versions.
GET/api/v1/coverageSS-28 — detection coverage.
POST/api/v1/huntsSS-28 — run a threat hunt.
POST/api/v1/hunts/{id}/promoteSS-28 — promote a hunt to a rule.
POST/api/v1/cases/{id}/evidenceSS-28 — attach evidence to a case.
POST/api/v1/cases/{id}/containmentsSS-28 — propose a containment.
POST/api/v1/containments/{id}/approveSS-28 — approve a containment.
POST/api/v1/containments/{id}/executeSS-28 — execute an approved containment.
POST/api/v1/zeek/leak-auditSS-28 — leak-audit a mesh control-plane session.
POST/api/v1/zeek/intel-matchSS-28 — match an observation against intel feeds.

PoP / anycast control

SS-57 CloudPoP23 opsDeep-dive →
GET/api/v1/popsList PoPs.
POST/api/v1/popsRegister a PoP.
POST/api/v1/pops/{id}/drainDrain a PoP (lifecycle transition).
POST/api/v1/pops/{id}/routesManage a PoP's routes.
GET/api/v1/bgp/sessionsList BGP sessions.
POST/api/v1/bgp/sessions/{id}/drainDrain a BGP session (graceful).
POST/api/v1/routes/{id}/withdrawWithdraw a BGP route.
POST/api/v1/anycast/policiesAuthor an anycast policy.
POST/api/v1/anycast/policies/{id}/failover-drillRun a failover drill (transition + evidence).
POST/api/v1/traffic/policiesAuthor a traffic policy.
GET/api/v1/blueprintsList PoP blueprints.
POST/api/v1/gitops/changesOpen a GitOps change.
POST/api/v1/gitops/changes/{id}/applyApply a GitOps change.
POST/api/v1/gitops/changes/{id}/rollbackRoll back a GitOps change.
GET/api/v1/capacity/forecastRead a capacity forecast.
GET/api/v1/usageRead fleet usage.

Next

Grab a key and ship.