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 objektsNosaukums Tips Apraksts iduuid BoxLatvia identifikators. external_idstring | null Jūsu identifikators, ja esat to iestatījis. namestring Nosaukums. descriptionstring | null Apraksts. addressstring | null Adrese. districtstring | null Rajona kods. district_namestring | null Rajona nosaukums attēlošanai. latitudenumber | null Ģeogrāfiskais platums. longitudenumber | null Ģeogrāfiskais garums. box_countinteger Cik 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_atdatetime ISO 8601, UTC. updated_atdatetime ISO 8601, UTC.
Piemērs
Kopēt {
"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 Nosaukums Tips Apraksts limitinteger Lapas lielums, no 1 līdz 200. Noklusējums ir 50. cursorstring Iepriekšējās lapas next_cursor. Neveidojiet kursorus paši. external_idstring Tikai lokācija ar šo jūsu identifikatoru.
Piemērs
Divas lapā
Pēdējā lapā ir "next_cursor": null.
cURL JavaScript Python
Kopēt curl "$API/v1/locations?limit=2" \
-u "$CLIENT_ID:$CLIENT_SECRET"
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations?limit=2` , {
headers: { Authorization: auth },
});
console.log(res.status, await res.json());
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.get(
f"{API}/v1/locations?limit=2" ,
auth=(CLIENT_ID, CLIENT_SECRET),
)
print (r.status_code, r.json())
200 OK
Kopēt {
"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 Statuss Kad 400 cursor 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 Nosaukums Tips Apraksts validate_onlyboolean true izpilda visas pārbaudes un parāda, kas notiktu, bet neko nesaglabā. Skatiet pārbaudi bez saglabāšanas .
Galvenes Nosaukums Tips Apraksts Idempotency-Keystring Neobligā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 Nosaukums Tips Apraksts name obligāts string Lokācijas nosaukums, līdz 100 rakstzīmēm. Obligāts, veidojot lokāciju. descriptionstring | null Līdz 250 rakstzīmēm. addressstring | null Adrese, līdz 250 rakstzīmēm. districtstring | null Rajona kods, skatiet Atsauces datus . latitudenumber | null No −90 līdz 90. Sūtiet kopā ar longitude. longitudenumber | null No −180 līdz 180. Sūtiet kopā ar latitude. external_idstring Jū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 JavaScript Python
Kopēt 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"
]
}'
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations` , {
method: "POST" ,
headers: { Authorization: auth, "Content-Type" : "application/json" , "Idempotency-Key" : "ebfa60c9-5887-4526-9615-2d2ebdd9a0ed" },
body: JSON.stringify({
"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"
]
}),
});
console.log(res.status, await res.json());
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.post(
f"{API}/v1/locations" ,
auth=(CLIENT_ID, CLIENT_SECRET),
headers={"Idempotency-Key" : "ebfa60c9-5887-4526-9615-2d2ebdd9a0ed" },
json={
"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" ,
],
},
)
print (r.status_code, r.json())
201 Created ETag: W/"a15c541949287f3563009a45"Location: https://api.boxlatvia.lv/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3
Kopēt {
"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 JavaScript Python
Kopēt curl -X POST "$API/v1/locations" \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-H "Content-Type: application/json" \
-d '{
"name": "Teika noliktava"
}'
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations` , {
method: "POST" ,
headers: { Authorization: auth, "Content-Type" : "application/json" },
body: JSON.stringify({
"name" : "Teika noliktava"
}),
});
console.log(res.status, await res.json());
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.post(
f"{API}/v1/locations" ,
auth=(CLIENT_ID, CLIENT_SECRET),
json={
"name" : "Teika noliktava" ,
},
)
print (r.status_code, r.json())
201 Created ETag: W/"ae068c091c4a3a43c47b4878"Location: https://api.boxlatvia.lv/v1/locations/4758ace9-4962-4906-bb6c-736ec772cb37
Kopēt {
"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 JavaScript Python
Kopēt 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"
}'
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations?validate_only=true` , {
method: "POST" ,
headers: { Authorization: auth, "Content-Type" : "application/json" },
body: JSON.stringify({
"name" : "Mārupes noliktava" ,
"district" : "marupes-novads-pinki"
}),
});
console.log(res.status, await res.json());
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.post(
f"{API}/v1/locations?validate_only=true" ,
auth=(CLIENT_ID, CLIENT_SECRET),
json={
"name" : "Mārupes noliktava" ,
"district" : "marupes-novads-pinki" ,
},
)
print (r.status_code, r.json())
200 OK X-Validate-Only: true
Kopēt {
"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 JavaScript Python
Kopēt curl -X POST "$API/v1/locations" \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-H "Content-Type: application/json" \
-d '{
"name": "",
"latitude": 95,
"longitude": 24.0536
}'
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations` , {
method: "POST" ,
headers: { Authorization: auth, "Content-Type" : "application/json" },
body: JSON.stringify({
"name" : "" ,
"latitude" : 95,
"longitude" : 24.0536
}),
});
console.log(res.status, await res.json());
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.post(
f"{API}/v1/locations" ,
auth=(CLIENT_ID, CLIENT_SECRET),
json={
"name" : "" ,
"latitude" : 95,
"longitude" : 24.0536,
},
)
print (r.status_code, r.json())
422 Unprocessable Content
Kopēt {
"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 JavaScript Python
Kopēt 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"
]
}'
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations` , {
method: "POST" ,
headers: { Authorization: auth, "Content-Type" : "application/json" },
body: JSON.stringify({
"name" : "Centra noliktava" ,
"district" : "atlantis" ,
"features" : [
"24-7-piekluve" ,
"sauna"
]
}),
});
console.log(res.status, await res.json());
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.post(
f"{API}/v1/locations" ,
auth=(CLIENT_ID, CLIENT_SECRET),
json={
"name" : "Centra noliktava" ,
"district" : "atlantis" ,
"features" : [
"24-7-piekluve" ,
"sauna" ,
],
},
)
print (r.status_code, r.json())
422 Unprocessable Content
Kopēt {
"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 JavaScript Python
Kopēt curl -X POST "$API/v1/locations" \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-H "Content-Type: application/json" \
-d '{
"name": "Cita noliktava",
"external_id": "WH-IMANTA"
}'
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations` , {
method: "POST" ,
headers: { Authorization: auth, "Content-Type" : "application/json" },
body: JSON.stringify({
"name" : "Cita noliktava" ,
"external_id" : "WH-IMANTA"
}),
});
console.log(res.status, await res.json());
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.post(
f"{API}/v1/locations" ,
auth=(CLIENT_ID, CLIENT_SECRET),
json={
"name" : "Cita noliktava" ,
"external_id" : "WH-IMANTA" ,
},
)
print (r.status_code, r.json())
409 Conflict
Kopēt {
"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 Statuss Kad 409 external_id jau lieto cita jūsu lokācija.422 Kā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 Nosaukums Tips Apraksts iduuid Lokācijas BoxLatvia identifikators.
Piemērs
Iegūšana
cURL JavaScript Python
Kopēt curl "$API/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3" \
-u "$CLIENT_ID:$CLIENT_SECRET"
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3` , {
headers: { Authorization: auth },
});
console.log(res.status, await res.json());
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.get(
f"{API}/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3" ,
auth=(CLIENT_ID, CLIENT_SECRET),
)
print (r.status_code, r.json())
200 OK ETag: W/"a15c541949287f3563009a45"
Kopēt {
"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 Statuss Kad 404 Jums 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 Nosaukums Tips Apraksts iduuid Lokācijas BoxLatvia identifikators.
Vaicājuma parametri Nosaukums Tips Apraksts validate_onlyboolean true izpilda visas pārbaudes un parāda, kas notiktu, bet neko nesaglabā. Skatiet pārbaudi bez saglabāšanas .
Galvenes Nosaukums Tips Apraksts If-Match obligāts string ETag 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) Nosaukums Tips Apraksts name obligāts string Lokācijas nosaukums, līdz 100 rakstzīmēm. Obligāts, veidojot lokāciju. descriptionstring | null Līdz 250 rakstzīmēm. addressstring | null Adrese, līdz 250 rakstzīmēm. districtstring | null Rajona kods, skatiet Atsauces datus . latitudenumber | null No −90 līdz 90. Sūtiet kopā ar longitude. longitudenumber | null No −180 līdz 180. Sūtiet kopā ar latitude. external_idstring Jū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 JavaScript Python
Kopēt 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"
}'
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3` , {
method: "PATCH" ,
headers: { Authorization: auth, "Content-Type" : "application/json" , "If-Match" : "W/\"a15c541949287f3563009a45\"" },
body: JSON.stringify({
"address" : "Kurzemes prospekts 3, Rīga" ,
"description" : "Sausa, apsildāma noliktava ar uzbrauktuvi"
}),
});
console.log(res.status, await res.json());
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.patch(
f"{API}/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3" ,
auth=(CLIENT_ID, CLIENT_SECRET),
headers={"If-Match" : "W/\"a15c541949287f3563009a45\"" },
json={
"address" : "Kurzemes prospekts 3, Rīga" ,
"description" : "Sausa, apsildāma noliktava ar uzbrauktuvi" ,
},
)
print (r.status_code, r.json())
200 OK ETag: W/"690d868c2dd969cc637a8941"
Kopēt {
"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 JavaScript Python
Kopēt 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"
}'
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3` , {
method: "PATCH" ,
headers: { Authorization: auth, "Content-Type" : "application/json" },
body: JSON.stringify({
"address" : "Kurzemes prospekts 3, Rīga"
}),
});
console.log(res.status, await res.json());
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.patch(
f"{API}/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3" ,
auth=(CLIENT_ID, CLIENT_SECRET),
json={
"address" : "Kurzemes prospekts 3, Rīga" ,
},
)
print (r.status_code, r.json())
428 Precondition Required
Kopēt {
"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 JavaScript Python
Kopēt 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"
}'
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3` , {
method: "PATCH" ,
headers: { Authorization: auth, "Content-Type" : "application/json" , "If-Match" : "W/\"a15c541949287f3563009a45\"" },
body: JSON.stringify({
"address" : "Cita adrese"
}),
});
console.log(res.status, await res.json());
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.patch(
f"{API}/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3" ,
auth=(CLIENT_ID, CLIENT_SECRET),
headers={"If-Match" : "W/\"a15c541949287f3563009a45\"" },
json={
"address" : "Cita adrese" ,
},
)
print (r.status_code, r.json())
412 Precondition Failed
Kopēt {
"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 Statuss Kad 404 Jums nav šādas lokācijas. 412 Lokācija mainīta pēc tam, kad to nolasījāt. 422 Kāda vērtība ir nederīga, vai external_id jau bija iestatīts. 428 Trū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 Nosaukums Tips Apraksts external_idstring Jūsu identifikators lokācijai.
Vaicājuma parametri Nosaukums Tips Apraksts validate_onlyboolean true izpilda visas pārbaudes un parāda, kas notiktu, bet neko nesaglabā. Skatiet pārbaudi bez saglabāšanas .
Pieprasījuma saturs Nosaukums Tips Apraksts name obligāts string Lokācijas nosaukums, līdz 100 rakstzīmēm. Obligāts, veidojot lokāciju. descriptionstring | null Līdz 250 rakstzīmēm. addressstring | null Adrese, līdz 250 rakstzīmēm. districtstring | null Rajona kods, skatiet Atsauces datus . latitudenumber | null No −90 līdz 90. Sūtiet kopā ar longitude. longitudenumber | null No −180 līdz 180. Sūtiet kopā ar latitude. external_idstring Jū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 JavaScript Python
Kopēt 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"
}'
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations/by-external-id/WH-PINKI` , {
method: "PUT" ,
headers: { Authorization: auth, "Content-Type" : "application/json" },
body: JSON.stringify({
"name" : "Piņķu noliktava" ,
"address" : "Priedaines iela 19, Piņķi" ,
"district" : "marupes-novads-pinki"
}),
});
console.log(res.status, await res.json());
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.put(
f"{API}/v1/locations/by-external-id/WH-PINKI" ,
auth=(CLIENT_ID, CLIENT_SECRET),
json={
"name" : "Piņķu noliktava" ,
"address" : "Priedaines iela 19, Piņķi" ,
"district" : "marupes-novads-pinki" ,
},
)
print (r.status_code, r.json())
201 Created ETag: W/"5d85e2db7390f6d8fe61025f"Location: https://api.boxlatvia.lv/v1/locations/154ab2ad-0419-4cb2-a214-cc8d5e8b032c
Kopēt {
"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 JavaScript Python
Kopēt 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"
}'
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations/by-external-id/WH-PINKI` , {
method: "PUT" ,
headers: { Authorization: auth, "Content-Type" : "application/json" },
body: JSON.stringify({
"description" : "Jauna noliktava ar uzbrauktuvi"
}),
});
console.log(res.status, await res.json());
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.put(
f"{API}/v1/locations/by-external-id/WH-PINKI" ,
auth=(CLIENT_ID, CLIENT_SECRET),
json={
"description" : "Jauna noliktava ar uzbrauktuvi" ,
},
)
print (r.status_code, r.json())
200 OK ETag: W/"3af8176ea6ccd30a1434aa5d"
Kopēt {
"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 Statuss Kad 422 Kā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 Nosaukums Tips Apraksts iduuid Lokācijas BoxLatvia identifikators.
Vaicājuma parametri Nosaukums Tips Apraksts validate_onlyboolean true izpilda visas pārbaudes un parāda, kas notiktu, bet neko nesaglabā. Skatiet pārbaudi bez saglabāšanas .
Galvenes Nosaukums Tips Apraksts If-Match obligāts string ETag 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 JavaScript Python
Kopēt curl -X DELETE "$API/v1/locations/2a8487f7-145e-40c0-ac01-c918a2f7c759" \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-H "If-Match: W/\"d7761dc4eb50ce8a08ae74d4\""
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations/2a8487f7-145e-40c0-ac01-c918a2f7c759` , {
method: "DELETE" ,
headers: { Authorization: auth, "If-Match" : "W/\"d7761dc4eb50ce8a08ae74d4\"" },
});
console.log(res.status); // 204, bez satura
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.delete(
f"{API}/v1/locations/2a8487f7-145e-40c0-ac01-c918a2f7c759" ,
auth=(CLIENT_ID, CLIENT_SECRET),
headers={"If-Match" : "W/\"d7761dc4eb50ce8a08ae74d4\"" },
)
print (r.status_code) # 204, bez satura
204 No Content
Atbildei nav satura
Vēl ir telpas
cURL JavaScript Python
Kopēt curl -X DELETE "$API/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3" \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-H "If-Match: W/\"690d868c2dd969cc637a8941\""
Kopēt const API = "https://api.boxlatvia.lv" ;
const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}` );
const res = await fetch(`${API}/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3` , {
method: "DELETE" ,
headers: { Authorization: auth, "If-Match" : "W/\"690d868c2dd969cc637a8941\"" },
});
console.log(res.status, await res.json());
Kopēt import requests
API = "https://api.boxlatvia.lv"
r = requests.delete(
f"{API}/v1/locations/9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3" ,
auth=(CLIENT_ID, CLIENT_SECRET),
headers={"If-Match" : "W/\"690d868c2dd969cc637a8941\"" },
)
print (r.status_code, r.json())
409 Conflict
Kopēt {
"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 Statuss Kad 404 Jums nav šādas lokācijas. 409 Lokācijā vēl ir telpas: vispirms izdzēsiet vai pārvietojiet tās. 412 Lokācija mainīta pēc tam, kad to nolasījāt. 428 Trūkst If-Match.