API Reference
API Reference/Apps/Tlalli

Tlalli “earth”

org.poca.tlalli

Land and nature field guide: plants, animals, minerals, and places, with offline trails, maps, and field audio. Ships without the INTERNET permission.

PAC directory: nature/types: plant, animal, mineral, locationfully offline

PAC surface at a glance

UsesDetail
/apps/tlalliSpecimen catalog.
/config/tlalliProvisioning gate only (enabled); config_json is captured but not yet consumed.
/indextribe_name powers the home header (“Land of the …”); pac_version invalidates the map tile cache.
/file/{path} and /files/{dir}All media, manifests, trails, and tiles.
/featuredNot queried; featuring is filtered client-side from the featured column.
Deep linkspoca://tlalli/{type}/{card_id} (the type segment is cosmetic; resolution is by card_id) and poca://tlalli/hike/active.

Card types

Four wire types map to the app’s kingdoms: plant (flora), animal (fauna), mineral (geology), location (places). Rows with any other type are dropped. Minerals get their own catalogue treatment; only locations with coordinates offer directions.

Catalog row contract

Required: card_id, type, title; unusable rows are skipped silently. Optional: description, image_uri / image / image_thumbnail / image_hero, label (scientific name), locale, featured (“1” or “true”), updated_at, card_json_path, content_dir_path. Inside extensions_json:

KeyShapeUsed for
coordinates“lat,lng”, range-validatedPuts the specimen on the map; enables directions for locations.
region / habitatstringDetail rows; both are searchable.
traditional_usesarray or comma stringDetail list.
seed_colorhex colorAccent tinting.
anything elsestring mapPreserved in an extras map, nothing lost.

Search matches title, label, region, and habitat (case- and diacritic-insensitive), so fill those in for discoverability.

Detail manifest (card.json)

sections[] {heading, body} for prose, and recordings[] for field audio: title, file (relative to content_dir_path), optional waveform sidecar (a JSON array of ~120 floats 0..1; a deterministic placeholder renders when absent), recorded_at, recorded_location (“lat,lng”), recorded_place, duration_seconds. A gallery array is parsed but not rendered yet; don’t rely on it displaying. Any card type may carry audio.

Files on the PAC

PathPurpose
nature/{slug}/cover.jpgCard cover.
nature/{slug}/card.jsonDetail manifest.
nature/{slug}/audio/…Field recordings (+ optional .wave.json sidecars).
nature/trails/{dir}/trail.json + cover.jpgTrail definitions, discovered by directory listing.
nature/map/map_manifest.jsonRegional tile manifest.
nature/map/region.pmtilesHigh-detail regional tiles (SHA-256 verified; re-fetched when pac_version changes). The continent basemap ships inside the APK.

trail.json: requires trail_id, name, and a GeoJSON LineString route with at least two [lng,lat] points; optional difficulty (easy | moderate | hard), length_m, est_duration_min, elevation_gain_m, description, region, locale, and lenient waypoints[] {id, order, name, card_id, lat, lng, radius_m (40), snippet}.

map_manifest.json: schema_version, format (pmtiles), file (region.pmtiles), name, bounds [W,S,E,N], min_zoom (7), max_zoom (15), size_bytes, sha256, version, attribution.

Last updated: July 2026
PreviousOllin