Verdmarket piegādātāja API
REST API produktu, krājumu, cenu un pasūtījumu programmātiskai pārvaldībai.
Bāzes URL
Pieejamie galapunkti
| Metode | Galapunkts | Apraksts |
|---|---|---|
| GET | /products | Produktu saraksts |
| GET | /products/{id} | Produkta detaļas |
| POST | /products | Izveidot produktu |
| POST | /products/{id} | Atjaunināt produktu |
| POST | /products/{id}/delete | Dzēst produktu |
| GET | /products/{id}/images | Produkta attēlu saraksts |
| POST | /products/{id}/images | Pievienot attēlus ar URL |
| POST | /products/{id}/images/{imageId}/delete | Dzēst attēlu |
| POST | /products/{id}/images/{imageId}/primary | Iestatīt galveno attēlu |
| POST | /stock | Masveida krājumu atjaunināšana |
| POST | /prices | Masveida cenu atjaunināšana |
| GET | /orders | Pasūtījumu saraksts |
| GET | /orders/{id} | Pasūtījuma detaļas |
| POST | /orders/{id}/status | Atjaunināt pasūtījuma statusu |
| GET | /categories | Kategoriju saraksts |
Autentifikācija
Visiem API pieprasījumiem nepieciešams Bearer tokens Authorization galvenē.
Izveidojiet API atslēgu sadaļā Piegādātāja panelis → Veikala profils → API atslēgas.
Pieprasījumu limiti
Noklusējums: 1000 pieprasījumi stundā uz vienu API atslēgu.
Limitu informācija tiek atgriezta atbildes galvenēs:
| Galvene | Apraksts |
|---|---|
| X-RateLimit-Limit | Maksimālais pieprasījumu skaits stundā |
| X-RateLimit-Remaining | Atlikušie pieprasījumi pašreizējā logā |
| X-RateLimit-Reset | Unix laika zīmogs, kad logs tiek atiestatīts |
| Retry-After | Sekundes līdz atkārtotam mēģinājumam (tikai pie 429) |
Atbildes formāts
Visas atbildes ir JSON formātā. Veiksmīgas atbildes:
{
"success": true,
"data": { ... }
}Kļūdu atbildes:
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Name is required."
}
}Produkti
/products
Jūsu produktu saraksts ar lapošanu un filtrēšanu.
Vaicājuma parametri
| Parametrs | Tips | Apraksts |
|---|---|---|
| page | int | Lapas numurs (noklusējums: 1) |
| per_page | int | Vienumi lapā (maks.: 100, noklusējums: 20) |
| status | string | Filtrs: active, inactive, pending |
| search | string | Meklēt pēc nosaukuma vai SKU |
Atbildes piemērs
{
"success": true,
"data": {
"products": [
{
"id": 42,
"name": "Red Roses Premium",
"sku": "ROSE-RED-001",
"type": "flower",
"base_price": 2.50,
"unit": "stem",
"stock_qty": 500,
"stock_status": "in_stock",
"is_active": true,
"is_approved": true,
"category": { "id": 3, "name": "Roses" },
"primary_image": "/uploads/products/rose-red.jpg"
}
],
"pagination": {
"current_page": 1,
"total_pages": 5,
"total_items": 94,
"per_page": 20
}
}
}/products/{id}
Iegūt vienu produktu ar attēliem un variantiem.
/products
Izveidot jaunu produktu. Jauni produkti prasa administratora apstiprinājumu pirms parādīšanās katalogā.
Pieprasījuma pamatteksts (JSON)
| Lauks | Tips | Obligāts | Apraksts |
|---|---|---|---|
| name | string | * | Produkta nosaukums |
| category_id | int | * | Kategorijas ID |
| base_price | float | * | Cena EUR |
| unit | string | * | kāts, pušķis, kaste, iepakojums, gabals, kilograms, metrs, ruļļis |
| type | string | flower (noklusējums) vai supply | |
| description | string | Produkta apraksts | |
| sku | string | Unikāls SKU (pārbaudīts pret dublikātiem) | |
| stock_qty | int | Krājuma daudzums (noklusējums: 0) | |
| min_order_qty | int | Minimālais pasūtījuma daudzums (noklusējums: 1) | |
| color | string | Produkta krāsa | |
| stem_length | int | Kāta garums cm | |
| country_of_origin | string | Izcelsmes valsts | |
| vat_rate | float | PVN likme % (noklusējums: 21) | |
| image_url | string | Attēla URL. Atbalsta jpg, png, webp. Vairāki URL atdalīti ar semikolu (;). Maks. 10 attēli vienam produktam. |
/products/{id}
Atjaunināt esošu produktu. Sūtiet tikai laukus, kurus vēlaties mainīt (daļēja atjaunināšana).
/products/{id}/delete
Mīkstā produkta dzēšana. Pieprasījuma pamatteksts nav nepieciešams.
Produktu attēli
/products/{id}/images
Iegūt visus produkta attēlus. Atgriež URL adreses un galvenā attēla atzīmi.
Atbildes piemērs
{
"success": true,
"data": {
"images": [
{
"id": 1,
"url": "/uploads/products/abc123.jpg",
"thumbnail_url": "/uploads/products/thumb_abc123.jpg",
"is_primary": true
},
{
"id": 2,
"url": "/uploads/products/def456.jpg",
"thumbnail_url": "/uploads/products/thumb_def456.jpg",
"is_primary": false
}
]
}
}/products/{id}/images
Pievienot attēlus ar URL. Serveris lejupielādē, pārbauda (jpg/png/webp, maks. 5 MB) un automātiski izveido sīktēlus. Izmantojiet semikolu vairākiem URL.
Pieprasījuma pamatteksts (JSON)
| Lauks | Tips | Obligāts | Apraksts |
|---|---|---|---|
| image_url | string | * | Attēla URL. Atbalsta jpg, png, webp. Vairāki URL atdalīti ar semikolu (;). Maks. 10 attēli vienam produktam. |
Pieprasījuma pamatteksts
{
"image_url": "https://example.com/images/rose.jpg;https://example.com/images/rose-2.jpg"
}/products/{id}/images/{imageId}/delete
Dzēst produkta attēlu. Fails tiek izdzēsts no servera. Ja dzēstais attēls bija galvenais, nākamais attēls automātiski kļūst par galveno.
/products/{id}/images/{imageId}/primary
Iestatīt attēlu kā galveno (primāro). Galvenais attēls tiek rādīts kataloga sarakstos un meklēšanas rezultātos.
Masveida krājumu atjaunināšana
/stock
Atjaunināt krājumu daudzumus vairākiem produktiem vienlaikus. Identificējiet produktus pēc product_id vai sku. Maks. 500 vienumi pieprasījumā.
Pieprasījuma pamatteksts
{
"items": [
{ "product_id": 42, "stock_qty": 500 },
{ "sku": "ROSE-RED-001", "stock_qty": 250 },
{ "sku": "LILY-WHT-003", "stock_qty": 0 }
]
}Atbilde
{
"success": true,
"data": {
"updated": 2,
"failed": 1,
"errors": [
{ "index": 2, "sku": "LILY-WHT-003", "error": "Product not found" }
]
}
}Masveida cenu atjaunināšana
/prices
Atjaunināt cenas vairākiem produktiem. Tāds pats formāts kā krājumu atjaunināšanai, bet ar base_price lauku. Maks. 500 vienumi.
Pieprasījuma pamatteksts
{
"items": [
{ "product_id": 42, "base_price": 2.75 },
{ "sku": "ROSE-RED-001", "base_price": 3.10 }
]
}Pasūtījumi
/orders
Jūsu pasūtījumu grupu saraksts (piegādātājam specifiskie pasūtījumu daļas).
Vaicājuma parametri
| Parametrs | Tips | Apraksts |
|---|---|---|
| page | int | Lapas numurs |
| per_page | int | Vienumi lapā (maks. 100) |
| status | string | pending, confirmed, processing, shipped, delivered, completed, cancelled |
/orders/{id}
Pilna pasūtījuma informācija, ieskaitot vienumus, klienta datus un statusu vēsturi.
/orders/{id}/status
Atjaunināt pasūtījuma statusu. Atļautas tikai derīgas pārejas:
| No | Atļautās pārejas |
|---|---|
| pending | confirmed, cancelled |
| confirmed | processing, cancelled |
| processing | shipped, cancelled |
| shipped | delivered |
Pieprasījuma pamatteksts
{
"status": "confirmed",
"comment": "Order confirmed, preparing for shipment"
}Kategorijas
/categories
Visu aktīvo kategoriju saraksts. Atgriež plakanu sarakstu ar vecāku atsaucēm.
Atbildes piemērs
{
"success": true,
"data": {
"categories": [
{ "id": 1, "name": "Flowers", "slug": "flowers", "parent_id": null, "type": "flower" },
{ "id": 3, "name": "Roses", "slug": "roses", "parent_id": 1, "type": "flower" }
]
}
}Kļūdu kodi
| HTTP | Kods | Apraksts |
|---|---|---|
| 401 | UNAUTHORIZED | Trūkstoša vai nederīga API atslēga |
| 403 | FORBIDDEN | Atslēga atsaukta vai piegādātājs nav verificēts |
| 404 | NOT_FOUND | Resurss nav atrasts |
| 422 | VALIDATION_ERROR | Nederīgi ievades dati |
| 429 | RATE_LIMITED | Pieprasījumu limits pārsniegts |
| 500 | SERVER_ERROR | Iekšēja servera kļūda |
Koda piemēri
Produktu saraksts
curl -X GET "https://www.verdmarket.com.mature-black-wombat.65-108-70-81.cpanel.site/api/v1/supplier/products?page=1&per_page=10" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Produkta izveide
curl -X POST "https://www.verdmarket.com.mature-black-wombat.65-108-70-81.cpanel.site/api/v1/supplier/products" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Red Roses Premium",
"category_id": 3,
"base_price": 2.50,
"unit": "stem",
"stock_qty": 500,
"sku": "ROSE-RED-001",
"color": "Red",
"stem_length": 60,
"country_of_origin": "Netherlands",
"image_url": "https://example.com/images/rose-red.jpg"
}'Produkta attēlu pievienošana
curl -X POST "https://www.verdmarket.com.mature-black-wombat.65-108-70-81.cpanel.site/api/v1/supplier/products/42/images" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://example.com/img/photo1.jpg;https://example.com/img/photo2.jpg"
}'Masveida krājumu atjaunināšana
curl -X POST "https://www.verdmarket.com.mature-black-wombat.65-108-70-81.cpanel.site/api/v1/supplier/stock" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [
{"sku": "ROSE-RED-001", "stock_qty": 500},
{"sku": "LILY-WHT-003", "stock_qty": 200}
]
}'PHP piemērs
<?php
$apiKey = 'YOUR_API_KEY';
$baseUrl = 'https://www.verdmarket.com.mature-black-wombat.65-108-70-81.cpanel.site/api/v1/supplier';
// List products
$ch = curl_init("$baseUrl/products?page=1&per_page=10");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $apiKey",
"Accept: application/json",
],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
// Bulk stock update
$ch = curl_init("$baseUrl/stock");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
'items' => [
['sku' => 'ROSE-RED-001', 'stock_qty' => 500],
['sku' => 'LILY-WHT-003', 'stock_qty' => 200],
],
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $apiKey",
"Content-Type: application/json",
],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);Python piemērs
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://www.verdmarket.com.mature-black-wombat.65-108-70-81.cpanel.site/api/v1/supplier"
headers = {"Authorization": f"Bearer {API_KEY}"}
# List products
resp = requests.get(f"{BASE_URL}/products", headers=headers,
params={"page": 1, "per_page": 10})
products = resp.json()
# Bulk stock update
resp = requests.post(f"{BASE_URL}/stock", headers=headers,
json={"items": [
{"sku": "ROSE-RED-001", "stock_qty": 500},
{"sku": "LILY-WHT-003", "stock_qty": 200},
]})
result = resp.json()
# Update order status
resp = requests.post(f"{BASE_URL}/orders/15/status", headers=headers,
json={"status": "confirmed",
"comment": "Ready for shipment"})
print(resp.json())