Utviklere

Paginering

Sidestørrelse, cursorer, sorteringen, henting av endringer, og hvordan tidsstempler, null og enum-verdier ser ut.

Oversikt

En liste gir elementene sine én side om gangen. Du velger sidestørrelsen med limit og følger next_cursor til neste side. Alle lister i versjon 1 virker slik.

Sidestørrelse

En liste gir 25 elementer hvis du ikke setter limit, som tar 1 til 100. Alle andre verdier gir invalid-request.

curl "https://attia.app/api/v1/jobs?limit=100" \  -H "Authorization: Bearer $ATTIA_API_KEY"

Neste side

Finnes det flere elementer, inneholder next_cursor en streng. Send den tilbake som cursor for å få neste side, og stopp når next_cursor er null.

curl "https://attia.app/api/v1/jobs?limit=2&cursor=eyJ1IjoiMjAyNi0xMC0wMlQwODoxNTozMC40ODI5MTNaIiwiaSI6IjAxOTJmM2ExLTdjNDQtN2IxZS05YTUwLTNmMWQyYzZlOGEwMiJ9" \  -H "Authorization: Bearer $ATTIA_API_KEY"

På siste side ser svaret slik ut.

{  "data": [    {      "id": "0192f3a1-8d15-7f2a-b6c3-4e2a1d9f0b03",      "title": "Lagermedarbeider",      "slug": "lagermedarbeider",      "status": "live",      "publish_status": "published",      "team_id": "0192f39f-11aa-7c3e-b2d4-9e8f7a6b5c4d",      "employment_type": "full_time",      "contract_type": "seasonal",      "workplace_type": "onsite",      "locations": ["Eksempelvik"],      "positions_count": 3,      "application_deadline": "2026-10-31",      "published_at": "2026-10-03T06:00:00.000000Z",      "closed_at": null,      "archived_at": null,      "created_at": "2026-10-02T14:20:11.903214Z",      "updated_at": "2026-10-03T06:00:00.271845Z"    }  ],  "next_cursor": null}

Behandle en cursor som en ugjennomsiktig streng. Ikke bygg en selv, og ikke endre den. En cursor som API-et ikke har gitt deg, får invalid-request med meldingen «Not a cursor this API returned.»

Sortering og samtidige endringer

Alle lister sorterer etter updated_at, eldste først, og deretter etter id. Den rekkefølgen holder en cursor stabil mens folk redigerer.

Et element som blir redigert mens du leser, flytter seg bak cursoren, og du kan få det igjen på en senere side. Regn med å få et element to ganger av og til, og bruk id som nøkkel. En gjennomgang kan likevel gå glipp av en endring som lagres mens du leser, så hent endringer jevnlig slik neste avsnitt beskriver.

Hent endringer jevnlig

updated_since gir bare elementer som er oppdatert på eller etter et tidspunkt. Grensen er inkluderende, så et element oppdatert på nøyaktig det tidspunktet kommer med.

Vil du hente endringer jevnlig, tar du vare på den største updated_at du har sett og sender et tidspunkt fem minutter før den som updated_since neste gang. En endring får sin updated_at når lagringen starter. En lagring som blir ferdig etter at du hentet, kan derfor ha et tidspunkt som er eldre enn et du allerede har lest. De fem minuttene med overlapp er der for å fange opp slike endringer. Du får også elementer du allerede har, så fjern gjentakelsene etter id. Med 2026-10-01T09:42:10.118305Z som den største blir kallet slik.

curl "https://attia.app/api/v1/jobs?updated_since=2026-10-01T09:37:10.118305Z" \  -H "Authorization: Bearer $ATTIA_API_KEY"

Du kan kombinere updated_since med cursor og limit når én henting gir mer enn en side.

Tidsstempler, null og enum-verdier

Et tidsstempel er en streng i UTC, i RFC 3339-form med mikrosekunder og Z, for eksempel 2026-10-02T08:15:30.482913Z. Et felt som holder en kalenderdag uten klokkeslett, som application_deadline, er YYYY-MM-DD.

Et tidsstempel du sender, som updated_since, trenger Z eller en tidsforskyvning. Skriv + i en tidsforskyvning som %2B, for en + alene betyr mellomrom i en URL.

curl "https://attia.app/api/v1/jobs?updated_since=2026-10-01T02:00:00%2B02:00" \  -H "Authorization: Bearer $ATTIA_API_KEY"

Et felt uten verdi er med i svaret og er null. API-et utelater aldri et felt, så sjekk for null og ikke for at nøkkelen mangler. En tom liste er [].

En enum-verdi er en streng med små bokstaver, som live eller full_time. Versjon 1 kan legge til en verdi, så koden din må tåle en verdi den ikke kjenner.