Skip to main content

FAQ & Troubleshooting

Grouped by persona plus cross-cutting topics. Use ⌘K in the navbar to search the whole docs site if the answer isn't here yet.

General​

What is AgriFoodData?​

An open, vendor-neutral data platform for digital agriculture. It is the reference implementation of the ITU/FAO reference architecture adopted by ITU Study Group 20 in July 2024. See Why AgriFoodData.

What is the ITU?​

The International Telecommunication Union — a UN specialised agency for information and communication technologies. ITU Study Group 20 adopted the ITU/FAO reference architecture this platform implements. See Why · The UN Standard.

Is the platform free / open source?​

Yes. See Why · Open Source & Vendor-Neutral.


For AI Service Developers​

How does service registration work?​

Service developers submit a self-description and an image; the platform assigns a UUID, queues, and a JWT/certificate. The JWT/certificate must be embedded in the service to authenticate against the queues. Today this is handled per request by the maintainers; a self-service flow is on the roadmap. See Submit Your Service.

What happens if my service does not present a valid JWT/certificate?​

Authentication against the messaging queues fails, so the service never receives requests. Only authorised services can interact with the platform.

How are service requests processed?​

A commission lands on the service's queue. A worker retrieves it, acknowledges, processes it, emits heartbeats, and writes a final result. See Concepts · Service Registry.

What is in a heartbeat signal?​

  • Completion percentage
  • Current processing step
  • Estimated remaining time
  • Detailed error messages on failure

My service receives no heartbeats. What could be wrong?​

  • Authentication. Check that the JWT/certificate is embedded and valid.
  • Queue config. Check the service is listening to the correct queue.
  • Network. Verify connectivity to the broker.
  • Service errors. Inspect logs for unhandled exceptions.

Docker build fails — not enough space.​

  • Docker Desktop (macOS/Windows). Settings → Disk image location → move to a drive with more space.
  • Linux. Stop dockerd, move the Docker root to a larger volume, update the daemon config, restart. See the Docker forums.

For Sensor Integrators​

Which transport should I use?​

MQTT for high-frequency live streams. REST for batch uploads and manual edits. See Concepts · Sensor Things API.

Set the Datastream's FeatureOfInterest to the Region ID from the Farm API. From then on, every observation is spatially grounded on that region.


For Data App Developers​

How do I map an external schema to the AgriFoodData data model?​

Maintain an explicit translation table in the connector repo and commit it alongside the code. Use AgroVoc URIs for crops, soil, and inputs to keep the mapping inspectable. See Build · Data Apps.


For Frontend Developers​

Which auth flow should the browser use?​

PKCE with the platform's OpenID Connect identity provider. Use short-lived access tokens and refresh in the background. See API Reference · IAM.

Should I use /collections/... or /api/v2/collections/...?​

Prefer /api/v2/*. The V2 surface has stable coordinate handling, TileJSON 3.0, full CQL2, sortby/facetby and the aggregations endpoints. The bare paths remain for older clients. See API Reference · Spatio-Temporal.

How do I display NDVI on a MapLibre or Leaflet map?​

Fetch the TileJSON and add it as a source:

GET /api/v2/collections/{id}/tiles/WebMercatorQuad/tilejson.json?layers=NDVI

Or use the auto-generated MapLibre style: GET /collections/{id}/style.


Messaging & storage​

What messaging technology does the platform use?​

RabbitMQ for service commissioning and heartbeats; MQTT for sensor data ingest.

Why messaging queues?​

They enable asynchronous, resilient communication between services and the platform — producers (the platform on behalf of users) emit messages, consumers (service workers) process them. Queues survive worker restarts, which is essential for long-running AI workloads.

What about S3 storage?​

S3 is the canonical store for inputs and outputs. Each service request includes a JWT-authenticated URL to the relevant bucket; outputs are written back to S3 and then linked into the digital farm twin as a Layer or as Activity outputs. You can use any S3-compatible store (MinIO, AWS, GCS via interop).

How is data in S3 secured?​

  • JWT-authenticated URLs per request.
  • Encryption in transit (TLS) and at rest (volume encryption).
  • Bucket policies — least-privilege per service.

Verifying my setup​

How can I verify that my service is correctly registered?​

  • Check the service catalogue for the right UUID and queues.
  • Authenticate against the queue with your JWT.
  • Look for successful-registration log lines and absence of auth errors.