What a STATIC client can actually fetch, by anonymous HTTPS HEAD
Source:R/app_bundle.R
app_capabilities.RdNever copied from manifest$capabilities. v7 and v7b both advertise
cell_species_list = TRUE because the server-side apps can read a cell_model
that lives only on the server; S3 holds tables/ and manifest.json for those
releases and nothing else. A manifest describes the SERVER's tables; this
describes the bucket.
Usage
app_capabilities(
ver,
base = atlas_base_url(),
sample = list(),
timeout = 20,
cell_tile = NULL,
cell_model_tile = NULL
)Arguments
- ver
version label
- base
atlas base URL from
atlas_base_url()- sample
named list of
capability -> key relative to {base}/{ver}/, overriding the defaults (includingcell/cell_modeldirectly, if a caller needs a shape other thantile={n}/data_0.parquet)- timeout
seconds per probe
- cell_tile
the real first
app/cell/tile={n}/this release actually wrote, orNULL(default) to probe the never-realtile=0placeholder- cell_model_tile
the real first
serve/cell_model/tile={n}/this release actually wrote, orNULL(default) for thetile=0placeholder
Details
A capability is TRUE only on a 200 (or 206). Anything else — 403, 404, a redirect, a timeout — is FALSE, and the probed URL and status are returned beside it so a FALSE can be explained rather than guessed at.
cell and cell_model default to tile=0 — a placeholder that no real
release ever publishes (usa05 releases, v1-v7b, start at tile=19;
global05, v8+, starts at tile=436), so an unhinted call 403s on both
every time and under-reports them FALSE even when the tiles genuinely
exist. Pass cell_tile/cell_model_tile — the REAL first tile number a
build actually wrote (there is no way to discover this from the bucket
alone: anonymous ListObjectsV2 is denied, confirmed against the real
bucket 2026-09-26) — whenever the caller has one, e.g. from
app_bundle_build()'s own written cell/tile=*/ directory or
app_bundle_cell_model_plan()$keys[1].