Skip to content

Sites

Skippr Cloud sites lets you publish immutable static deployments at a stable Site hostname. The supported control plane creates Sites, completes and promotes deployments, verifies custom domains, mints protected preview tokens, and invalidates static cache paths.

Status: Preview (partial).

  • Supported: Site create/get/list/update/delete; Deployment create/complete/get/list/promote/delete; CreatePreviewToken; DomainBinding create/get/list/verify/delete; PurgeCache and RevalidatePath for static hosts.
  • Planned: RevalidateTag (durable ISR tag indexes), framework SSR, durable ISR generation, image optimization, and advanced traffic controls.

Know the control-plane and edge boundary

The Sites control plane manages tenant resources and deployment state. A successful CompleteDeployment verifies an immutable static bundle and makes the deployment READY; PromoteDeployment selects which ready deployment the stable Site hostname serves.

Sites web traffic uses the Sites edge. Cloud service APIs and tenant Gateway Apis continue to use the gateway edge. A Site can declare an explicit origin binding to a tenant Api, but Sites does not create a second public path to Cloud APIs.

Custom Site hostnames use a Sites DomainBinding and Sites-managed edge TLS. They do not use a gateway DomainName or a CertificatescertificateId.

At a glance

FactValue
Control endpointhttps://sites.eu-central-1.cloud.skippr.io or https://api.cloud.skippr.io
Target prefixCloudSites.
AuthenticationCloud JWT or SigV4 service sites
Regioneu-central-1
Stable hostname{site_id}.sites.skippr.io
Preview hostname{deployment_id}--{site_id}.sites.skippr.io
ContractGenerated Sites operations

What you can do

  • Create a stable Site identity and platform hostname.
  • Upload, complete, and inspect immutable static deployments.
  • Promote a ready deployment or roll back by promoting an earlier one.
  • Create a token for a ready deployment's protected preview.
  • Purge static cache entries or revalidate a path or tag.
  • Verify a custom hostname and receive managed edge TLS.
  • Declare same-origin routes to a tenant gateway Api in a deployment bundle.

Before you start

You need a Cloud JWT or operator/workload SigV4 key and permission to manage Sites resources. Your static build output must include index.html and stay within the deployment limits below. A custom domain also requires control of the DNS records returned by CreateDomainBinding.

Create your first Site

Set a token from Auth:

bash
export CLOUD_BEARER_TOKEN='<token>'

Create a public Site:

bash
curl -sS https://sites.eu-central-1.cloud.skippr.io/ \
  -H "Authorization: Bearer ${CLOUD_BEARER_TOKEN}" \
  -H 'Content-Type: application/json' \
  -H 'X-Cloud-Target: CloudSites.CreateSite' \
  -d '{
    "name":"docs",
    "publicAccess":true,
    "clientToken":"site-docs-1"
  }'

A successful response includes siteId, platformHostname, and revision. Reuse the same clientToken when retrying the same create request.

Understand Sites resources

ConceptMeaning
SiteStable resource with a hostname, active Deployment, and revision
DeploymentImmutable static build output identified by a content digest
SiteBundleVersioned manifest of assets, routes, headers, redirects, and declared origins
PromotionAtomic selection of the Site's active ready Deployment
RollbackPromotion of an earlier ready Deployment
Preview tokenCredential scoped to one ready Deployment preview
DomainBindingVerified custom hostname attached to one Site
OriginBindingExplicit path and method mapping to a tenant gateway Api

siteId, deploymentId, and bindingId are opaque tenant-scoped identifiers. Do not derive routing or tenancy from their text.

Manage Sites

TaskSupported operations
Create and readCreateSite, GetSite, ListSites
Change settingsUpdateSite
RemoveDeleteSite

cloud_site is the Terraform resource for this lifecycle. CDKTF TypeScript and Python expose the generated binding for the same resource.

Deploy and promote static content

  1. Build static output in your own build environment.
  2. Create a deterministic SiteBundle and content digest.
  3. Call CreateDeployment to receive upload instructions.
  4. Upload the required immutable assets.
  5. Call CompleteDeployment with the generated manifest contract.
  6. Read GetDeployment until the deployment is READY or FAILED.
  7. Call PromoteDeployment to switch the stable Site hostname.
TaskSupported operations
Create and completeCreateDeployment, CompleteDeployment
Inspect historyGetDeployment, ListDeployments
Authorize a protected previewCreatePreviewToken
Release or roll backPromoteDeployment
Remove inactive historyDeleteDeployment

Completion verifies content digests and manifest limits. A deployment is immutable after completion. DeleteDeployment rejects the active deployment. Promotion uses the Site revision, so a conflicting concurrent promotion fails instead of overwriting a newer selection.

Bind a custom domain

  1. Call CreateDomainBinding with the siteId and hostname.
  2. Publish the returned ownership and routing records at your DNS provider, or use DNS when Skippr Cloud manages the zone.
  3. Call VerifyDomainBinding.
  4. Read GetDomainBinding until the binding reports its active status.
TaskSupported operations
Create and verifyCreateDomainBinding, VerifyDomainBinding
ReadGetDomainBinding, ListDomainBindings
RemoveDeleteDomainBinding

cloud_site_domain_binding is the Terraform resource for stable custom-domain configuration. Do not send DNS provider credentials to Sites.

Invalidate cache without implying ISR

PurgeCache and RevalidatePath are supported for static Sites. PurgeCache accepts at most 100 paths in one request. Use an optional deploymentId when the invalidation must target one immutable deployment. RevalidateTag remains planned until durable tag → path indexes land.

TaskSupported operation
Purge selected paths or a scoped static cachePurgeCache
Revalidate one pathRevalidatePath

These operations invalidate or refresh current static cache entries. They do not make durable ISR generation callable. ISR regeneration, request collapsing, framework SSR, and image optimization remain planned product behavior without a current operation recipe.

Normal promotion uses immutable deployment assets, so broad cache purges should not be required for a routine release.

Limits and errors

Limit per DeploymentValue
Static files20,000
Individual static file25 MiB
Total uncompressed static assets1 GiB
Worker bundle10 MiB compressed; reserved for a later runtime profile
Static redirects2,000
Response-header rules100
  • 400: the SiteBundle, digest, hostname, or request shape is invalid.
  • 401: authentication is missing or invalid.
  • 403: the policy denies the operation or hostname.
  • 404: the Site, Deployment, or DomainBinding does not exist.
  • 409: an idempotency token, Site revision, active-deployment deletion, or domain ownership conflict prevents the mutation.
  • 500: the service could not persist state or complete the edge operation.

An oversized file or bundle returns a validation error. Fix the input before retrying. Reuse the same clientToken for the same create or completion request.

Uploaded bundles must not contain path traversal, escaping symlinks, duplicate normalized paths, or files that do not match the declared digest.