BoxLatviaIzstrādātājiem
Pieprasīt piekļuvi
API atsauce

Lokācijas

Lokācija ir vieta, kur glabājas jūsu telpas. Klienti lokācijas atrod pēc rajona, adreses un ērtībām.

#Lokācijas objekts

NosaukumsTipsApraksts
iduuidBoxLatvia identifikators.
external_idstring | nullJūsu identifikators, ja esat to iestatījis.
namestringNosaukums.
descriptionstring | nullApraksts.
addressstring | nullAdrese.
districtstring | nullRajona kods.
district_namestring | nullRajona nosaukums attēlošanai.
latitudenumber | nullĢeogrāfiskais platums.
longitudenumber | nullĢeogrāfiskais garums.
box_countintegerCik telpu ir lokācijā.
featuresstring[]Ērtību kodi.
missingstring[]Kas vēl vajadzīgs, lai klienti redzētu lokāciju: jebkas no address, coordinates, district, features. Tukšs, ja viss ir aizpildīts.
created_atdatetimeISO 8601, UTC.
updated_atdatetimeISO 8601, UTC.
Piemērs
{
  "id": "9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3",
  "external_id": "WH-IMANTA",
  "name": "Imanta noliktava",
  "description": "Sausa, apsildāma noliktava ar 24/7 piekļuvi",
  "address": "Kurzemes prospekts 1, Rīga",
  "district": "riga-imanta",
  "district_name": "Rīga - Imanta",
  "latitude": 56.9496,
  "longitude": 24.0536,
  "box_count": 0,
  "features": [
    "24-7-piekluve",
    "apkure",
    "autostavvieta",
    "video-noverosana",
    "viedatslega"
  ],
  "missing": [],
  "created_at": "2026-11-07T09:30:12.418Z",
  "updated_at": "2026-11-07T09:30:12.418Z"
}

#Galapunkti

#Lokāciju saraksts

GET/v1/locationslocations:read

Jūsu lokācijas, vecākās pirmās, pa vienai lapai.

Vaicājuma parametri

NosaukumsTipsApraksts
limitintegerLapas lielums, no 1 līdz 200. Noklusējums ir 50.
cursorstringIepriekšējās lapas next_cursor. Neveidojiet kursorus paši.
external_idstringTikai lokācija ar šo jūsu identifikatoru.

Piemērs

Divas lapā

Pēdējā lapā ir "next_cursor": null.

curl "$API/v1/locations?limit=2" \
  -u "$CLIENT_ID:$CLIENT_SECRET"
200 OK
{
  "data": [
    {
      "id": "9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3",
      "external_id": "WH-IMANTA",
      "name": "Imanta noliktava",
      "description": "Sausa, apsildāma noliktava ar 24/7 piekļuvi",
      "address": "Kurzemes prospekts 1, Rīga",
      "district": "riga-imanta",
      "district_name": "Rīga - Imanta",
      "latitude": 56.9496,
      "longitude": 24.0536,
      "box_count": 0,
      "features": [
        "24-7-piekluve",
        "apkure",
        "autostavvieta",
        "video-noverosana",
        "viedatslega"
      ],
      "missing": [],
      "created_at": "2026-11-07T09:30:12.418Z",
      "updated_at": "2026-11-07T09:30:12.418Z"
    },
    {
      "id": "4758ace9-4962-4906-bb6c-736ec772cb37",
      "external_id": null,
      "name": "Teika noliktava",
      "description": null,
      "address": null,
      "district": null,
      "district_name": null,
      "latitude": null,
      "longitude": null,
      "box_count": 0,
      "features": [],
      "missing": [
        "address",
        "coordinates",
        "district",
        "features"
      ],
      "created_at": "2026-11-07T09:30:12.418Z",
      "updated_at": "2026-11-07T09:30:12.418Z"
    }
  ],
  "next_cursor": "WyIyMDI2LTExLTA2IDEwOjAwOjAwLjAwMDAwMyswMCIsImE5NmM5NmQzLWFiMjAtNDYxYi1hZmExLTUwYWQ3YzU2ZTQ3ZSJd"
}

Kļūdas

StatussKad
400cursor nav tāds, ko atgriezusi iepriekšēja atbilde.

#Izveidot lokāciju

POST/v1/locationslocations:write

Izveido lokāciju. Obligāts ir tikai name: pārējo varat aizpildīt pakāpeniski; missing parāda, kas vēl atlicis.

Vaicājuma parametri

NosaukumsTipsApraksts
validate_onlybooleantrue izpilda visas pārbaudes un parāda, kas notiktu, bet neko nesaglabā. Skatiet pārbaudi bez saglabāšanas.

Galvenes

NosaukumsTipsApraksts
Idempotency-KeystringNeobligāta. No 1 līdz 200 drukājamām rakstzīmēm. Atkārtots pieprasījums ar to pašu atslēgu atgriež sākotnējo rezultātu, nevis izveido dublikātu. Skatiet drošu atkārtošanu.

Pieprasījuma saturs

NosaukumsTipsApraksts
name obligātsstringLokācijas nosaukums, līdz 100 rakstzīmēm. Obligāts, veidojot lokāciju.
descriptionstring | nullLīdz 250 rakstzīmēm.
addressstring | nullAdrese, līdz 250 rakstzīmēm.
districtstring | nullRajona kods, skatiet Atsauces datus.
latitudenumber | nullNo −90 līdz 90. Sūtiet kopā ar longitude.
longitudenumber | nullNo −180 līdz 180. Sūtiet kopā ar latitude.
external_idstringJūsu pašu identifikators, līdz 100 rakstzīmēm, unikāls starp jūsu lokācijām. To var iestatīt vienu reizi, pēc tam tas vairs nemainās.
featuresstring[]Ērtību kodi, skatiet Atsauces datus. Aizvieto visu kopu; sūtiet [], lai notīrītu. Lai klienti lokāciju atrastu, vajadzīgas vismaz 5.

Piemēri

Pilnībā aizpildīta lokācija

Kopā ar jauno objektu tiek atgriezta Location galvene un ETag.

curl -X POST "$API/v1/locations" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: ebfa60c9-5887-4526-9615-2d2ebdd9a0ed" \
  -d '{
  "name": "Imanta noliktava",
  "external_id": "WH-IMANTA",
  "description": "Sausa, apsildāma noliktava ar 24/7 piekļuvi",
  "address": "Kurzemes prospekts 1, Rīga",
  "district": "riga-imanta",
  "latitude": 56.9496,
  "longitude": 24.0536,
  "features": [
    "24-7-piekluve",
    "apkure",
    "video-noverosana",
    "viedatslega",
    "autostavvieta"
  ]
}'
201 CreatedETag: W/"a15c541949287f3563009a45"Location: https://api.boxlatvia.lv/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3
{
  "id": "9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3",
  "external_id": "WH-IMANTA",
  "name": "Imanta noliktava",
  "description": "Sausa, apsildāma noliktava ar 24/7 piekļuvi",
  "address": "Kurzemes prospekts 1, Rīga",
  "district": "riga-imanta",
  "district_name": "Rīga - Imanta",
  "latitude": 56.9496,
  "longitude": 24.0536,
  "box_count": 0,
  "features": [
    "24-7-piekluve",
    "apkure",
    "autostavvieta",
    "video-noverosana",
    "viedatslega"
  ],
  "missing": [],
  "created_at": "2026-11-07T09:30:12.418Z",
  "updated_at": "2026-11-07T09:30:12.418Z"
}
Tikai nosaukums

Viss, kas vēl vajadzīgs, ir norādīts missing.

curl -X POST "$API/v1/locations" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Teika noliktava"
}'
201 CreatedETag: W/"ae068c091c4a3a43c47b4878"Location: https://api.boxlatvia.lv/v1/locations/4758ace9-4962-4906-bb6c-736ec772cb37
{
  "id": "4758ace9-4962-4906-bb6c-736ec772cb37",
  "external_id": null,
  "name": "Teika noliktava",
  "description": null,
  "address": null,
  "district": null,
  "district_name": null,
  "latitude": null,
  "longitude": null,
  "box_count": 0,
  "features": [],
  "missing": [
    "address",
    "coordinates",
    "district",
    "features"
  ],
  "created_at": "2026-11-07T09:30:12.418Z",
  "updated_at": "2026-11-07T09:30:12.418Z"
}
Pārbaude bez saglabāšanas

Tās pašas pārbaudes, nekas netiek saglabāts. Atbildē ir X-Validate-Only: true.

curl -X POST "$API/v1/locations?validate_only=true" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Mārupes noliktava",
  "district": "marupes-novads-pinki"
}'
200 OKX-Validate-Only: true
{
  "id": "bf18a79f-f762-4775-a17d-5ffa0623ebd7",
  "external_id": null,
  "name": "Mārupes noliktava",
  "description": null,
  "address": null,
  "district": "marupes-novads-pinki",
  "district_name": "Mārupes novads - Piņķi",
  "latitude": null,
  "longitude": null,
  "box_count": 0,
  "features": [],
  "missing": [
    "address",
    "coordinates",
    "features"
  ],
  "created_at": "2026-11-07T09:30:12.418Z",
  "updated_at": "2026-11-07T09:30:12.418Z"
}
Nederīgas vērtības

Visas problēmas tiek ziņotas uzreiz.

curl -X POST "$API/v1/locations" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "",
  "latitude": 95,
  "longitude": 24.0536
}'
422 Unprocessable Content
{
  "type": "https://api.boxlatvia.lv/problems/validation-failed",
  "title": "Validation failed",
  "status": 422,
  "detail": "One or more fields are invalid.",
  "request_id": "5f22a099-b84d-48eb-b078-6c5423a2175e",
  "errors": [
    {
      "field": "name",
      "message": "must not be empty"
    },
    {
      "field": "latitude",
      "message": "Number must be less than or equal to 90"
    }
  ]
}
Nezināmi kodi
curl -X POST "$API/v1/locations" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Centra noliktava",
  "district": "atlantis",
  "features": [
    "24-7-piekluve",
    "sauna"
  ]
}'
422 Unprocessable Content
{
  "type": "https://api.boxlatvia.lv/problems/validation-failed",
  "title": "Validation failed",
  "status": 422,
  "detail": "One or more fields are invalid.",
  "request_id": "a52756bd-76c1-4887-9100-0e46deb7de27",
  "errors": [
    {
      "field": "district",
      "message": "is not a known district code"
    },
    {
      "field": "features",
      "message": "unknown or inactive feature code(s): sauna"
    }
  ]
}
Jūsu identifikators jau tiek lietots

Atbildē esošā lokācija ir norādīta laukā existing_id.

curl -X POST "$API/v1/locations" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Cita noliktava",
  "external_id": "WH-IMANTA"
}'
409 Conflict
{
  "type": "https://api.boxlatvia.lv/problems/duplicate-external-id",
  "title": "Conflict",
  "status": 409,
  "detail": "A location with this external_id already exists.",
  "request_id": "8d45de36-bd83-4dcf-b271-0e25822b5a2b",
  "existing_id": "9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3",
  "existing": "https://api.boxlatvia.lv/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3"
}

Kļūdas

StatussKad
409external_id jau lieto cita jūsu lokācija.
422Kāda vērtība ir nederīga, vai rajona vai ērtības kods nav zināms.

#Iegūt lokāciju

GET/v1/locations/{id}locations:read

Viena lokācija. Atbildē ir ETag, kas vajadzīgs, lai to mainītu vai dzēstu.

Ceļa parametri

NosaukumsTipsApraksts
iduuidLokācijas BoxLatvia identifikators.

Piemērs

Iegūšana
curl "$API/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3" \
  -u "$CLIENT_ID:$CLIENT_SECRET"
200 OKETag: W/"a15c541949287f3563009a45"
{
  "id": "9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3",
  "external_id": "WH-IMANTA",
  "name": "Imanta noliktava",
  "description": "Sausa, apsildāma noliktava ar 24/7 piekļuvi",
  "address": "Kurzemes prospekts 1, Rīga",
  "district": "riga-imanta",
  "district_name": "Rīga - Imanta",
  "latitude": 56.9496,
  "longitude": 24.0536,
  "box_count": 0,
  "features": [
    "24-7-piekluve",
    "apkure",
    "autostavvieta",
    "video-noverosana",
    "viedatslega"
  ],
  "missing": [],
  "created_at": "2026-11-07T09:30:12.418Z",
  "updated_at": "2026-11-07T09:30:12.418Z"
}

Kļūdas

StatussKad
404Jums nav šādas lokācijas.

#Atjaunināt lokāciju

PATCH/v1/locations/{id}locations:write

Maina tikai tos laukus, ko nosūtāt. external_id var iestatīt vienu reizi, pēc tam tas nemainās.

Ceļa parametri

NosaukumsTipsApraksts
iduuidLokācijas BoxLatvia identifikators.

Vaicājuma parametri

NosaukumsTipsApraksts
validate_onlybooleantrue izpilda visas pārbaudes un parāda, kas notiktu, bet neko nesaglabā. Skatiet pārbaudi bez saglabāšanas.

Galvenes

NosaukumsTipsApraksts
If-Match obligātsstringETag no iepriekšēja GET, tieši tādā veidā, kā saņemts. 428, ja trūkst, 412, ja objekts pa to laiku mainījies. Skatiet nosacītus atjauninājumus.

Pieprasījuma saturs (jebkurš no laukiem)

NosaukumsTipsApraksts
name obligātsstringLokācijas nosaukums, līdz 100 rakstzīmēm. Obligāts, veidojot lokāciju.
descriptionstring | nullLīdz 250 rakstzīmēm.
addressstring | nullAdrese, līdz 250 rakstzīmēm.
districtstring | nullRajona kods, skatiet Atsauces datus.
latitudenumber | nullNo −90 līdz 90. Sūtiet kopā ar longitude.
longitudenumber | nullNo −180 līdz 180. Sūtiet kopā ar latitude.
external_idstringJūsu pašu identifikators, līdz 100 rakstzīmēm, unikāls starp jūsu lokācijām. To var iestatīt vienu reizi, pēc tam tas vairs nemainās.
featuresstring[]Ērtību kodi, skatiet Atsauces datus. Aizvieto visu kopu; sūtiet [], lai notīrītu. Lai klienti lokāciju atrastu, vajadzīgas vismaz 5.

Piemēri

Atjaunināt adresi un aprakstu
curl -X PATCH "$API/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -H "If-Match: W/\"a15c541949287f3563009a45\"" \
  -d '{
  "address": "Kurzemes prospekts 3, Rīga",
  "description": "Sausa, apsildāma noliktava ar uzbrauktuvi"
}'
200 OKETag: W/"690d868c2dd969cc637a8941"
{
  "id": "9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3",
  "external_id": "WH-IMANTA",
  "name": "Imanta noliktava",
  "description": "Sausa, apsildāma noliktava ar uzbrauktuvi",
  "address": "Kurzemes prospekts 3, Rīga",
  "district": "riga-imanta",
  "district_name": "Rīga - Imanta",
  "latitude": 56.9496,
  "longitude": 24.0536,
  "box_count": 0,
  "features": [
    "24-7-piekluve",
    "apkure",
    "autostavvieta",
    "video-noverosana",
    "viedatslega"
  ],
  "missing": [],
  "created_at": "2026-11-07T09:30:12.418Z",
  "updated_at": "2026-11-07T14:05:41.092Z"
}
Bez If-Match
curl -X PATCH "$API/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "address": "Kurzemes prospekts 3, Rīga"
}'
428 Precondition Required
{
  "type": "https://api.boxlatvia.lv/problems/precondition-required",
  "title": "Precondition required",
  "status": 428,
  "detail": "Send the current version in an If-Match header (the ETag from a GET of this resource).",
  "request_id": "f61a59eb-da5b-4d6f-8308-caa9ddd62ba6"
}
Ar novecojušu ETag

Kāds lokāciju mainīja pēc tam, kad to nolasījāt. Nolasiet to vēlreiz un mēģiniet atkārtoti.

curl -X PATCH "$API/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -H "If-Match: W/\"a15c541949287f3563009a45\"" \
  -d '{
  "address": "Cita adrese"
}'
412 Precondition Failed
{
  "type": "https://api.boxlatvia.lv/problems/precondition-failed",
  "title": "Precondition failed",
  "status": 412,
  "detail": "The resource changed since you read it. GET it again and retry with the new ETag.",
  "request_id": "98ae51e1-6505-43f4-8589-b524d2dd65c2"
}

Kļūdas

StatussKad
404Jums nav šādas lokācijas.
412Lokācija mainīta pēc tam, kad to nolasījāt.
422Kāda vērtība ir nederīga, vai external_id jau bija iestatīts.
428Trūkst If-Match.

#Izveidot vai atjaunināt pēc jūsu identifikatora

PUT/v1/locations/by-external-id/{external_id}locations:write

Izveido lokāciju, ja jūsu identifikators ir jauns, citādi atjaunina nosūtītos laukus. If-Match nav vajadzīgs: paredzēts datu plūsmām, kurām jābūt noteicošām.

Ceļa parametri

NosaukumsTipsApraksts
external_idstringJūsu identifikators lokācijai.

Vaicājuma parametri

NosaukumsTipsApraksts
validate_onlybooleantrue izpilda visas pārbaudes un parāda, kas notiktu, bet neko nesaglabā. Skatiet pārbaudi bez saglabāšanas.

Pieprasījuma saturs

NosaukumsTipsApraksts
name obligātsstringLokācijas nosaukums, līdz 100 rakstzīmēm. Obligāts, veidojot lokāciju.
descriptionstring | nullLīdz 250 rakstzīmēm.
addressstring | nullAdrese, līdz 250 rakstzīmēm.
districtstring | nullRajona kods, skatiet Atsauces datus.
latitudenumber | nullNo −90 līdz 90. Sūtiet kopā ar longitude.
longitudenumber | nullNo −180 līdz 180. Sūtiet kopā ar latitude.
external_idstringJūsu pašu identifikators, līdz 100 rakstzīmēm, unikāls starp jūsu lokācijām. To var iestatīt vienu reizi, pēc tam tas vairs nemainās.
featuresstring[]Ērtību kodi, skatiet Atsauces datus. Aizvieto visu kopu; sūtiet [], lai notīrītu. Lai klienti lokāciju atrastu, vajadzīgas vismaz 5.

Piemēri

Pirmais izsaukums: izveidota (201)

Jaunai lokācijai vajadzīgs name.

curl -X PUT "$API/v1/locations/by-external-id/WH-PINKI" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Piņķu noliktava",
  "address": "Priedaines iela 19, Piņķi",
  "district": "marupes-novads-pinki"
}'
201 CreatedETag: W/"5d85e2db7390f6d8fe61025f"Location: https://api.boxlatvia.lv/v1/locations/154ab2ad-0419-4cb2-a214-cc8d5e8b032c
{
  "id": "154ab2ad-0419-4cb2-a214-cc8d5e8b032c",
  "external_id": "WH-PINKI",
  "name": "Piņķu noliktava",
  "description": null,
  "address": "Priedaines iela 19, Piņķi",
  "district": "marupes-novads-pinki",
  "district_name": "Mārupes novads - Piņķi",
  "latitude": null,
  "longitude": null,
  "box_count": 0,
  "features": [],
  "missing": [
    "coordinates",
    "features"
  ],
  "created_at": "2026-11-07T09:30:12.418Z",
  "updated_at": "2026-11-07T09:30:12.418Z"
}
Otrais izsaukums: atjaunināta (200)

Mainās tikai nosūtītie lauki.

curl -X PUT "$API/v1/locations/by-external-id/WH-PINKI" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "description": "Jauna noliktava ar uzbrauktuvi"
}'
200 OKETag: W/"3af8176ea6ccd30a1434aa5d"
{
  "id": "154ab2ad-0419-4cb2-a214-cc8d5e8b032c",
  "external_id": "WH-PINKI",
  "name": "Piņķu noliktava",
  "description": "Jauna noliktava ar uzbrauktuvi",
  "address": "Priedaines iela 19, Piņķi",
  "district": "marupes-novads-pinki",
  "district_name": "Mārupes novads - Piņķi",
  "latitude": null,
  "longitude": null,
  "box_count": 0,
  "features": [],
  "missing": [
    "coordinates",
    "features"
  ],
  "created_at": "2026-11-07T09:30:12.418Z",
  "updated_at": "2026-11-07T14:05:41.092Z"
}

Kļūdas

StatussKad
422Kāda vērtība ir nederīga, vai saturā ir cits external_id.

#Dzēst lokāciju

DELETE/v1/locations/{id}locations:write

Dzēš lokāciju un tās attēlus. Tiek atteikts, kamēr lokācijā vēl ir telpas.

Ceļa parametri

NosaukumsTipsApraksts
iduuidLokācijas BoxLatvia identifikators.

Vaicājuma parametri

NosaukumsTipsApraksts
validate_onlybooleantrue izpilda visas pārbaudes un parāda, kas notiktu, bet neko nesaglabā. Skatiet pārbaudi bez saglabāšanas.

Galvenes

NosaukumsTipsApraksts
If-Match obligātsstringETag no iepriekšēja GET, tieši tādā veidā, kā saņemts. 428, ja trūkst, 412, ja objekts pa to laiku mainījies. Skatiet nosacītus atjauninājumus.

Piemēri

Izdzēsta
curl -X DELETE "$API/v1/locations/2a8487f7-145e-40c0-ac01-c918a2f7c759" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -H "If-Match: W/\"d7761dc4eb50ce8a08ae74d4\""
204 No Content
Atbildei nav satura
Vēl ir telpas
curl -X DELETE "$API/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -H "If-Match: W/\"690d868c2dd969cc637a8941\""
409 Conflict
{
  "type": "https://api.boxlatvia.lv/problems/location-has-boxes",
  "title": "Conflict",
  "status": 409,
  "detail": "This location still has 2 box(es). Delete or move them first.",
  "request_id": "fa8d71d9-3e96-420a-b803-839b592d6a56",
  "box_count": 2
}

Kļūdas

StatussKad
404Jums nav šādas lokācijas.
409Lokācijā vēl ir telpas: vispirms izdzēsiet vai pārvietojiet tās.
412Lokācija mainīta pēc tam, kad to nolasījāt.
428Trūkst If-Match.