Darba sākšana
Šī lapa aizvedīs jūs no nulles līdz telpai, kas gaida izskatīšanu. Tajā ir īsti pieprasījumi un īstas API atbildes.
Vispirms vajadzīgi piekļuves dati. Viss turpmākais izmanto vietturus:
export API="https://api.boxlatvia.lv"
export CLIENT_ID="bxc_..." # BoxLatvia izsniegtais client ID
export CLIENT_SECRET="bxs_..." # noslēpums, kas tika parādīts vienreiz-
#Saņemiet piekļuves datus
Piekļuves datus izsniedz BoxLatvia, vienam piegādātājam. Katrā komplektā ir client ID (publisks), noslēpums (tiek parādīts vienreiz, glabājiet to kā paroli) un tiesību saraksts. Pieprasiet atsevišķus piekļuves datus katrai savienotajai sistēmai, lai katru varētu atsaukt atsevišķi. Kā pieprasīt piekļuvi.
-
#Veiciet pirmo izsaukumu
Pārbaudiet, vai jūsu piekļuves dati darbojas. Atbilde parāda, kas jūs esat, kādas tiesības jums ir un jūsu piegādātāja profilu.
Kas es esmucurl "$API/v1/me" \ -u "$CLIENT_ID:$CLIENT_SECRET"const API = "https://api.boxlatvia.lv"; const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}`); const res = await fetch(`${API}/v1/me`, { headers: { Authorization: auth }, }); console.log(res.status, await res.json());import requests API = "https://api.boxlatvia.lv" r = requests.get( f"{API}/v1/me", auth=(CLIENT_ID, CLIENT_SECRET), ) print(r.status_code, r.json())200 OK{ "client": { "client_id": "bxc_8F2ZPMcAmQZzr243", "scopes": [ "reference:read", "supplier:read", "supplier:write", "locations:read", "locations:write", "boxes:read", "boxes:write", "images:write" ] }, "supplier": { "id": "9fbb9ba2-6be5-4ae3-9b54-9fd36e889130", "name": "Imanta Storage SIA", "reg_nr": "40103456789", "vat_reg_nr": "LV40103456789", "address": "Kurzemes prospekts 1", "address_city": "Rīga", "address_country": "Latvija", "country": "LV", "person_type": "legal", "contact_person_name": "Anna Bērziņa", "contact_person_email": "anna@imantastorage.example", "contact_person_phone": "+371 20000000", "created_at": "2026-11-07T09:30:12.418Z", "updated_at": "2026-11-07T09:30:12.418Z" } } -
#Noskaidrojiet vajadzīgos kodus
Ērtības, rajoni un cenas mērvienības tiek sūtīti kā stabili kodi. Iegūstiet sarakstus vienreiz un saglabājiet tos. Atsauces dati
curl "$API/v1/reference/districts" \ -u "$CLIENT_ID:$CLIENT_SECRET"const API = "https://api.boxlatvia.lv"; const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}`); const res = await fetch(`${API}/v1/reference/districts`, { headers: { Authorization: auth }, }); console.log(res.status, await res.json());import requests API = "https://api.boxlatvia.lv" r = requests.get( f"{API}/v1/reference/districts", auth=(CLIENT_ID, CLIENT_SECRET), ) print(r.status_code, r.json()) -
#Izveidojiet lokāciju
Lokācija ir vieta, kurā atrodas telpas. Obligāts ir tikai
name; atbildesmissingsaraksts parāda, ko klienti vēl nevar redzēt. Lai lokāciju varētu atrast, vajadzīgas vismaz piecas ērtības (features).Lokācijas izveidecurl -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" ] }'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());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 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" } -
#Izveidojiet telpu
Norādiet telpas lokāciju pēc BoxLatvia identifikatora vai pēc sava identifikatora (
location_external_id). Jaunas telpas sākas kā melnraksti.Telpas izveidecurl -X POST "$API/v1/boxes" \ -u "$CLIENT_ID:$CLIENT_SECRET" \ -H "Content-Type: application/json" \ -d '{ "name": "Box 3 m²", "description": "Sausa un apsildāma telpa pirmajā stāvā", "location_external_id": "WH-IMANTA", "external_id": "SKU-3M", "price": 29.9, "price_unit": "menesi", "price_period_3": 79, "price_period_12": 290, "size": 3, "size_length": 2, "size_width": 1.5, "size_height": 2.4, "door_width": 0.9, "door_height": 2, "total_units": 10, "available_units": 10, "max_advance_days": 60, "features": [ "apkure", "viedatslega" ] }'const API = "https://api.boxlatvia.lv"; const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}`); const res = await fetch(`${API}/v1/boxes`, { method: "POST", headers: { Authorization: auth, "Content-Type": "application/json" }, body: JSON.stringify({ "name": "Box 3 m²", "description": "Sausa un apsildāma telpa pirmajā stāvā", "location_external_id": "WH-IMANTA", "external_id": "SKU-3M", "price": 29.9, "price_unit": "menesi", "price_period_3": 79, "price_period_12": 290, "size": 3, "size_length": 2, "size_width": 1.5, "size_height": 2.4, "door_width": 0.9, "door_height": 2, "total_units": 10, "available_units": 10, "max_advance_days": 60, "features": [ "apkure", "viedatslega" ] }), }); console.log(res.status, await res.json());import requests API = "https://api.boxlatvia.lv" r = requests.post( f"{API}/v1/boxes", auth=(CLIENT_ID, CLIENT_SECRET), json={ "name": "Box 3 m²", "description": "Sausa un apsildāma telpa pirmajā stāvā", "location_external_id": "WH-IMANTA", "external_id": "SKU-3M", "price": 29.9, "price_unit": "menesi", "price_period_3": 79, "price_period_12": 290, "size": 3, "size_length": 2, "size_width": 1.5, "size_height": 2.4, "door_width": 0.9, "door_height": 2, "total_units": 10, "available_units": 10, "max_advance_days": 60, "features": [ "apkure", "viedatslega", ], }, ) print(r.status_code, r.json())201 CreatedETag: W/"2daf00d492dd4f4cd82f2113"Location: https://api.boxlatvia.lv/v1/boxes/c4883b4a-4e38-47bf-8a69-ef025917e022{ "id": "c4883b4a-4e38-47bf-8a69-ef025917e022", "external_id": "SKU-3M", "location_id": "9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3", "name": "Box 3 m²", "description": "Sausa un apsildāma telpa pirmajā stāvā", "status": "DRAFT", "price": 29.9, "promotional_price": null, "price_period_1": null, "price_period_3": 79, "price_period_6": null, "price_period_12": 290, "price_unit": "menesi", "size": 3, "size_length": 2, "size_width": 1.5, "size_height": 2.4, "door_width": 0.9, "door_height": 2, "total_units": 10, "available_units": 10, "max_advance_days": 60, "features": [ "apkure", "viedatslega" ], "missing": [], "created_at": "2026-11-07T09:30:12.418Z", "updated_at": "2026-11-07T09:30:12.418Z" } -
#Pievienojiet attēlus
Augšupielādējiet JPEG, PNG, WebP vai GIF failus kā
multipart/form-data, līdz 5 vienā pieprasījumā.Divu attēlu augšupielādecurl -X POST "$API/v1/boxes/c4883b4a-4e38-47bf-8a69-ef025917e022/images" \ -u "$CLIENT_ID:$CLIENT_SECRET" \ -F "file=@front.jpg" \ -F "file=@inside.png"const API = "https://api.boxlatvia.lv"; const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}`); const form = new FormData(); form.append("file", frontFile); // File vai Blob form.append("file", insideFile); // File vai Blob const res = await fetch(`${API}/v1/boxes/c4883b4a-4e38-47bf-8a69-ef025917e022/images`, { method: "POST", headers: { Authorization: auth }, body: form, }); console.log(res.status, await res.json());import requests API = "https://api.boxlatvia.lv" r = requests.post( f"{API}/v1/boxes/c4883b4a-4e38-47bf-8a69-ef025917e022/images", auth=(CLIENT_ID, CLIENT_SECRET), files=[("file", open("front.jpg", "rb")), ("file", open("inside.png", "rb"))], ) print(r.status_code, r.json())201 Created{ "data": [ { "id": "eb28418e-6710-4ba2-aee5-f15b53c02d8f", "url": "https://gnfvochksxcodgoqdgxx.supabase.co/storage/v1/object/public/box-images/sup-1/c4883b4a-4e38-47bf-8a69-ef025917e022/e8219951-043a-45bd-a9ee-0c75a6819510.png", "created_at": "2026-11-07T09:30:12.418Z" }, { "id": "ae6e8d2e-da66-4026-bb04-9418e52a7c43", "url": "https://gnfvochksxcodgoqdgxx.supabase.co/storage/v1/object/public/box-images/sup-1/c4883b4a-4e38-47bf-8a69-ef025917e022/4f380fb3-d246-4c5b-b6d0-37d7fa8b5523.png", "created_at": "2026-11-07T09:30:12.418Z" } ] } -
#Iesniedziet izskatīšanai
Kad telpai ir apraksts, cena un cenas mērvienība, izmērs un vismaz viena ērtība, lūdziet BoxLatvia to publicēt. API var tikai lūgt: izskata un publicē BoxLatvia darbinieki. Telpu jebkurā brīdī var atsaukt.
Telpas iesniegšanacurl -X POST "$API/v1/boxes/c4883b4a-4e38-47bf-8a69-ef025917e022/submit" \ -u "$CLIENT_ID:$CLIENT_SECRET"const API = "https://api.boxlatvia.lv"; const auth = "Basic " + btoa(`${CLIENT_ID}:${CLIENT_SECRET}`); const res = await fetch(`${API}/v1/boxes/c4883b4a-4e38-47bf-8a69-ef025917e022/submit`, { method: "POST", headers: { Authorization: auth }, }); console.log(res.status, await res.json());import requests API = "https://api.boxlatvia.lv" r = requests.post( f"{API}/v1/boxes/c4883b4a-4e38-47bf-8a69-ef025917e022/submit", auth=(CLIENT_ID, CLIENT_SECRET), ) print(r.status_code, r.json())200 OKETag: W/"052468fbc2a710d35f026e30"{ "id": "c4883b4a-4e38-47bf-8a69-ef025917e022", "external_id": "SKU-3M", "location_id": "9d80d5f4-d17a-4f3e-99f6-4ab43b132bc3", "name": "Box 3 m²", "description": "Sausa un apsildāma telpa pirmajā stāvā", "status": "REVIEW", "price": 31.5, "promotional_price": null, "price_period_1": null, "price_period_3": 79, "price_period_6": null, "price_period_12": 290, "price_unit": "menesi", "size": 3, "size_length": 2, "size_width": 1.5, "size_height": 2.4, "door_width": 0.9, "door_height": 2, "total_units": 10, "available_units": 6, "max_advance_days": 60, "features": [ "apkure", "viedatslega" ], "missing": [], "created_at": "2026-11-07T09:30:12.418Z", "updated_at": "2026-11-07T14:05:41.092Z" }
#Kas tālāk
- Uzturiet cenas un pieejamību aktuālu, veicot vienu izsaukumu katrai telpai ar savu identifikatoru.
- Izlasiet Pamatjēdzienus: nosacītus atjauninājumus, drošu atkārtošanu, pārbaudi bez saglabāšanas.
- Pirms automatizējat, izlasiet Ierobežojumus un labo praksi.