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
.htpasswdbehaviour in03-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)