Skip to content

Publishing content

ECMWF Sites supports multiple ways to publish and manage content.

Which one you should use depends on your needs.

For command-line workflows, use the Sites CLI. For Python integrations, use the Sites SDK.

Option A — Site API (direct HTTP integration)

Use the Site API when you want:

  • a scriptable workflow
  • CI/CD publishing
  • repeatable uploads/downloads
  • directory listings and archives

On public sites, unauthenticated readers go through a dedicated read-only endpoint — https://<domain>/<space>/<site>/s/api/v2/pub/files/... — which supports listing and downloading only. Everything else (uploads, deletes, signed URLs, token management) uses the main API paths like:

  • https://<domain>/<space>/<site>/s/api/v2/files/...

and needs an authenticated Site API request — a site administrator browser session, or a token.

See the cookbook:

Option B — WebDAV (optional)

Some sites may enable a WebDAV interface intended for content administration.

If enabled, it appears under a path like:

  • https://<domain>/<space>/<site>/s/dav/

This can be useful if you want to mount the site as a network drive or use File‑Manager tools.

See: 07-webdav-and-s3.md

Option C — S3 interface (optional)

Some sites may enable a lightweight S3‑compatible interface.

If enabled, it appears under a path like:

  • https://<domain>/<space>/<site>/s/s3/

This can be useful with S3 clients and tools.

See: 07-webdav-and-s3.md

Option D — Signed URLs (safe sharing)

If you need to share a link to a file without giving someone full access, you may be able to generate a signed URL.

Signed URLs are typically:

  • time‑limited
  • permission‑limited (e.g., read only)

See: Signed and session URLs for safe sharing

Publishing checklist

Before you publish:

  • Decide if the site should be private or public.
  • Ensure the right users/groups can view it.
  • Keep sensitive content under protected directories (see the .htpasswd behaviour in 03-managing-access.md).

After you publish:

  • verify the content in a private browser window
  • test downloads (and CORS behaviour if you have a web app)