DREXO

Public API

OpenAPI reference for the Drexo API — preview of the format of upcoming endpoints.

Drexo API

Drexo will progressively expose a public API so third-party tools can integrate with the platform — data extraction, outbound alerting, automated share management, and so on.

Status — no endpoint published in production yet. The OpenAPI spec below is a preview of the format we'll ship: don't bother with the try-it-out button until v1.0 is announced in the release notes.

Authentication

The API will reuse the same Supabase JWTs as the web interface:

  • Authorization: Bearer <token> header.
  • Tokens are minted via the browser session after sign-in (Microsoft / Google SSO, magic link, or password).
  • Every call inherits the RLS scope of the user who minted the token — no service_role access is exposed publicly.

Preview: read a device

The endpoint below illustrates what the documentation of a real endpoint will look like once we ship it: description, parameters, responses, examples per status code, auto-generated TypeScript schema, and a Try-it-out panel to call the API from the browser.

GET
/api/v0/devices/{id}

Authorization

bearerAuth
AuthorizationBearer <token>

Supabase access token obtained through the same login flow as the web app (Microsoft / Google SSO, magic link, or password). Every call inherits the caller's RLS scope — service-role tokens are never accepted on this surface.

In: header

Path Parameters

id*string

The device's UUID. You can grab one from the URL bar on /devices/<id> in the web app.

Formatuuid

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/api/v0/devices/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{
  "id": "8b3a52f0-9421-44b3-90dc-1c0f0b9e8b41",
  "slug": "I25VA054179",
  "name": "Compteur principal — Villa Estate",
  "type": "water_meter",
  "owner_tenant_id": "d7e2a4f0-1111-4dde-9b21-aa11bbcc44ee",
  "created_at": "2026-03-04T09:12:48Z"
}
{
  "error": "unauthenticated",
  "message": "Token manquant ou invalide."
}
{
  "error": "device_not_found",
  "message": "Cet appareil n'existe pas ou vous n'y avez pas accès."
}

Versioning

The API will follow semver: v0 is the preview namespace (may change without notice). Once we stabilise, endpoints will land under v1 and any breaking change will bump the major version (with a public ADR documenting the why).

Stay in the loop

Follow the release notes — every new endpoint will be announced there, with a machine-readable changelog on RSS and JSON Feed.