Skip to main content

Identifiers

Every object in Attlaz has an id: a 27-character string of letters and digits.

{ "id": "3FsXOYKUSzzVtk2WtjW43fhHo3B", "name": "Production" }

Ids are unique across the whole platform, so an id you hold is enough to identify an object — you never need to know which project or environment it came from.

Ids are time-ordered​

Ids begin with an encoded timestamp, so sorting ids alphabetically gives you creation order. The newest object has the highest id.

This is what makes cursor pagination stable: paging forward from an id walks steadily backwards through time, even while new objects are being created.

Prefixed ids​

Some fields hold a prefixed identifier — a three-letter type code, an underscore, then the 27-character id. That makes 31 characters:

wrk_0xLDzy4nXprIl7QrMxTfmrkMrvw workspace
flw_0iFyTMyAouzgjpuF6aqRxiLWbPs flow
flr_2YtikgwJy6pRAUKfFHezMsGbjev flow run

The prefix is used where a field can refer to more than one kind of object, so the value alone would be ambiguous. The clearest example is a configuration scope, which may be a project, an environment or a flow:

curl "https://api.attlaz.com/1.13/configurations/prj_0iFyTMyAouzgjpuF6aqRxiLWbPs?path=database.host" \
-H "Authorization: Bearer <access_token>"

Two rules cover everything else:

  • In responses, ids are never prefixed. An id field is always the bare 27 characters.
  • In requests, either form is accepted. Where an endpoint takes an id, passing the prefixed form works too — the prefix is ignored. It is only required where the type would otherwise be ambiguous, as above.

Validation​

If you need to check an id before sending it, the bare form is 27 characters of A–Z, a–z and 0–9; the prefixed form is three lowercase letters, an underscore, then those 27 characters. A malformed id returns 400 Bad Request.