Introduction
This documentation aims to provide all the information you need to work with our API.
Authenticating requests
To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_TOKEN}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
You can retrieve your token by visiting your dashboard and clicking Tokens in API menu.
API V1 - Couriers
Couriers Endpoints
GET Allowed Couriers and SubAccounts
requires authentication
List all allowed couriers and their sub accounts, if exists.
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/couriers/allowed';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/couriers/allowed"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/couriers/allowed" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/couriers/allowed'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
{
"data": {
"allowedCouriers": [
{
"id": 18,
"description": "Pickup from Warehouse",
"hasSubAccounts": false
},
{
"id": 113,
"description": "BoxNow",
"hasSubAccounts": false
}
]
},
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
API V1 - Entries
Entries Endpoints
- The GET All Entries endpoint usage is not recommended even if is still provided. As the number of entries can increase, the number of pages will grow constantly. On long term parsing all the results will become a cumbersome and a resource-consuming process.
- Information about latest entries should always be requested with the help of GET Entries created today endpoint.
GET All Entries
requires authentication
List all product entries.
Throttling: Max 40 requests per minute. (40/1)
Presents the result with page size and pagination.
Default page size : 200 records per page.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/entries';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/entries"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/entries?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/entries'
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 40
x-ratelimit-remaining: 39
access-control-allow-origin: *
{
"data": [
{
"entryId": 287302,
"entryDate": "2023-09-29",
"isReturnedOrder": false,
"deliveryNote": "Test14092023",
"moreInfo": "",
"quantity": 6,
"productInfo": {
"productId": 9,
"description": "Produs TestClient 8Produs TestClient 8Produs TestClient 8",
"pictureUrl": "",
"productCode": "prodtestclient8",
"ean": "zang8",
"externalId": 10008,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
},
{
"entryId": 287303,
"entryDate": "2023-09-29",
"isReturnedOrder": false,
"deliveryNote": "Test14092023",
"moreInfo": "",
"quantity": 1,
"productInfo": {
"productId": 10,
"description": "Produs TestClient 9",
"pictureUrl": "",
"productCode": "prodtestclient9",
"ean": "zang9",
"externalId": 10009,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
},
{
"entryId": 289514,
"entryDate": "2023-11-01",
"isReturnedOrder": false,
"deliveryNote": "test 3",
"moreInfo": "",
"quantity": 1,
"productInfo": {
"productId": 28160,
"description": "Test Fast print orders",
"pictureUrl": "",
"productCode": "NewTest",
"ean": "5896545632104",
"externalId": 0,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": "2023-11-01T09:37:35.000000Z",
"updatedAt": "2023-11-01T09:37:35.000000Z"
}
},
{
"entryId": 291697,
"entryDate": "2023-11-17",
"isReturnedOrder": false,
"deliveryNote": "test entry",
"moreInfo": "",
"quantity": 5,
"productInfo": {
"productId": 2,
"description": "\"Produs TestClient 1",
"pictureUrl": "https://www.youtube.com/test/123/",
"productCode": "prodtestclient1",
"ean": "zang1",
"externalId": 10001,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 25000,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
},
{
"entryId": 348775,
"entryDate": "2024-11-11",
"isReturnedOrder": false,
"deliveryNote": "11112024test",
"moreInfo": "",
"quantity": 1,
"productInfo": {
"productId": 17,
"description": "Produs TestClient 16",
"pictureUrl": "",
"productCode": "prodtestclient16",
"ean": "zang16",
"externalId": 10016,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
},
{
"entryId": 378680,
"entryDate": "2025-03-06",
"isReturnedOrder": false,
"deliveryNote": "test",
"moreInfo": "",
"quantity": 3,
"productInfo": {
"productId": 86352,
"description": "BAGSO 2",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45250-1-20221122_113025698_ios_webp.webp",
"productCode": "97554",
"ean": "12377AS",
"externalId": 45250,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
}
],
"links": {
"first": "https://clients.metrica.bg/api/v1/connectors/client/entries?page=1",
"last": "https://clients.metrica.bg/api/v1/connectors/client/entries?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://clients.metrica.bg/api/v1/connectors/client/entries?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://clients.metrica.bg/api/v1/connectors/client/entries",
"per_page": 200,
"to": 6,
"total": 6
},
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Entries created today
requires authentication
List all entries that were created today
Presents the result with page size and pagination.
Throttling: Max 5 requests per minute. (5/1)
Default page size : 200 records per page.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/entries/createdToday';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/entries/createdToday"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/entries/createdToday?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/entries/createdToday'
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 5
x-ratelimit-remaining: 4
access-control-allow-origin: *
{
"data": [],
"links": {
"first": "https://clients.metrica.bg/api/v1/connectors/client/entries/createdToday?page=1",
"last": "https://clients.metrica.bg/api/v1/connectors/client/entries/createdToday?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": null,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://clients.metrica.bg/api/v1/connectors/client/entries/createdToday?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://clients.metrica.bg/api/v1/connectors/client/entries/createdToday",
"per_page": 200,
"to": null,
"total": 0
},
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Returned Entries
requires authentication
List sumOf product entries from returned orders, grouped by products and orders
Throttling: Max 20 requests per minute. (20/1)
Presents the result with page size and pagination.
Default page size : 200 records per page.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/entries/returns/sumOfQty';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/entries/returns/sumOfQty"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/entries/returns/sumOfQty?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/entries/returns/sumOfQty'
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 20
x-ratelimit-remaining: 19
access-control-allow-origin: *
{
"data": [],
"links": {
"first": "https://clients.metrica.bg/api/v1/connectors/client/entries/returns/sumOfQty?page=1",
"last": "https://clients.metrica.bg/api/v1/connectors/client/entries/returns/sumOfQty?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": null,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://clients.metrica.bg/api/v1/connectors/client/entries/returns/sumOfQty?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://clients.metrica.bg/api/v1/connectors/client/entries/returns/sumOfQty",
"per_page": 200,
"to": null,
"total": 0
},
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Import Entries
requires authentication
List sumOf product entries from imports, grouped by products and imports
Throttling: Max 20 requests per minute. (20/1)
Presents the result with page size and pagination.
Default page size : 200 records per page.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/entries/imports/sumOfQty';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/entries/imports/sumOfQty"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/entries/imports/sumOfQty?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/entries/imports/sumOfQty'
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 20
x-ratelimit-remaining: 19
access-control-allow-origin: *
{
"data": [
{
"entryDate": "2025-03-06",
"sumOfQuantity": 3,
"isReturnedOrder": false,
"deliveryNote": "test",
"moreInfo": "",
"productInfo": {
"productId": 86352,
"description": "BAGSO 2",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45250-1-20221122_113025698_ios_webp.webp",
"productCode": "97554",
"ean": "12377AS",
"externalId": 45250,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
},
{
"entryDate": "2024-11-11",
"sumOfQuantity": 1,
"isReturnedOrder": false,
"deliveryNote": "11112024test",
"moreInfo": "",
"productInfo": {
"productId": 17,
"description": "Produs TestClient 16",
"pictureUrl": "",
"productCode": "prodtestclient16",
"ean": "zang16",
"externalId": 10016,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
},
{
"entryDate": "2023-11-17",
"sumOfQuantity": 5,
"isReturnedOrder": false,
"deliveryNote": "test entry",
"moreInfo": "",
"productInfo": {
"productId": 2,
"description": "\"Produs TestClient 1",
"pictureUrl": "https://www.youtube.com/test/123/",
"productCode": "prodtestclient1",
"ean": "zang1",
"externalId": 10001,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 25000,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
},
{
"entryDate": "2023-11-01",
"sumOfQuantity": 1,
"isReturnedOrder": false,
"deliveryNote": "test 3",
"moreInfo": "",
"productInfo": {
"productId": 28160,
"description": "Test Fast print orders",
"pictureUrl": "",
"productCode": "NewTest",
"ean": "5896545632104",
"externalId": 0,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": "2023-11-01T09:37:35.000000Z",
"updatedAt": "2023-11-01T09:37:35.000000Z"
}
},
{
"entryDate": "2023-09-29",
"sumOfQuantity": 1,
"isReturnedOrder": false,
"deliveryNote": "Test14092023",
"moreInfo": "",
"productInfo": {
"productId": 10,
"description": "Produs TestClient 9",
"pictureUrl": "",
"productCode": "prodtestclient9",
"ean": "zang9",
"externalId": 10009,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
},
{
"entryDate": "2023-09-29",
"sumOfQuantity": 6,
"isReturnedOrder": false,
"deliveryNote": "Test14092023",
"moreInfo": "",
"productInfo": {
"productId": 9,
"description": "Produs TestClient 8Produs TestClient 8Produs TestClient 8",
"pictureUrl": "",
"productCode": "prodtestclient8",
"ean": "zang8",
"externalId": 10008,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
}
],
"links": {
"first": "https://clients.metrica.bg/api/v1/connectors/client/entries/imports/sumOfQty?page=1",
"last": "https://clients.metrica.bg/api/v1/connectors/client/entries/imports/sumOfQty?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://clients.metrica.bg/api/v1/connectors/client/entries/imports/sumOfQty?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://clients.metrica.bg/api/v1/connectors/client/entries/imports/sumOfQty",
"per_page": 200,
"to": 6,
"total": 6
},
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
API V1 - Orders
Orders Endpoints
- The GET All Orders endpoint usage is not recommended even if is still provided. As the number of orders increases the number of pages will grow constantly. On long term parsing all the results will become a cumbersome and a resource-consuming process.
- Information about orders should always be requested with the help of GET Filtered Orders endpoint.
- The GET Today latest updated orders endpoint can provide the list of orders updated recently.
- Usage of GET Order By endpoints is not recommended in a list/array larger than 10-20 orders.
- The information found on courierStatus and courierStatusId does not seek to provide an undoubted clarification when an order is TRULY delivered, returned, lost, or paid. Those are just courier statuses and their interpretation remains at the discretion of the reader.
GET All Orders
requires authentication
List all orders.
Throttling: Max 5 requests per minute. (5/1) Max 20 requests per hour. (20/60)
Presents the result with page size and simple pagination (without showing the total number of records and last page).
Default page size : 500 records per page. The ordering is newest orders first.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/orders?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders'
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 5
x-ratelimit-remaining: 4
access-control-allow-origin: *
{
"data": [
{
"orderId": 531017,
"externalId": "MHMR153155O7bY",
"entryDate": "2025-05-29 15:31:55",
"prefDate": "2025-05-29",
"sentDate": null,
"companyName": null,
"companyUniqueIdentifier": "",
"companyRegistrationNumber": null,
"contactPerson": "Metrica",
"address": "божурище",
"streetId": null,
"cityId": null,
"city": "Румен",
"county": "Bozhurishte",
"country": "Bulgaria",
"postalCode": "",
"contactPhone": "0882444366",
"contactEmail": "",
"lockerDeliveryIdentifier": null,
"cashOnDelivery": "0",
"declaredValueAmount": "0",
"declaredValueAmountCurrency": null,
"warehouseRemarks": "",
"shippingInstructions": "",
"courier": "selfpickup",
"courierSubAccount": "",
"awbNumber": null,
"multipleAWBNumbers": null,
"courierShipmentNumber": null,
"multipleCourierShipmentNumbers": null,
"shippedParcels": 0,
"courierStatus": "",
"courierStatusId": 0,
"invoiceUrl": null,
"awbUrl": null,
"deliveryNoteUrl": null,
"status": "Locked",
"isReturned": false,
"returnedDate": "0000-00-00",
"returnStatus": null,
"externalSource": "Metrica",
"externalSourceOrderId": "MHMR153155O7bY",
"tags": null,
"products": [
{
"productId": 86352,
"quantity": 3,
"isReturned": false,
"returnedDate": "0000-00-00",
"price": 0,
"productInfo": {
"productId": 86352,
"description": "BAGSO 2",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45250-1-20221122_113025698_ios_webp.webp",
"productCode": "97554",
"ean": "12377AS",
"externalId": 45250,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
}
]
},
{
"orderId": 530034,
"externalId": "MHMF1535183nBV",
"entryDate": "2025-05-28 15:35:18",
"prefDate": "2025-05-28",
"sentDate": "2025-05-29 15:28:54",
"companyName": "",
"companyUniqueIdentifier": "",
"companyRegistrationNumber": null,
"contactPerson": "Тест",
"address": "Симеон Петров 19",
"streetId": null,
"cityId": null,
"city": "Божурище",
"county": "Божурище",
"country": "BG",
"postalCode": "",
"contactPhone": "0888112233",
"contactEmail": "",
"lockerDeliveryIdentifier": null,
"cashOnDelivery": "0",
"declaredValueAmount": "0",
"declaredValueAmountCurrency": null,
"warehouseRemarks": "",
"shippingInstructions": "",
"courier": "selfpickup",
"courierSubAccount": "",
"awbNumber": "",
"multipleAWBNumbers": null,
"courierShipmentNumber": null,
"multipleCourierShipmentNumbers": null,
"shippedParcels": 2,
"courierStatus": "",
"courierStatusId": 0,
"invoiceUrl": null,
"awbUrl": null,
"deliveryNoteUrl": null,
"status": "Sent",
"isReturned": false,
"returnedDate": "0000-00-00",
"returnStatus": null,
"externalSource": "Metrica",
"externalSourceOrderId": "MHMF1535183nBV",
"tags": null,
"products": [
{
"productId": 9,
"quantity": 2,
"isReturned": false,
"returnedDate": "0000-00-00",
"price": 0,
"productInfo": {
"productId": 9,
"description": "Produs TestClient 8Produs TestClient 8Produs TestClient 8",
"pictureUrl": "",
"productCode": "prodtestclient8",
"ean": "zang8",
"externalId": 10008,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
}
]
},
{
"orderId": 530019,
"externalId": "MHMF151814bptj",
"entryDate": "2025-05-28 15:18:14",
"prefDate": "2025-05-28",
"sentDate": null,
"companyName": null,
"companyUniqueIdentifier": "",
"companyRegistrationNumber": null,
"contactPerson": "Metrica",
"address": "божурище",
"streetId": null,
"cityId": null,
"city": "Божурище",
"county": "Bozhurishte",
"country": "Bulgaria",
"postalCode": "",
"contactPhone": "0882444366",
"contactEmail": "",
"lockerDeliveryIdentifier": null,
"cashOnDelivery": "0",
"declaredValueAmount": "0",
"declaredValueAmountCurrency": null,
"warehouseRemarks": "",
"shippingInstructions": "",
"courier": "selfpickup",
"courierSubAccount": "",
"awbNumber": "",
"multipleAWBNumbers": null,
"courierShipmentNumber": null,
"multipleCourierShipmentNumbers": null,
"shippedParcels": 0,
"courierStatus": "",
"courierStatusId": 0,
"invoiceUrl": null,
"awbUrl": null,
"deliveryNoteUrl": null,
"status": "Locked",
"isReturned": false,
"returnedDate": "0000-00-00",
"returnStatus": null,
"externalSource": "Metrica",
"externalSourceOrderId": "MHMF151814bptj",
"tags": null,
"products": [
{
"productId": 86352,
"quantity": 3,
"isReturned": false,
"returnedDate": "0000-00-00",
"price": 0,
"productInfo": {
"productId": 86352,
"description": "BAGSO 2",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45250-1-20221122_113025698_ios_webp.webp",
"productCode": "97554",
"ean": "12377AS",
"externalId": 45250,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
}
]
},
{
"orderId": 453691,
"externalId": "MHMF115107dxk0",
"entryDate": "2025-03-06 11:51:07",
"prefDate": "2025-03-06",
"sentDate": null,
"companyName": null,
"companyUniqueIdentifier": "",
"companyRegistrationNumber": null,
"contactPerson": "Kristyan Dilovski TEST",
"address": "Sofia Vrajdebna 41 N:22a",
"streetId": null,
"cityId": null,
"city": "Sofia (1000)",
"county": "Bulgaria",
"country": "Bulgaria",
"postalCode": "1839",
"contactPhone": "0896755950",
"contactEmail": "ymcmb1611@gmail.com",
"lockerDeliveryIdentifier": null,
"cashOnDelivery": "0",
"declaredValueAmount": "0",
"declaredValueAmountCurrency": null,
"warehouseRemarks": "",
"shippingInstructions": "",
"courier": "boxnow",
"courierSubAccount": "",
"awbNumber": "4532902907",
"multipleAWBNumbers": null,
"courierShipmentNumber": null,
"multipleCourierShipmentNumbers": null,
"shippedParcels": 0,
"courierStatus": "",
"courierStatusId": 0,
"invoiceUrl": null,
"awbUrl": "",
"deliveryNoteUrl": null,
"status": "Processing",
"isReturned": false,
"returnedDate": "0000-00-00",
"returnStatus": null,
"externalSource": "Metrica",
"externalSourceOrderId": "MHMF115107dxk0",
"tags": null,
"products": [
{
"productId": 86352,
"quantity": 1,
"isReturned": false,
"returnedDate": "0000-00-00",
"price": 0,
"productInfo": {
"productId": 86352,
"description": "BAGSO 2",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45250-1-20221122_113025698_ios_webp.webp",
"productCode": "97554",
"ean": "12377AS",
"externalId": 45250,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
}
]
},
{
"orderId": 414293,
"externalId": "40098",
"entryDate": "2025-01-20 12:34:16",
"prefDate": "2025-01-20",
"sentDate": null,
"companyName": null,
"companyUniqueIdentifier": "",
"companyRegistrationNumber": null,
"contactPerson": "Tihomir Sokolov МЕРКОРИЯ",
"address": "33, Bakston blvd.",
"streetId": 0,
"cityId": null,
"city": "София",
"county": "София",
"country": "BG",
"postalCode": "1000",
"contactPhone": "0899196290",
"contactEmail": "tihomir.sokolov@gmail.com",
"lockerDeliveryIdentifier": null,
"cashOnDelivery": "0",
"declaredValueAmount": "0",
"declaredValueAmountCurrency": null,
"warehouseRemarks": " ",
"shippingInstructions": "тест ТТ",
"courier": "speedy",
"courierSubAccount": null,
"awbNumber": "",
"multipleAWBNumbers": null,
"courierShipmentNumber": null,
"multipleCourierShipmentNumbers": null,
"shippedParcels": 0,
"courierStatus": "",
"courierStatusId": 0,
"invoiceUrl": "",
"awbUrl": "",
"deliveryNoteUrl": null,
"status": "Sent",
"isReturned": false,
"returnedDate": "0000-00-00",
"returnStatus": null,
"externalSource": null,
"externalSourceOrderId": null,
"tags": null,
"products": [
{
"productId": 1,
"quantity": 4,
"isReturned": false,
"returnedDate": "0000-00-00",
"price": 0,
"productInfo": {
"productId": 1,
"description": "Produs neregasit in BD - Comanda incompleta",
"pictureUrl": "",
"productCode": "",
"ean": "",
"externalId": -1,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
}
]
},
{
"orderId": 409454,
"externalId": "39410",
"entryDate": "2025-01-13 10:13:43",
"prefDate": "2025-01-13",
"sentDate": null,
"companyName": null,
"companyUniqueIdentifier": "",
"companyRegistrationNumber": null,
"contactPerson": "Valival Test",
"address": "Спиди, До офис, гр. АЙТОС [8500] ул. КИРИЛ И МЕТОДИЙ No 17 Бърза поръчка",
"streetId": 0,
"cityId": null,
"city": "АЙТОС",
"county": "АЙТОС",
"country": "RO",
"postalCode": "8500",
"contactPhone": "0123465789",
"contactEmail": "test@valival.com",
"lockerDeliveryIdentifier": null,
"cashOnDelivery": "0",
"declaredValueAmount": "0",
"declaredValueAmountCurrency": null,
"warehouseRemarks": " ",
"shippingInstructions": "",
"courier": "speedyapi",
"courierSubAccount": null,
"awbNumber": "",
"multipleAWBNumbers": null,
"courierShipmentNumber": null,
"multipleCourierShipmentNumbers": null,
"shippedParcels": 0,
"courierStatus": "",
"courierStatusId": 0,
"invoiceUrl": "",
"awbUrl": "",
"deliveryNoteUrl": null,
"status": "Locked",
"isReturned": false,
"returnedDate": "0000-00-00",
"returnStatus": null,
"externalSource": null,
"externalSourceOrderId": null,
"tags": null,
"products": [
{
"productId": 1,
"quantity": 1,
"isReturned": false,
"returnedDate": "0000-00-00",
"price": 0,
"productInfo": {
"productId": 1,
"description": "Produs neregasit in BD - Comanda incompleta",
"pictureUrl": "",
"productCode": "",
"ean": "",
"externalId": -1,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
}
}
]
},
{
"orderId": 354021,
"externalId": "MHMF101325371H",
"entryDate": "2024-11-11 10:13:25",
"prefDate": "2024-11-11",
"sentDate": null,
"companyName": null,
"companyUniqueIdentifier": "",
"companyRegistrationNumber": null,
"contactPerson": "Kristina IVanova",
"address": "ул. Обелско шосе 7",
"streetId": null,
"cityId": null,
"city": "София",
"county": "bg",
"country": "Bulgaria",
"postalCode": "1360",
"contactPhone": "0895444645",
"contactEmail": "ecommerce@mediaposthitmail.bg",
"lockerDeliveryIdentifier": null,
"cashOnDelivery": "0",
"declaredValueAmount": "0",
"declaredValueAmountCurrency": null,
"warehouseRemarks": "",
"shippingInstructions": "",
"courier": "boxnow",
"courierSubAccount": "",
"awbNumber": "",
"multipleAWBNumbers": null,
"courierShipmentNumber": null,
"multipleCourierShipmentNumbers": null,
"shippedParcels": 0,
"courierStatus": "",
"courierStatusId": 0,
"invoiceUrl": null,
"awbUrl": null,
"deliveryNoteUrl": null,
"status": "Processing",
"isReturned": false,
"returnedDate": "0000-00-00",
"returnStatus": null,
"externalSource": "Metrica",
"externalSourceOrderId": "MHMF101325371H",
"tags": null,
"products": [
{
"productId": 28160,
"quantity": 1,
"isReturned": false,
"returnedDate": "0000-00-00",
"price": 0,
"productInfo": {
"productId": 28160,
"description": "Test Fast print orders",
"pictureUrl": "",
"productCode": "NewTest",
"ean": "5896545632104",
"externalId": 0,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": "2023-11-01T09:37:35.000000Z",
"updatedAt": "2023-11-01T09:37:35.000000Z"
}
}
]
},
{
"orderId": 86496,
"externalId": "MHMF1159224j0f",
"entryDate": "2023-11-01 11:59:22",
"prefDate": "2023-11-01",
"sentDate": "2023-11-06 16:23:35",
"companyName": null,
"companyUniqueIdentifier": "",
"companyRegistrationNumber": null,
"contactPerson": "test fast print",
"address": "божурище",
"streetId": null,
"cityId": null,
"city": "божурище",
"county": "bg",
"country": "Bulgaria",
"postalCode": "2225",
"contactPhone": "+359889902261",
"contactEmail": "",
"lockerDeliveryIdentifier": null,
"cashOnDelivery": "0",
"declaredValueAmount": "0",
"declaredValueAmountCurrency": null,
"warehouseRemarks": "",
"shippingInstructions": "",
"courier": "selfpickup",
"courierSubAccount": "",
"awbNumber": "",
"multipleAWBNumbers": null,
"courierShipmentNumber": null,
"multipleCourierShipmentNumbers": null,
"shippedParcels": 1,
"courierStatus": "",
"courierStatusId": 0,
"invoiceUrl": null,
"awbUrl": null,
"deliveryNoteUrl": null,
"status": "Sent",
"isReturned": false,
"returnedDate": "0000-00-00",
"returnStatus": null,
"externalSource": null,
"externalSourceOrderId": null,
"tags": null,
"products": [
{
"productId": 28160,
"quantity": 1,
"isReturned": false,
"returnedDate": "0000-00-00",
"price": 0,
"productInfo": {
"productId": 28160,
"description": "Test Fast print orders",
"pictureUrl": "",
"productCode": "NewTest",
"ean": "5896545632104",
"externalId": 0,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": "2023-11-01T09:37:35.000000Z",
"updatedAt": "2023-11-01T09:37:35.000000Z"
}
}
]
}
],
"links": {
"first": "https://clients.metrica.bg/api/v1/connectors/client/orders?page=1",
"last": null,
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"path": "https://clients.metrica.bg/api/v1/connectors/client/orders",
"per_page": 500,
"to": 8
},
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Filtered Orders
requires authentication
List all orders that match filters.
Throttling: Max 5 requests per minute. (5/1) Max 20 requests per hour. (20/60)
Presents the result with page size and pagination.
Default page size : 250 records per page. (Maximum 500)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/filter';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
'json' => [
'ids' => '3234201,3234202',
'external_ids' => 'MHMF134018SHNi,MHMF134018SH12',
'startDate' => '2024-01-01 12:59:59',
'endDate' => '2024-12-22 19:30:00',
'dateFilterBy' => 'CREATED_AT',
'sortDate' => 'ASC',
'status' => 'InProcessing,Sent',
'customerName' => 'ContactPerson3',
'customerPhone' => '0700112233',
'isReturned' => false,
'withCashOnDelivery' => '0',
'perPage' => 250,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/filter"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"ids": "3234201,3234202",
"external_ids": "MHMF134018SHNi,MHMF134018SH12",
"startDate": "2024-01-01 12:59:59",
"endDate": "2024-12-22 19:30:00",
"dateFilterBy": "CREATED_AT",
"sortDate": "ASC",
"status": "InProcessing,Sent",
"customerName": "ContactPerson3",
"customerPhone": "0700112233",
"isReturned": false,
"withCashOnDelivery": "0",
"perPage": 250
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/orders/filter?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"ids\": \"3234201,3234202\",
\"external_ids\": \"MHMF134018SHNi,MHMF134018SH12\",
\"startDate\": \"2024-01-01 12:59:59\",
\"endDate\": \"2024-12-22 19:30:00\",
\"dateFilterBy\": \"CREATED_AT\",
\"sortDate\": \"ASC\",
\"status\": \"InProcessing,Sent\",
\"customerName\": \"ContactPerson3\",
\"customerPhone\": \"0700112233\",
\"isReturned\": false,
\"withCashOnDelivery\": \"0\",
\"perPage\": 250
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/filter'
payload = {
"ids": "3234201,3234202",
"external_ids": "MHMF134018SHNi,MHMF134018SH12",
"startDate": "2024-01-01 12:59:59",
"endDate": "2024-12-22 19:30:00",
"dateFilterBy": "CREATED_AT",
"sortDate": "ASC",
"status": "InProcessing,Sent",
"customerName": "ContactPerson3",
"customerPhone": "0700112233",
"isReturned": false,
"withCashOnDelivery": "0",
"perPage": 250
}
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 5
x-ratelimit-remaining: 4
access-control-allow-origin: *
{
"data": [],
"links": {
"first": "https://clients.metrica.bg/api/v1/connectors/client/orders/filter?page=1",
"last": "https://clients.metrica.bg/api/v1/connectors/client/orders/filter?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": null,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://clients.metrica.bg/api/v1/connectors/client/orders/filter?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://clients.metrica.bg/api/v1/connectors/client/orders/filter",
"per_page": 250,
"to": null,
"total": 0
},
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
POST Filter Orders by Date
requires authentication
Returns a list with the orders filtered by the date of entry, the shipping date or the returned date.
Throttling: Max 20 requests per minute. (20/1)
Presents the result with page size and pagination.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/filterByDate';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
'json' => [
'filterBy' => 'entryDate',
'fromDate' => '2020-01-01',
'perPage' => 100,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/filterByDate"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"filterBy": "entryDate",
"fromDate": "2020-01-01",
"perPage": 100
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/orders/filterByDate?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"filterBy\": \"entryDate\",
\"fromDate\": \"2020-01-01\",
\"perPage\": 100
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/filterByDate'
payload = {
"filterBy": "entryDate",
"fromDate": "2020-01-01",
"perPage": 100
}
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload, params=params)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
POST Filter Orders by Date Intervals
requires authentication
Returns a list with the orders between two dates. The result can be filtered by the date of entry, the shipping date or the returned date.
Throttling: Max 20 requests per minute. (20/1)
Presents the result with page size and pagination.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/filterByDateIntervals';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
'json' => [
'filterBy' => 'entryDate',
'startDate' => '2024-01-01',
'endDate' => '2024-01-31',
'withCashOnDelivery' => false,
'perPage' => 100,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/filterByDateIntervals"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"filterBy": "entryDate",
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"withCashOnDelivery": false,
"perPage": 100
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/orders/filterByDateIntervals?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"filterBy\": \"entryDate\",
\"startDate\": \"2024-01-01\",
\"endDate\": \"2024-01-31\",
\"withCashOnDelivery\": false,
\"perPage\": 100
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/filterByDateIntervals'
payload = {
"filterBy": "entryDate",
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"withCashOnDelivery": false,
"perPage": 100
}
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload, params=params)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
POST Filter Orders by Status
requires authentication
List the orders in our system filtering by the order status
Throttling: Max 20 requests per minute. (20/1)
Presents the result with page size and pagination.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/filterByStatus';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
'json' => [
'status' => 'Shipped',
'perPage' => 100,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/filterByStatus"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"status": "Shipped",
"perPage": 100
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/orders/filterByStatus?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"status\": \"Shipped\",
\"perPage\": 100
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/filterByStatus'
payload = {
"status": "Shipped",
"perPage": 100
}
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload, params=params)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Today latest updated orders
requires authentication
Retrieve a list of today's latest updated orders.
Throttling: Max 1 request per 10 minutes. (1/10)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/todayLatestUpdated';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/todayLatestUpdated"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/orders/todayLatestUpdated" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/todayLatestUpdated'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (429):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 400
x-ratelimit-remaining: 338
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Too Many Attempts.",
"code": 429
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Order By ID
requires authentication
Get Order information by internal ID.
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/byId/3234201';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/byId/3234201"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/orders/byId/3234201" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/byId/3234201'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for OrderItem not found",
"code": 404
}
}
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Entry for OrderItem not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Order By External ID
requires authentication
Get Order information by external ID.
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/byExternalId/MHMF1338580SQl';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/byExternalId/MHMF1338580SQl"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/orders/byExternalId/MHMF1338580SQl" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/byExternalId/MHMF1338580SQl'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for OrderItem not found",
"code": 404
}
}
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Entry for OrderItem not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Order By AWB
requires authentication
Get Order information by AWB Number.
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/byAwb/AWBNO9923';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/byAwb/AWBNO9923"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/orders/byAwb/AWBNO9923" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/byAwb/AWBNO9923'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for OrderItem not found",
"code": 404
}
}
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Entry for OrderItem not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Order By External Source Order ID
requires authentication
Get Order information by external source order ID.
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/byExternalSourceOrderId/SID323';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/byExternalSourceOrderId/SID323"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/orders/byExternalSourceOrderId/SID323" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/byExternalSourceOrderId/SID323'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for OrderItem not found",
"code": 404
}
}
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Entry for OrderItem not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Shipped Orders With Expiry Dates
requires authentication
Returns a list with the shipped orders and a field named shippedExpiryDates for each product that contains a list with the quantity of each date/batch. The expiryDate and batch fields will be null if the productType is Normal. The orders are sorted DESC by the shipped date.
Throttling: Max 10 requests per minute. (10/1)
Presents the result with page size and pagination.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/shipped/with/expiryDates';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/shipped/with/expiryDates"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/orders/shipped/with/expiryDates" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/shipped/with/expiryDates'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 10
x-ratelimit-remaining: 9
access-control-allow-origin: *
{
"data": [
{
"orderId": 530034,
"externalId": "MHMF1535183nBV",
"entryDate": "2025-05-28 15:35:18",
"prefDate": "2025-05-28",
"sentDate": "2025-05-29 15:28:54",
"companyName": "",
"companyUniqueIdentifier": "",
"companyRegistrationNumber": null,
"contactPerson": "Тест",
"address": "Симеон Петров 19",
"streetId": null,
"cityId": null,
"city": "Божурище",
"county": "Божурище",
"country": "BG",
"postalCode": "",
"contactPhone": "0888112233",
"contactEmail": "",
"lockerDeliveryIdentifier": null,
"cashOnDelivery": "0",
"declaredValueAmount": "0",
"declaredValueAmountCurrency": null,
"warehouseRemarks": "",
"shippingInstructions": "",
"courier": "selfpickup",
"courierSubAccount": "",
"awbNumber": "",
"multipleAWBNumbers": null,
"courierShipmentNumber": null,
"multipleCourierShipmentNumbers": null,
"shippedParcels": 2,
"courierStatus": "",
"courierStatusId": 0,
"invoiceUrl": null,
"awbUrl": null,
"deliveryNoteUrl": null,
"status": "Sent",
"isReturned": false,
"returnedDate": "0000-00-00",
"returnStatus": null,
"externalSource": "Metrica",
"externalSourceOrderId": "MHMF1535183nBV",
"tags": null,
"products": [
{
"productId": 9,
"quantity": 2,
"isReturned": false,
"returnedDate": "0000-00-00",
"price": 0,
"productInfo": {
"productId": 9,
"description": "Produs TestClient 8Produs TestClient 8Produs TestClient 8",
"pictureUrl": "",
"productCode": "prodtestclient8",
"ean": "zang8",
"externalId": 10008,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
"shippedExpiryDates": [
{
"productId": 9,
"expiryDate": null,
"batch": null,
"quantity": 2
}
]
}
]
},
{
"orderId": 86496,
"externalId": "MHMF1159224j0f",
"entryDate": "2023-11-01 11:59:22",
"prefDate": "2023-11-01",
"sentDate": "2023-11-06 16:23:35",
"companyName": null,
"companyUniqueIdentifier": "",
"companyRegistrationNumber": null,
"contactPerson": "test fast print",
"address": "божурище",
"streetId": null,
"cityId": null,
"city": "божурище",
"county": "bg",
"country": "Bulgaria",
"postalCode": "2225",
"contactPhone": "+359889902261",
"contactEmail": "",
"lockerDeliveryIdentifier": null,
"cashOnDelivery": "0",
"declaredValueAmount": "0",
"declaredValueAmountCurrency": null,
"warehouseRemarks": "",
"shippingInstructions": "",
"courier": "selfpickup",
"courierSubAccount": "",
"awbNumber": "",
"multipleAWBNumbers": null,
"courierShipmentNumber": null,
"multipleCourierShipmentNumbers": null,
"shippedParcels": 1,
"courierStatus": "",
"courierStatusId": 0,
"invoiceUrl": null,
"awbUrl": null,
"deliveryNoteUrl": null,
"status": "Sent",
"isReturned": false,
"returnedDate": "0000-00-00",
"returnStatus": null,
"externalSource": null,
"externalSourceOrderId": null,
"tags": null,
"products": [
{
"productId": 28160,
"quantity": 1,
"isReturned": false,
"returnedDate": "0000-00-00",
"price": 0,
"productInfo": {
"productId": 28160,
"description": "Test Fast print orders",
"pictureUrl": "",
"productCode": "NewTest",
"ean": "5896545632104",
"externalId": 0,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": "2023-11-01T09:37:35.000000Z",
"updatedAt": "2023-11-01T09:37:35.000000Z"
},
"shippedExpiryDates": []
}
]
},
{
"orderId": 414293,
"externalId": "40098",
"entryDate": "2025-01-20 12:34:16",
"prefDate": "2025-01-20",
"sentDate": null,
"companyName": null,
"companyUniqueIdentifier": "",
"companyRegistrationNumber": null,
"contactPerson": "Tihomir Sokolov МЕРКОРИЯ",
"address": "33, Bakston blvd.",
"streetId": 0,
"cityId": null,
"city": "София",
"county": "София",
"country": "BG",
"postalCode": "1000",
"contactPhone": "0899196290",
"contactEmail": "tihomir.sokolov@gmail.com",
"lockerDeliveryIdentifier": null,
"cashOnDelivery": "0",
"declaredValueAmount": "0",
"declaredValueAmountCurrency": null,
"warehouseRemarks": " ",
"shippingInstructions": "тест ТТ",
"courier": "speedy",
"courierSubAccount": null,
"awbNumber": "",
"multipleAWBNumbers": null,
"courierShipmentNumber": null,
"multipleCourierShipmentNumbers": null,
"shippedParcels": 0,
"courierStatus": "",
"courierStatusId": 0,
"invoiceUrl": "",
"awbUrl": "",
"deliveryNoteUrl": null,
"status": "Sent",
"isReturned": false,
"returnedDate": "0000-00-00",
"returnStatus": null,
"externalSource": null,
"externalSourceOrderId": null,
"tags": null,
"products": [
{
"productId": 1,
"quantity": 4,
"isReturned": false,
"returnedDate": "0000-00-00",
"price": 0,
"productInfo": {
"productId": 1,
"description": "Produs neregasit in BD - Comanda incompleta",
"pictureUrl": "",
"productCode": "",
"ean": "",
"externalId": -1,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
"shippedExpiryDates": []
}
]
}
],
"links": {
"first": "https://clients.metrica.bg/api/v1/connectors/client/orders/shipped/with/expiryDates?page=1",
"last": "https://clients.metrica.bg/api/v1/connectors/client/orders/shipped/with/expiryDates?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://clients.metrica.bg/api/v1/connectors/client/orders/shipped/with/expiryDates?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://clients.metrica.bg/api/v1/connectors/client/orders/shipped/with/expiryDates",
"per_page": 150,
"to": 3,
"total": 3
},
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
CREATE Order
requires authentication
Creates a new Order.
Throttling: Max 15 requests per minute. (15/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/create';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'externalId' => 'ID123',
'prefDate' => '2040-12-31',
'address' => 'Str. My Street, No.10, Ap. 99',
'streetId' => 995,
'cityId' => 15,
'city' => 'Bucuresti',
'county' => 'Sector 1',
'country' => 'RO',
'postalCode' => '010111',
'companyName' => 'Company SA',
'companyUniqueIdentifier' => 'RO55599888',
'companyRegistrationNumber' => 'J99/9999/1950',
'contactPerson' => 'Contact Person',
'contactPhone' => '0700999111',
'contactEmail' => 'test@test.com',
'cashOnDelivery' => '100.99',
'declaredValueAmount' => '100.99',
'warehouseRemarks' => 'voluptatem',
'shippingInstructions' => 'molestias',
'courierId' => 15,
'courierSubAccountId' => 4,
'awbUrl' => 'https://pathtomyawb.pdf',
'invoiceUrl' => 'https://pathtomyinvoice.pdf',
'deliveryNoteUrl' => 'https://pathtomydeliverynote.pdf',
'maxKeepDays' => 365,
'externalSource' => 'Shopify MyWebSite',
'externalSourceOrderId' => 'AxZ00001',
'awbNumber' => 'AWB001',
'withPriority' => false,
'saveAsLocked' => false,
'lockerId' => '"5959"',
'useOverriddenValidationRules' => false,
'products' => [
[
'id' => '184736',
'quantity' => 3,
'price' => 100.9999,
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/create"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"externalId": "ID123",
"prefDate": "2040-12-31",
"address": "Str. My Street, No.10, Ap. 99",
"streetId": 995,
"cityId": 15,
"city": "Bucuresti",
"county": "Sector 1",
"country": "RO",
"postalCode": "010111",
"companyName": "Company SA",
"companyUniqueIdentifier": "RO55599888",
"companyRegistrationNumber": "J99\/9999\/1950",
"contactPerson": "Contact Person",
"contactPhone": "0700999111",
"contactEmail": "test@test.com",
"cashOnDelivery": "100.99",
"declaredValueAmount": "100.99",
"warehouseRemarks": "voluptatem",
"shippingInstructions": "molestias",
"courierId": 15,
"courierSubAccountId": 4,
"awbUrl": "https:\/\/pathtomyawb.pdf",
"invoiceUrl": "https:\/\/pathtomyinvoice.pdf",
"deliveryNoteUrl": "https:\/\/pathtomydeliverynote.pdf",
"maxKeepDays": 365,
"externalSource": "Shopify MyWebSite",
"externalSourceOrderId": "AxZ00001",
"awbNumber": "AWB001",
"withPriority": false,
"saveAsLocked": false,
"lockerId": "\"5959\"",
"useOverriddenValidationRules": false,
"products": [
{
"id": "184736",
"quantity": 3,
"price": 100.9999
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/orders/create" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"externalId\": \"ID123\",
\"prefDate\": \"2040-12-31\",
\"address\": \"Str. My Street, No.10, Ap. 99\",
\"streetId\": 995,
\"cityId\": 15,
\"city\": \"Bucuresti\",
\"county\": \"Sector 1\",
\"country\": \"RO\",
\"postalCode\": \"010111\",
\"companyName\": \"Company SA\",
\"companyUniqueIdentifier\": \"RO55599888\",
\"companyRegistrationNumber\": \"J99\\/9999\\/1950\",
\"contactPerson\": \"Contact Person\",
\"contactPhone\": \"0700999111\",
\"contactEmail\": \"test@test.com\",
\"cashOnDelivery\": \"100.99\",
\"declaredValueAmount\": \"100.99\",
\"warehouseRemarks\": \"voluptatem\",
\"shippingInstructions\": \"molestias\",
\"courierId\": 15,
\"courierSubAccountId\": 4,
\"awbUrl\": \"https:\\/\\/pathtomyawb.pdf\",
\"invoiceUrl\": \"https:\\/\\/pathtomyinvoice.pdf\",
\"deliveryNoteUrl\": \"https:\\/\\/pathtomydeliverynote.pdf\",
\"maxKeepDays\": 365,
\"externalSource\": \"Shopify MyWebSite\",
\"externalSourceOrderId\": \"AxZ00001\",
\"awbNumber\": \"AWB001\",
\"withPriority\": false,
\"saveAsLocked\": false,
\"lockerId\": \"\\\"5959\\\"\",
\"useOverriddenValidationRules\": false,
\"products\": [
{
\"id\": \"184736\",
\"quantity\": 3,
\"price\": 100.9999
}
]
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/create'
payload = {
"externalId": "ID123",
"prefDate": "2040-12-31",
"address": "Str. My Street, No.10, Ap. 99",
"streetId": 995,
"cityId": 15,
"city": "Bucuresti",
"county": "Sector 1",
"country": "RO",
"postalCode": "010111",
"companyName": "Company SA",
"companyUniqueIdentifier": "RO55599888",
"companyRegistrationNumber": "J99\/9999\/1950",
"contactPerson": "Contact Person",
"contactPhone": "0700999111",
"contactEmail": "test@test.com",
"cashOnDelivery": "100.99",
"declaredValueAmount": "100.99",
"warehouseRemarks": "voluptatem",
"shippingInstructions": "molestias",
"courierId": 15,
"courierSubAccountId": 4,
"awbUrl": "https:\/\/pathtomyawb.pdf",
"invoiceUrl": "https:\/\/pathtomyinvoice.pdf",
"deliveryNoteUrl": "https:\/\/pathtomydeliverynote.pdf",
"maxKeepDays": 365,
"externalSource": "Shopify MyWebSite",
"externalSourceOrderId": "AxZ00001",
"awbNumber": "AWB001",
"withPriority": false,
"saveAsLocked": false,
"lockerId": "\"5959\"",
"useOverriddenValidationRules": false,
"products": [
{
"id": "184736",
"quantity": 3,
"price": 100.9999
}
]
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
UPDATE Order
requires authentication
Updates order by ID
Throttling: Max 15 requests per minute. (15/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/update/';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'address' => 'Str. My Street, No.10, Ap. 99',
'city' => 'Bucuresti',
'county' => 'Sector 12307050000008470',
'country' => 'RO',
'postalCode' => 'quam',
'companyName' => 'Company SA',
'companyUniqueIdentifier' => 'RO55599888',
'companyRegistrationNumber' => 'J99/9999/1950',
'contactPerson' => 'fugiat',
'contactPhone' => '0700999111',
'contactEmail' => 'stan38@example.com',
'cashOnDelivery' => '100.99',
'warehouseRemarks' => 'suscipit',
'shippingInstructions' => 'rerum',
'courierId' => 15,
'courierSubAccountId' => 4,
'awbUrl' => 'https://pathtomyawb.pdf',
'invoiceUrl' => 'https://pathtomyinvoice.pdf',
'deliveryNoteUrl' => 'https://pathtomydeliverynote.pdf',
'maxKeepDays' => 365,
'externalSource' => 'Shopify MyWebSite',
'externalSourceOrderId' => 'AxZ00001',
'awbNumber' => 'AWB001',
'withPriority' => false,
'lockerId' => '"5959"',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/update/"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"address": "Str. My Street, No.10, Ap. 99",
"city": "Bucuresti",
"county": "Sector 12307050000008470",
"country": "RO",
"postalCode": "quam",
"companyName": "Company SA",
"companyUniqueIdentifier": "RO55599888",
"companyRegistrationNumber": "J99\/9999\/1950",
"contactPerson": "fugiat",
"contactPhone": "0700999111",
"contactEmail": "stan38@example.com",
"cashOnDelivery": "100.99",
"warehouseRemarks": "suscipit",
"shippingInstructions": "rerum",
"courierId": 15,
"courierSubAccountId": 4,
"awbUrl": "https:\/\/pathtomyawb.pdf",
"invoiceUrl": "https:\/\/pathtomyinvoice.pdf",
"deliveryNoteUrl": "https:\/\/pathtomydeliverynote.pdf",
"maxKeepDays": 365,
"externalSource": "Shopify MyWebSite",
"externalSourceOrderId": "AxZ00001",
"awbNumber": "AWB001",
"withPriority": false,
"lockerId": "\"5959\""
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request PUT \
"https://clients.metrica.bg/api/v1/connectors/client/orders/update/" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"address\": \"Str. My Street, No.10, Ap. 99\",
\"city\": \"Bucuresti\",
\"county\": \"Sector 12307050000008470\",
\"country\": \"RO\",
\"postalCode\": \"quam\",
\"companyName\": \"Company SA\",
\"companyUniqueIdentifier\": \"RO55599888\",
\"companyRegistrationNumber\": \"J99\\/9999\\/1950\",
\"contactPerson\": \"fugiat\",
\"contactPhone\": \"0700999111\",
\"contactEmail\": \"stan38@example.com\",
\"cashOnDelivery\": \"100.99\",
\"warehouseRemarks\": \"suscipit\",
\"shippingInstructions\": \"rerum\",
\"courierId\": 15,
\"courierSubAccountId\": 4,
\"awbUrl\": \"https:\\/\\/pathtomyawb.pdf\",
\"invoiceUrl\": \"https:\\/\\/pathtomyinvoice.pdf\",
\"deliveryNoteUrl\": \"https:\\/\\/pathtomydeliverynote.pdf\",
\"maxKeepDays\": 365,
\"externalSource\": \"Shopify MyWebSite\",
\"externalSourceOrderId\": \"AxZ00001\",
\"awbNumber\": \"AWB001\",
\"withPriority\": false,
\"lockerId\": \"\\\"5959\\\"\"
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/update/'
payload = {
"address": "Str. My Street, No.10, Ap. 99",
"city": "Bucuresti",
"county": "Sector 12307050000008470",
"country": "RO",
"postalCode": "quam",
"companyName": "Company SA",
"companyUniqueIdentifier": "RO55599888",
"companyRegistrationNumber": "J99\/9999\/1950",
"contactPerson": "fugiat",
"contactPhone": "0700999111",
"contactEmail": "stan38@example.com",
"cashOnDelivery": "100.99",
"warehouseRemarks": "suscipit",
"shippingInstructions": "rerum",
"courierId": 15,
"courierSubAccountId": 4,
"awbUrl": "https:\/\/pathtomyawb.pdf",
"invoiceUrl": "https:\/\/pathtomyinvoice.pdf",
"deliveryNoteUrl": "https:\/\/pathtomydeliverynote.pdf",
"maxKeepDays": 365,
"externalSource": "Shopify MyWebSite",
"externalSourceOrderId": "AxZ00001",
"awbNumber": "AWB001",
"withPriority": false,
"lockerId": "\"5959\""
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
UPDATE Order Url Field
requires authentication
Directly updates order url fields by ID
Throttling: Max 5 requests per minute. (5/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/updateUrlField/';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'urlField' => 'invoiceUrl',
'url' => 'https://pathtomyurl.pdf',
'deliveryNoteSerialNumber' => 'NO-001',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/updateUrlField/"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"urlField": "invoiceUrl",
"url": "https:\/\/pathtomyurl.pdf",
"deliveryNoteSerialNumber": "NO-001"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request PUT \
"https://clients.metrica.bg/api/v1/connectors/client/orders/updateUrlField/" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"urlField\": \"invoiceUrl\",
\"url\": \"https:\\/\\/pathtomyurl.pdf\",
\"deliveryNoteSerialNumber\": \"NO-001\"
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/updateUrlField/'
payload = {
"urlField": "invoiceUrl",
"url": "https:\/\/pathtomyurl.pdf",
"deliveryNoteSerialNumber": "NO-001"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
DELETE Order By ID
requires authentication
Delete Order by internal id
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/delete/';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/delete/"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());curl --request DELETE \
"https://clients.metrica.bg/api/v1/connectors/client/orders/delete/" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/delete/'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for OrderItem not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
LOCK Order By ID
requires authentication
LOCK Order by internal id. This will prevent the start of order processing until it's unlocked.
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/lock/';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/lock/"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/orders/lock/" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/lock/'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for OrderItem not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
UNLOCK Order By ID
requires authentication
UNLOCK Order by internal id. This will unlock the order so the warehouse operators can start the picking and packing processes.
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/unlock/';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/unlock/"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/orders/unlock/" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/unlock/'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for OrderItem not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET External Source List
requires authentication
Retrieve a list with the allowed external sources.
Throttling: Max 100 requests per minute. (100/1)
Please inform us if your source is not on this list, so we can add it.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/externalSourceList';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/externalSourceList"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/orders/externalSourceList" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/externalSourceList'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 100
x-ratelimit-remaining: 99
access-control-allow-origin: *
{
"data": [
"Fulfill",
"Gomag",
"EasySales",
"Teamshare",
"ContentSpeed",
"BaseLinker",
"VTEX",
"Shopify",
"Magento",
"PrestaShop",
"OpenCart",
"WooCommerce",
"MerchantPro",
"EMAG RO",
"EMAG HU",
"EMAG BG",
"CEL",
"Elefant",
"Vivre",
"OLX",
"Okazii",
"Wordpress",
"Mentor",
"Metrica",
"Fashion Days",
"Trendyol",
"SeniorSoftware"
],
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
REQUEST DPD Pickup
requires authentication
Creates a new DPD AWB number and Pickup request for the given order ID.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/requestDPDPickup';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'id' => '1234',
'identifiedAs' => 'orderId',
'sender' => [
'clientName' => 'Company 999',
'contactName' => 'Contact Test',
'contactPhoneNumber' => 'delectus',
'address' => 'Test address',
'city' => 'City',
'county' => 'County',
'postCode' => '999999',
],
'extra' => [
'declaredValueAmount' => '100.99',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/requestDPDPickup"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"id": "1234",
"identifiedAs": "orderId",
"sender": {
"clientName": "Company 999",
"contactName": "Contact Test",
"contactPhoneNumber": "delectus",
"address": "Test address",
"city": "City",
"county": "County",
"postCode": "999999"
},
"extra": {
"declaredValueAmount": "100.99"
}
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/orders/requestDPDPickup" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"id\": \"1234\",
\"identifiedAs\": \"orderId\",
\"sender\": {
\"clientName\": \"Company 999\",
\"contactName\": \"Contact Test\",
\"contactPhoneNumber\": \"delectus\",
\"address\": \"Test address\",
\"city\": \"City\",
\"county\": \"County\",
\"postCode\": \"999999\"
},
\"extra\": {
\"declaredValueAmount\": \"100.99\"
}
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/requestDPDPickup'
payload = {
"id": "1234",
"identifiedAs": "orderId",
"sender": {
"clientName": "Company 999",
"contactName": "Contact Test",
"contactPhoneNumber": "delectus",
"address": "Test address",
"city": "City",
"county": "County",
"postCode": "999999"
},
"extra": {
"declaredValueAmount": "100.99"
}
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
API V1 - Order Invoices
Order Invoice Endpoints
GET Invoices Information
requires authentication
Returns a list with all invoices information that can be filtered by the available parameters.
Throttling: Max 20 requests per hour. (20/60)
Default page size : 100 records per page.
Presents the result with page size and pagination.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
'json' => [
'hasInvoiceNumber' => false,
'orderIsShipped' => true,
'startDate' => '2024-01-01 12:59:59',
'dateQueryType' => 'orderSentDate',
'orderByField' => 'orderSentDate',
'orderByDirection' => 'ASC',
'perPage' => 100,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"hasInvoiceNumber": false,
"orderIsShipped": true,
"startDate": "2024-01-01 12:59:59",
"dateQueryType": "orderSentDate",
"orderByField": "orderSentDate",
"orderByDirection": "ASC",
"perPage": 100
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"hasInvoiceNumber\": false,
\"orderIsShipped\": true,
\"startDate\": \"2024-01-01 12:59:59\",
\"dateQueryType\": \"orderSentDate\",
\"orderByField\": \"orderSentDate\",
\"orderByDirection\": \"ASC\",
\"perPage\": 100
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information'
payload = {
"hasInvoiceNumber": false,
"orderIsShipped": true,
"startDate": "2024-01-01 12:59:59",
"dateQueryType": "orderSentDate",
"orderByField": "orderSentDate",
"orderByDirection": "ASC",
"perPage": 100
}
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 10
x-ratelimit-remaining: 9
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Invoice Info By Order ID
requires authentication
GET Invoice Information By Order internal ID
Throttling: Max 10 requests per minute. (10/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information/byOrderId/asperiores';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information/byOrderId/asperiores"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information/byOrderId/asperiores" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information/byOrderId/asperiores'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 10
x-ratelimit-remaining: 9
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Example response (404):
{
"success": false,
"error": {
"message": "Entry for OrderItem not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
CREATE Order Invoice Information
requires authentication
Creates a new Order Invoice Information.
Throttling: Max 15 requests per minute. (15/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information/create/';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'isLegalEntity' => false,
'companyName' => 'Company Name',
'companyUniqueIdentifier' => 'RO55599888',
'companyRegistrationNumber' => 'J99/9999/1950',
'companyBankName' => 'The Bank of',
'companyIban' => 'RO49AAAA1B31007593840000',
'firstName' => 'First',
'lastName' => 'Last',
'address' => 'Str. My Street, No.10, Ap. 99',
'city' => 'Bucuresti',
'county' => 'Sector 1',
'country' => 'RO',
'postalCode' => '010111',
'phone' => '0700999111',
'email' => 'test@test.com',
'shippingTax' => '100.50',
'processingFee' => '0',
'discountsTotal' => '100.99',
'invoiceTotal' => '999.99',
'invoiceNumber' => 'SN-RO-001',
'urlPath' => 'https://pathtomyinvoice.pdf',
'unlockOrder' => false,
'sameLinesAsOrder' => false,
'linesPriceCheck' => false,
'discounts' => [
[
'name' => 'Discount Name No-1',
'value' => '100.9999',
],
],
'discountApplications' => [
[
'allocationMethod' => 'each',
'targetSelection' => 'explicit',
'targetType' => 'shipping_line',
'code' => 'CODEX101',
'title' => 'title',
'description' => 'description',
'type' => 'discount_code',
'value' => '20.0',
'valueType' => 'fixed_amount',
'calculatedAmount' => '100.9999',
],
],
'invoiceLines' => [
[
'productId' => 123456,
'lineExternalIdentifier' => 'reiciendis',
'pricePerUnit' => '10.55',
'quantity' => 5,
'totalDiscount' => '10.55',
'taxLines' => [
[
'title' => 'VAT RO',
],
],
'price' => '10.55',
'rate' => '0.99',
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information/create/"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"isLegalEntity": false,
"companyName": "Company Name",
"companyUniqueIdentifier": "RO55599888",
"companyRegistrationNumber": "J99\/9999\/1950",
"companyBankName": "The Bank of",
"companyIban": "RO49AAAA1B31007593840000",
"firstName": "First",
"lastName": "Last",
"address": "Str. My Street, No.10, Ap. 99",
"city": "Bucuresti",
"county": "Sector 1",
"country": "RO",
"postalCode": "010111",
"phone": "0700999111",
"email": "test@test.com",
"shippingTax": "100.50",
"processingFee": "0",
"discountsTotal": "100.99",
"invoiceTotal": "999.99",
"invoiceNumber": "SN-RO-001",
"urlPath": "https:\/\/pathtomyinvoice.pdf",
"unlockOrder": false,
"sameLinesAsOrder": false,
"linesPriceCheck": false,
"discounts": [
{
"name": "Discount Name No-1",
"value": "100.9999"
}
],
"discountApplications": [
{
"allocationMethod": "each",
"targetSelection": "explicit",
"targetType": "shipping_line",
"code": "CODEX101",
"title": "title",
"description": "description",
"type": "discount_code",
"value": "20.0",
"valueType": "fixed_amount",
"calculatedAmount": "100.9999"
}
],
"invoiceLines": [
{
"productId": 123456,
"lineExternalIdentifier": "reiciendis",
"pricePerUnit": "10.55",
"quantity": 5,
"totalDiscount": "10.55",
"taxLines": [
{
"title": "VAT RO"
}
],
"price": "10.55",
"rate": "0.99"
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information/create/" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"isLegalEntity\": false,
\"companyName\": \"Company Name\",
\"companyUniqueIdentifier\": \"RO55599888\",
\"companyRegistrationNumber\": \"J99\\/9999\\/1950\",
\"companyBankName\": \"The Bank of\",
\"companyIban\": \"RO49AAAA1B31007593840000\",
\"firstName\": \"First\",
\"lastName\": \"Last\",
\"address\": \"Str. My Street, No.10, Ap. 99\",
\"city\": \"Bucuresti\",
\"county\": \"Sector 1\",
\"country\": \"RO\",
\"postalCode\": \"010111\",
\"phone\": \"0700999111\",
\"email\": \"test@test.com\",
\"shippingTax\": \"100.50\",
\"processingFee\": \"0\",
\"discountsTotal\": \"100.99\",
\"invoiceTotal\": \"999.99\",
\"invoiceNumber\": \"SN-RO-001\",
\"urlPath\": \"https:\\/\\/pathtomyinvoice.pdf\",
\"unlockOrder\": false,
\"sameLinesAsOrder\": false,
\"linesPriceCheck\": false,
\"discounts\": [
{
\"name\": \"Discount Name No-1\",
\"value\": \"100.9999\"
}
],
\"discountApplications\": [
{
\"allocationMethod\": \"each\",
\"targetSelection\": \"explicit\",
\"targetType\": \"shipping_line\",
\"code\": \"CODEX101\",
\"title\": \"title\",
\"description\": \"description\",
\"type\": \"discount_code\",
\"value\": \"20.0\",
\"valueType\": \"fixed_amount\",
\"calculatedAmount\": \"100.9999\"
}
],
\"invoiceLines\": [
{
\"productId\": 123456,
\"lineExternalIdentifier\": \"reiciendis\",
\"pricePerUnit\": \"10.55\",
\"quantity\": 5,
\"totalDiscount\": \"10.55\",
\"taxLines\": [
{
\"title\": \"VAT RO\"
}
],
\"price\": \"10.55\",
\"rate\": \"0.99\"
}
]
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information/create/'
payload = {
"isLegalEntity": false,
"companyName": "Company Name",
"companyUniqueIdentifier": "RO55599888",
"companyRegistrationNumber": "J99\/9999\/1950",
"companyBankName": "The Bank of",
"companyIban": "RO49AAAA1B31007593840000",
"firstName": "First",
"lastName": "Last",
"address": "Str. My Street, No.10, Ap. 99",
"city": "Bucuresti",
"county": "Sector 1",
"country": "RO",
"postalCode": "010111",
"phone": "0700999111",
"email": "test@test.com",
"shippingTax": "100.50",
"processingFee": "0",
"discountsTotal": "100.99",
"invoiceTotal": "999.99",
"invoiceNumber": "SN-RO-001",
"urlPath": "https:\/\/pathtomyinvoice.pdf",
"unlockOrder": false,
"sameLinesAsOrder": false,
"linesPriceCheck": false,
"discounts": [
{
"name": "Discount Name No-1",
"value": "100.9999"
}
],
"discountApplications": [
{
"allocationMethod": "each",
"targetSelection": "explicit",
"targetType": "shipping_line",
"code": "CODEX101",
"title": "title",
"description": "description",
"type": "discount_code",
"value": "20.0",
"valueType": "fixed_amount",
"calculatedAmount": "100.9999"
}
],
"invoiceLines": [
{
"productId": 123456,
"lineExternalIdentifier": "reiciendis",
"pricePerUnit": "10.55",
"quantity": 5,
"totalDiscount": "10.55",
"taxLines": [
{
"title": "VAT RO"
}
],
"price": "10.55",
"rate": "0.99"
}
]
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
UPDATE Order Invoice Info Number
requires authentication
Updates the invoice number for the Order invoice information by ID
Throttling: Max 50 requests per minute. (50/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information/update/13/invoiceNumber';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
'json' => [
'invoiceNumber' => 'SN-RO-001',
'urlPath' => 'https://pathtomyinvoice.pdf',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information/update/13/invoiceNumber"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"invoiceNumber": "SN-RO-001",
"urlPath": "https:\/\/pathtomyinvoice.pdf"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information/update/13/invoiceNumber?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"invoiceNumber\": \"SN-RO-001\",
\"urlPath\": \"https:\\/\\/pathtomyinvoice.pdf\"
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/orders/invoice/information/update/13/invoiceNumber'
payload = {
"invoiceNumber": "SN-RO-001",
"urlPath": "https:\/\/pathtomyinvoice.pdf"
}
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload, params=params)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
API V1 - Products
Products Endpoints
- The GET All Products endpoint usage is not recommended even if is still provided. Information about products is rarely changed on our system. As the number of products can increase, the number of pages will grow constantly. On long term parsing all the results will become a cumbersome and a resource-consuming process.
- Information about latest products should always be requested with the help of GET Filtered Products or Created/Updated today filtering endpoints.
- Usage of GET Product By endpoints is not recommended in a list/array larger than 10-20 products.
GET All Products
requires authentication
List all products.
Presents the result with page size and simple pagination (without showing the total number of records and last page).
Throttling: Max 20 requests per minute. (20/1) Max 100 requests per hour. (100/60)
Default page size : 1000 records per page.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/products';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/products"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/products?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/products'
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 20
x-ratelimit-remaining: 19
access-control-allow-origin: *
{
"data": [
{
"productId": 1,
"description": "Produs neregasit in BD - Comanda incompleta",
"pictureUrl": "",
"productCode": "",
"ean": "",
"externalId": -1,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 2,
"description": "\"Produs TestClient 1",
"pictureUrl": "https://www.youtube.com/test/123/",
"productCode": "prodtestclient1",
"ean": "zang1",
"externalId": 10001,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 25000,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 3,
"description": "Produs TestClient 2",
"pictureUrl": "",
"productCode": "prodtestclient2",
"ean": "zang2",
"externalId": 10002,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 1000,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 4,
"description": "Produs TestClient 3",
"pictureUrl": "",
"productCode": "prodtestclient3",
"ean": "zang3",
"externalId": 10003,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 5,
"description": "Produs TestClient 4",
"pictureUrl": "",
"productCode": "prodtestclient4",
"ean": "zang4",
"externalId": 10004,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": true,
"createdAt": null,
"updatedAt": null
},
{
"productId": 6,
"description": "Produs TestClient 5",
"pictureUrl": "",
"productCode": "prodtestclient5",
"ean": "zang5",
"externalId": 10005,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 7,
"description": "Produs TestClient 6",
"pictureUrl": "",
"productCode": "prodtestclient6",
"ean": "zang6",
"externalId": 10006,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 8,
"description": "Produs TestClient 7",
"pictureUrl": "",
"productCode": "prodtestclient7",
"ean": "zang7",
"externalId": 10007,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 9,
"description": "Produs TestClient 8Produs TestClient 8Produs TestClient 8",
"pictureUrl": "",
"productCode": "prodtestclient8",
"ean": "zang8",
"externalId": 10008,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 10,
"description": "Produs TestClient 9",
"pictureUrl": "",
"productCode": "prodtestclient9",
"ean": "zang9",
"externalId": 10009,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 11,
"description": "Produs TestClient 10",
"pictureUrl": "",
"productCode": "prodtestclient10",
"ean": "zang10",
"externalId": 10010,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 12,
"description": "Produs TestClient 11",
"pictureUrl": "",
"productCode": "prodtestclient11",
"ean": "zang11",
"externalId": 10011,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 13,
"description": "Produs TestClient 12Produs TestClient 12Produs TestClient 12Produs TestClient 12Produs TestClient 12",
"pictureUrl": "",
"productCode": "prodtestclient12",
"ean": "zang12",
"externalId": 10012,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "With Expiration Date",
"expirationType": "1",
"expirationTypeDescription": "With Expiration Date",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 14,
"description": "Produs TestClient 13",
"pictureUrl": "",
"productCode": "prodtestclient13",
"ean": "zang13",
"externalId": 10013,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "With Expiration Date & Production Batch",
"expirationType": "2",
"expirationTypeDescription": "With Expiration Date & Production Batch",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 15,
"description": "Produs TestClient 14",
"pictureUrl": "",
"productCode": "prodtestclient14",
"ean": "zang14",
"externalId": 10014,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 16,
"description": "Produs TestClient 15",
"pictureUrl": "",
"productCode": "prodtestclient15",
"ean": "zang15",
"externalId": 10015,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "With Expiration Date & Production Batch",
"expirationType": "2",
"expirationTypeDescription": "With Expiration Date & Production Batch",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 17,
"description": "Produs TestClient 16",
"pictureUrl": "",
"productCode": "prodtestclient16",
"ean": "zang16",
"externalId": 10016,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 18,
"description": "Produs TestClient 17",
"pictureUrl": "",
"productCode": "prodtestclient17",
"ean": "zang17",
"externalId": 10017,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 19,
"description": "Produs TestClient 18",
"pictureUrl": "",
"productCode": "prodtestclient18",
"ean": "zang18",
"externalId": 10018,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 20,
"description": "Produs TestClient 19",
"pictureUrl": "",
"productCode": "prodtestclient19",
"ean": "zang19",
"externalId": 10019,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": null,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 21,
"description": "Produs TestClient 20",
"pictureUrl": "",
"productCode": "prodtestclient20",
"ean": "zang20",
"externalId": 10020,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 100,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 22,
"description": "Produs evidenta palet sus",
"pictureUrl": "",
"productCode": "paletproduct_22",
"ean": "paletproduct_22",
"externalId": 0,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 12212,
"description": "Produs TestClient 99992",
"pictureUrl": "",
"productCode": "8033524170111-DEC",
"ean": "meh1_a_A-a.a..a.az",
"externalId": 0,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": true,
"createdAt": "2023-07-13T12:46:41.000000Z",
"updatedAt": "2023-11-01T09:32:08.000000Z"
},
{
"productId": 28160,
"description": "Test Fast print orders",
"pictureUrl": "",
"productCode": "NewTest",
"ean": "5896545632104",
"externalId": 0,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": "2023-11-01T09:37:35.000000Z",
"updatedAt": "2023-11-01T09:37:35.000000Z"
},
{
"productId": 86271,
"description": "Rapala Sliver Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45268-rapala-sliver-vobler-2.jpg",
"productCode": "10329",
"ean": "",
"externalId": 45268,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 16,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86272,
"description": "Rapala Shadow Rap Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45271-rapala-shadow-rap-vobler-2.jpg",
"productCode": "10426",
"ean": "",
"externalId": 45271,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 12,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86273,
"description": "Salmo Image Tiny Sinking Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45272-salmo-image-tiny-sinking-vobler-1.jpg",
"productCode": "10539",
"ean": "",
"externalId": 45272,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 2,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86274,
"description": "Salmo Freediver Super Deep Runner Floating 12 cm Воблер плуващ",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45273-salmo-freediver-super-deep-runner-floating-vobler-3.jpg",
"productCode": "10633",
"ean": "",
"externalId": 45273,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 24,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86275,
"description": "Simrad NSS7 Evo2 Touch Сонар",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47969-180903101803simrad-nss7-evo2-touch-sonar-4.jpg",
"productCode": "20162",
"ean": "",
"externalId": 47969,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86276,
"description": "Humminbird Onyx 8cxi SI Combo Сонар",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47966-180903101708humminbird-onyx-8cxi-si-combo-sonar-1.jpg",
"productCode": "20163",
"ean": "",
"externalId": 47966,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86277,
"description": "Humminbird 1199cxi HD SI Combo Сонар",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47970-180831172407humminbird-1199cxi-hd-si-combo-sonar-2.jpg",
"productCode": "20164",
"ean": "",
"externalId": 47970,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86278,
"description": "Humminbird 999cxi HD SI COMBO Сонар",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47971-180903101618humminbird-999cxi-hd-si-combo-sonar-1.png",
"productCode": "20165",
"ean": "",
"externalId": 47971,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86279,
"description": "Humminbird 899cxi HD SI Combo Сонар",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47972-180903101526humminbird-899cxi-hd-si-combo-sonar-2.png",
"productCode": "20166",
"ean": "",
"externalId": 47972,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86280,
"description": "Strike Pro Cyber Vibe JG-005A 3.5см 4.5г Цикада",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47943-strike-pro-cyber-vibe-jg-005a-35sm-45g-cikada-1.png",
"productCode": "20277",
"ean": "",
"externalId": 47943,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 4,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86281,
"description": "Simrad NSS 9 Evo3 Сонар",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47973-simrad-nss-9-evo3-sonar-1.jpg",
"productCode": "26190",
"ean": "",
"externalId": 47973,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86282,
"description": "Simrad NSS 7 Evo3 Сонар",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47974-simrad-nss-7-evo3-sonar-1.jpg",
"productCode": "26192",
"ean": "",
"externalId": 47974,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86283,
"description": "Humminbird Helix 12 Chirp SI GPS Сонар",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47975-humminbird-helix-12-chirp-si-gps-sonar-1.jpg",
"productCode": "26208",
"ean": "",
"externalId": 47975,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86284,
"description": "Humminbird HELIX 12 CHIRP MEGA SI GPS G2N Сонар",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47963-humminbird-helix-12-chirp-mega-si-gps-g2n-sonar-1.jpg",
"productCode": "263",
"ean": "",
"externalId": 47963,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86285,
"description": "Humminbird HELIX 10 CHIRP MEGA SI GPS G2N Сонар",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47964-humminbird-helix-10-chirp-mega-si-gps-g2n-sonar-1.jpg",
"productCode": "265",
"ean": "",
"externalId": 47964,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86286,
"description": "Humminbird HELIX 10 SI GPS Сонар",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47967-humminbird-helix-10-si-gps-sonar-1.png",
"productCode": "266",
"ean": "",
"externalId": 47967,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86287,
"description": "Humminbird HELIX 9 CHIRP MEGA SI GPS G2N Сонар",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47965-humminbird-helix-9-chirp-mega-si-gps-g2n-sonar-1.jpg",
"productCode": "267",
"ean": "",
"externalId": 47965,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86288,
"description": "Humminbird HELIX 9 SI GPS Сонар",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47968-humminbird-helix-9-si-gps-sonar-1.png",
"productCode": "268",
"ean": "",
"externalId": 47968,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86289,
"description": "Pontoon 21 Jilt 2.5'' Силиконова примамка",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47944-0038358.jpeg",
"productCode": "32018",
"ean": "",
"externalId": 47944,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86290,
"description": "Pontoon 21 Jilt 3'' Силиконова примамка",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47945-0038358.jpeg",
"productCode": "32039",
"ean": "",
"externalId": 47945,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86291,
"description": "Garmin VIRB® Ultra 30 Eкшън камера",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47958-virb_ultra30-image-00.jpg",
"productCode": "37791",
"ean": "",
"externalId": 47958,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86292,
"description": "Garmin VIRB® XE Водоустойчивa HD екшън камера",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47960-virb_xe_hr_34391-1000x750.jpg",
"productCode": "37832",
"ean": "",
"externalId": 47960,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86293,
"description": "Garmin Dash Cam™ 45 Видеорегистратор",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45224-27-pic_9728_480.jpg",
"productCode": "37839",
"ean": "",
"externalId": 45224,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86294,
"description": "Garmin Garmin Dash Cam™ 55 Видеорегистратор",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45225-27-pic_9734_480.jpg",
"productCode": "37848",
"ean": "",
"externalId": 45225,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86295,
"description": "Garmin echoMAP™ CHIRP 52cv Сонар",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45226-27-pic_8390_480.jpg",
"productCode": "37879",
"ean": "",
"externalId": 45226,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86296,
"description": "Garmin Garmin Dash Cam™ 65W Камера",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45227-27-pic_9909_480.jpg",
"productCode": "37883",
"ean": "",
"externalId": 45227,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86297,
"description": "Garmin GFL™ 10, NMEA 2000 адаптор за ниво на горивото в резервоара",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45228-27-pic_3168_480.jpg",
"productCode": "37970",
"ean": "",
"externalId": 45228,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86298,
"description": "Garmin GPS 19x HVS Антена/приемник",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47957-0-24447cc0-800.jpg",
"productCode": "38112",
"ean": "",
"externalId": 47957,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86299,
"description": "Garmin GPS 19x NMEA 2000 Антена/приемник",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47959-0-c35ce9ab-800.jpg",
"productCode": "38114",
"ean": "",
"externalId": 47959,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86300,
"description": "Pontoon 21 Awaruna 102 Силиконова примамка",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47946-e_26b2be831b9b07fb26d398c2c590116a.jpg",
"productCode": "41051",
"ean": "",
"externalId": 47946,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86301,
"description": "Pontoon 21 Awaruna 4.5 Силиконова примамка",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47947-f_e8fe517a55184106ecce88438c87c22e.jpg",
"productCode": "41454",
"ean": "",
"externalId": 47947,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86302,
"description": "Pontoon 21 Awaruna 1.5 Силиконова примамка",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47948-awaruna_45-logo.jpg",
"productCode": "41456",
"ean": "",
"externalId": 47948,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86303,
"description": "Pontoon 21 Awaruna 2.5 Силиконова примамка",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47949-181123112138awaruna_45-logo.jpg",
"productCode": "41457",
"ean": "",
"externalId": 47949,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86304,
"description": "Pontoon 21 Awaruna 3.5 Силиконова примамка",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47950-pontoon21-awaruna-440-1508249302-2.jpg",
"productCode": "41458",
"ean": "",
"externalId": 47950,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86305,
"description": "Pontoon 21 Awaruna 2.0 Силиконова примамка",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47951-awaruna4.jpg",
"productCode": "41468",
"ean": "",
"externalId": 47951,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86306,
"description": "GKJ-S63/2",
"pictureUrl": "",
"productCode": "41686",
"ean": "",
"externalId": 45221,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86307,
"description": "GKJ-S56/6",
"pictureUrl": "",
"productCode": "41687",
"ean": "",
"externalId": 45229,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86308,
"description": "GKJ-S63/4",
"pictureUrl": "",
"productCode": "41688",
"ean": "640106",
"externalId": 45230,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86309,
"description": "GKJ-B54/6",
"pictureUrl": "",
"productCode": "41689",
"ean": "",
"externalId": 45231,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86310,
"description": "NJB-65/3SP",
"pictureUrl": "",
"productCode": "41701",
"ean": "640110",
"externalId": 45235,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86311,
"description": "NJB-65/4SP",
"pictureUrl": "",
"productCode": "41702",
"ean": "640109",
"externalId": 45236,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86312,
"description": "NJB-65/5 SP",
"pictureUrl": "",
"productCode": "41703",
"ean": "640142",
"externalId": 45240,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86313,
"description": "68ML/TR",
"pictureUrl": "",
"productCode": "41704",
"ean": "640147",
"externalId": 45241,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86314,
"description": "NJS-63/3",
"pictureUrl": "",
"productCode": "41705",
"ean": "640101",
"externalId": 45245,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86315,
"description": "62/4",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47955-g-624.jpg",
"productCode": "41775",
"ean": "",
"externalId": 47955,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 188,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86316,
"description": "Garmin GHS 11i VHF слушалка",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47956-garmin-ghs-11i-vhf.jpg",
"productCode": "47505",
"ean": "",
"externalId": 47956,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86317,
"description": "Garmin радVHF 315i Морско радио",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47962-315i.jpg",
"productCode": "47517",
"ean": "",
"externalId": 47962,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86318,
"description": "Maria FLA-PEN Shallow 85 Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45219-maria-fla-pen-shallow-85-vobler-2.jpg",
"productCode": "7524",
"ean": "",
"externalId": 45219,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 12,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86319,
"description": "Maria ANGEL KISS EKF 140 Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45220-maria-angel-kiss-ekf-140-vobler-1.jpg",
"productCode": "7537",
"ean": "",
"externalId": 45220,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 27,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86320,
"description": "Maria SQUASH S95 Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45222-maria-squash-s95-vobler-1.jpg",
"productCode": "7562",
"ean": "",
"externalId": 45222,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 12,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86321,
"description": "Maria SQUASH S125 Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45223-maria-squash-s125-vobler-1.jpg",
"productCode": "7573",
"ean": "",
"externalId": 45223,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 22,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86322,
"description": "Maria FAKE BAITS F50 Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45232-maria-fake-baits-f50-vobler-1.jpg",
"productCode": "7587",
"ean": "",
"externalId": 45232,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 2,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86323,
"description": "Maria FAKE BAITS F90 Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45233-maria-fake-baits-f90-vobler-1.jpg",
"productCode": "7589",
"ean": "",
"externalId": 45233,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 5,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86324,
"description": "Salmo Minnow Floating Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45234-180810172643salmo-minnow-floating-vobler-2.jpg",
"productCode": "7762",
"ean": "",
"externalId": 45234,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 3,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86325,
"description": "Rapala Jointed Shad Rap 7см Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45237-rapala-jointed-shad-rap-7sm-vobler-2.jpg",
"productCode": "7780",
"ean": "",
"externalId": 45237,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 13,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86326,
"description": "Salmo Butcher Super Deep Runner Floating Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45238-salmo-butcher-super-deep-runner-floating-vobler-1.jpg",
"productCode": "7819",
"ean": "",
"externalId": 45238,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 6,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86327,
"description": "Rapala Scatter Rap Deep Husky Jerk 10см. Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45239-rapala-scatter-rap-deep-husky-jerk-10sm-vobler-2.jpg",
"productCode": "7973",
"ean": "",
"externalId": 45239,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 10,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86328,
"description": "Rapala Risto Rap 8см Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45242-rapala-risto-rap-8sm-vobler-2.jpg",
"productCode": "7988",
"ean": "",
"externalId": 45242,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 21,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86329,
"description": "DAIWA CREEK SPINNER 3.0g Блесна",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47952-210714151912screenshot_8.jpg",
"productCode": "80313",
"ean": "",
"externalId": 47952,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 3,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86330,
"description": "DAIWA CREEK SPINNER 6.0g Блесна",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47953-21071415430720120910451919192124345.jpg",
"productCode": "80314",
"ean": "",
"externalId": 47953,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 6,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86331,
"description": "DAIWA CREEK SPINNER 4.0g Блесна",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/47954-210714154556screenshot_9.jpg",
"productCode": "80315",
"ean": "",
"externalId": 47954,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 4,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86332,
"description": "Rapala Ultra Light Shad Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45243-rapala-ultra-light-shad-vobler-2.jpg",
"productCode": "8074",
"ean": "",
"externalId": 45243,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 3,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86333,
"description": "Rapala Shad Rap 9см Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45244-rapala-shad-rap-9sm-vobler-2.jpg",
"productCode": "8238",
"ean": "",
"externalId": 45244,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 15,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86334,
"description": "Rapala Shadow Rap Shad Deep Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45246-rapala-shadow-rap-shad-deep-vobler-2.jpg",
"productCode": "8389",
"ean": "",
"externalId": 45246,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 12,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86335,
"description": "Salmo Freediver Saltwater Super Deep Runner Floating Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45249-salmo-freediver-saltwater-super-deep-runner-floating-vobler-2.jpg",
"productCode": "8409",
"ean": "5902730314066",
"externalId": 45249,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 24,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86336,
"description": "Rapala Husky Magnum Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45247-rapala-husky-magnum-vobler-2.jpg",
"productCode": "8453",
"ean": "",
"externalId": 45247,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 36,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86337,
"description": "Rapala Scatter Rap Tail Dancer Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45252-rapala-scatter-rap-tail-dancer-vobler-2.jpg",
"productCode": "8481",
"ean": "",
"externalId": 45252,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 13,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86338,
"description": "Scatter Rap Shad Deep Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45253-scatter-rap-shad-deep-vobler-2.jpg",
"productCode": "8659",
"ean": "",
"externalId": 45253,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 7,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86339,
"description": "Rapala Floating Magnum Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45254-rapala-floating-magnum-vobler-2.jpg",
"productCode": "8745",
"ean": "",
"externalId": 45254,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 15,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86340,
"description": "Геймърска мишка Logitech G903 Lightspeed, Черна | 910-005672",
"pictureUrl": "",
"productCode": "88056",
"ean": "",
"externalId": 47924,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86341,
"description": "Rapala Down Deep Husky Jerk 12см Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45256-rapala-down-deep-husky-jerk-12sm-vobler-3.jpg",
"productCode": "8817",
"ean": "",
"externalId": 45256,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 11,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86342,
"description": "Rapala Ultra Light Crank Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45257-rapala-u-l-crank.jpg",
"productCode": "8901",
"ean": "",
"externalId": 45257,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 4,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86343,
"description": "Rapala X-Rap Magnum XRMAG40 Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45258-rapala-x-rap-magnum-xrmag40-vobler-5.jpg",
"productCode": "8939",
"ean": "",
"externalId": 45258,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 77,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86344,
"description": "Rapala CountDown CD11 Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45259-rapala-countdown-cd11-vobler-3.jpg",
"productCode": "9160",
"ean": "",
"externalId": 45259,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 16,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86345,
"description": "Rapala Weedless Shad Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45260-rapala-weedless-shad-vobler-3.jpg",
"productCode": "9284",
"ean": "",
"externalId": 45260,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 16,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86346,
"description": "Salmo Hornet Deep Runner 9F Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45261-180810173050salmo-hornet-deep-runner-9f-vobler-1.jpg",
"productCode": "9331",
"ean": "",
"externalId": 45261,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 36,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86347,
"description": "Salmo Hornet Deep Runner H6S Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45262-salmo-hornet-deep-runner-h6s-vobler-1.jpg",
"productCode": "9384",
"ean": "",
"externalId": 45262,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 14,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86348,
"description": "Rapala Ultra Light Pop Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45263-rapala-ultra-light-pop-vobler-2.jpg",
"productCode": "9474",
"ean": "",
"externalId": 45263,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 3,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86349,
"description": "Rapala Max Rap Fat Minnow Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45264-rapala-max-rap-fat-minnow-vobler-2.jpg",
"productCode": "9607",
"ean": "",
"externalId": 45264,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 13,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86350,
"description": "Rapala Shallow Shad Rap 9см Воблер",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45266-rapala-shallow-shad-rap-9.jpg",
"productCode": "9733",
"ean": "",
"externalId": 45266,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 12,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86351,
"description": "Тест на наличност",
"pictureUrl": "",
"productCode": "97477",
"ean": "",
"externalId": 45248,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86352,
"description": "BAGSO 2",
"pictureUrl": "https://clients.mercoria.com/uploads/images/products/16/45250-1-20221122_113025698_ios_webp.webp",
"productCode": "97554",
"ean": "12377AS",
"externalId": 45250,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86353,
"description": "тест атрубътуи",
"pictureUrl": "",
"productCode": "97612",
"ean": "",
"externalId": 45265,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86354,
"description": "Персонализация - селект",
"pictureUrl": "",
"productCode": "97631",
"ean": "",
"externalId": 45269,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86355,
"description": "Тест на продукти без цени",
"pictureUrl": "",
"productCode": "97632",
"ean": "",
"externalId": 45270,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 86356,
"description": "Серво мотор 200W-750W",
"pictureUrl": "",
"productCode": "97665",
"ean": "",
"externalId": 47961,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 108249,
"description": "Produs evidenta palet sus",
"pictureUrl": "",
"productCode": "paletproduct_35499_tisho",
"ean": "paletproduct_35499_tisho",
"externalId": 0,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": null,
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": null,
"updatedAt": null
},
{
"productId": 130224,
"description": "iPhone 16 256GB",
"pictureUrl": "",
"productCode": "10001",
"ean": "10001",
"externalId": 10001,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": "Metrica",
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": "2025-06-06T10:57:35.000000Z",
"updatedAt": "2025-06-06T10:58:32.000000Z"
},
{
"productId": 130225,
"description": "USB-C Cabel 3m",
"pictureUrl": "",
"productCode": "10007",
"ean": "10007",
"externalId": 10007,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": "Metrica",
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": "2025-06-06T10:57:52.000000Z",
"updatedAt": "2025-06-06T10:57:52.000000Z"
},
{
"productId": 130226,
"description": "iPhone 15 Pro 128GB",
"pictureUrl": "",
"productCode": "10003",
"ean": "10003",
"externalId": 10003,
"price": "0.00",
"VATPercentage": 0,
"WEEETax": "0.00",
"weight": 0,
"productType": "Normal",
"expirationType": "0",
"expirationTypeDescription": "Normal",
"useDefaultExpiryOnReception": false,
"generalType": null,
"condition": "GOOD",
"invoiceExternalIdentifier": null,
"externalSource": "Metrica",
"externalSourceProductId": null,
"hasSerialNumber": false,
"createdAt": "2025-06-06T10:58:06.000000Z",
"updatedAt": "2025-06-06T10:58:06.000000Z"
}
],
"links": {
"first": "https://clients.metrica.bg/api/v1/connectors/client/products?page=1",
"last": null,
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"path": "https://clients.metrica.bg/api/v1/connectors/client/products",
"per_page": 1000,
"to": 114
},
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Filtered Products
requires authentication
List all products that match filters.
Presents the result with page size and simple pagination (without showing the total number of records and last page).
Throttling: Max 20 requests per minute. (20/1) Max 100 requests per hour. (100/60)
Default page size : 250 records per page. (Maximum 1000 records per page)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/products/filter';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
'json' => [
'ids' => '184735,184736,3049927',
'productCode' => 'MHM223259',
'barcode' => '4971850911119',
'externalId' => '109',
'startDate' => '2025-01-01 12:59:59',
'endDate' => '2025-02-07 13:10:00',
'dateFilterBy' => 'CREATED_AT',
'sortDate' => 'ASC',
'perPage' => 250,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/products/filter"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"ids": "184735,184736,3049927",
"productCode": "MHM223259",
"barcode": "4971850911119",
"externalId": "109",
"startDate": "2025-01-01 12:59:59",
"endDate": "2025-02-07 13:10:00",
"dateFilterBy": "CREATED_AT",
"sortDate": "ASC",
"perPage": 250
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/products/filter?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"ids\": \"184735,184736,3049927\",
\"productCode\": \"MHM223259\",
\"barcode\": \"4971850911119\",
\"externalId\": \"109\",
\"startDate\": \"2025-01-01 12:59:59\",
\"endDate\": \"2025-02-07 13:10:00\",
\"dateFilterBy\": \"CREATED_AT\",
\"sortDate\": \"ASC\",
\"perPage\": 250
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/products/filter'
payload = {
"ids": "184735,184736,3049927",
"productCode": "MHM223259",
"barcode": "4971850911119",
"externalId": "109",
"startDate": "2025-01-01 12:59:59",
"endDate": "2025-02-07 13:10:00",
"dateFilterBy": "CREATED_AT",
"sortDate": "ASC",
"perPage": 250
}
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 20
x-ratelimit-remaining: 19
access-control-allow-origin: *
{
"data": [],
"links": {
"first": "https://clients.metrica.bg/api/v1/connectors/client/products/filter?page=1",
"last": null,
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": null,
"path": "https://clients.metrica.bg/api/v1/connectors/client/products/filter",
"per_page": 250,
"to": null
},
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Products created today
requires authentication
List all products that were created today
Presents the result with page size and pagination.
Throttling: Max 20 requests per hour. (20/60)
Default page size : 1000 records per page.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/products/filter/createdToday';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/products/filter/createdToday"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/products/filter/createdToday?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/products/filter/createdToday'
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 20
x-ratelimit-remaining: 18
access-control-allow-origin: *
{
"data": [],
"links": {
"first": "https://clients.metrica.bg/api/v1/connectors/client/products/filter/createdToday?page=1",
"last": "https://clients.metrica.bg/api/v1/connectors/client/products/filter/createdToday?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": null,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://clients.metrica.bg/api/v1/connectors/client/products/filter/createdToday?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://clients.metrica.bg/api/v1/connectors/client/products/filter/createdToday",
"per_page": 1000,
"to": null,
"total": 0
},
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Products updated today
requires authentication
List all products that were updated today
Presents the result with page size and pagination. Changes on product stock does not reflect as a product update.
Throttling: Max 20 requests per hour. (20/60)
Default page size : 1000 records per page.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/products/filter/updatedToday';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/products/filter/updatedToday"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/products/filter/updatedToday?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/products/filter/updatedToday'
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 20
x-ratelimit-remaining: 18
access-control-allow-origin: *
{
"data": [],
"links": {
"first": "https://clients.metrica.bg/api/v1/connectors/client/products/filter/updatedToday?page=1",
"last": "https://clients.metrica.bg/api/v1/connectors/client/products/filter/updatedToday?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": null,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://clients.metrica.bg/api/v1/connectors/client/products/filter/updatedToday?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://clients.metrica.bg/api/v1/connectors/client/products/filter/updatedToday",
"per_page": 1000,
"to": null,
"total": 0
},
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Product By ID
requires authentication
Get Product information by internal ID
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/products/byId/184742';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/products/byId/184742"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/products/byId/184742" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/products/byId/184742'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Product By EAN
requires authentication
Get Product information by its EAN (barcode)
This endpoint will return the first product found with the given param value!
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/products/byEan/4971850911118';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/products/byEan/4971850911118"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/products/byEan/4971850911118" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/products/byEan/4971850911118'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Product By Product Code
requires authentication
Get Product information by its Product Code
This endpoint will return the first product found with the given param value!
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/products/byProductCode/MHM223256';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/products/byProductCode/MHM223256"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/products/byProductCode/MHM223256" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/products/byProductCode/MHM223256'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Product By External ID
requires authentication
Get Product information by its External ID
This endpoint will return the first product found with the given param value!
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/products/byExternalId/105';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/products/byExternalId/105"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/products/byExternalId/105" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/products/byExternalId/105'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Product Stock By ID
requires authentication
Get Product stock information by internal ID
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/products/stock/byId/184742';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/products/stock/byId/184742"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/products/stock/byId/184742" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/products/stock/byId/184742'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
CREATE Product
requires authentication
Create a new Product
Throttling: Max 100 requests per minute. (100/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/products/create';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'description' => 'TestProduct',
'productCode' => 'ABQ.123+',
'ean' => '8009000123A-2.A',
'externalId' => 10999,
'price' => '10.55',
'weight_grams' => 1500,
'pictureUrl' => 'https://www.pathtomyimage.com',
'productType' => '1',
'useDefaultExpiryOnReception' => 'no',
'useProdIdAsEan' => 'no',
'productSpecialType' => 'quaerat',
'externalSource' => 'Shopify MyWebSite',
'externalSourceProductId' => 'PRD00001',
'useOverriddenValidationRules' => false,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/products/create"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"description": "TestProduct",
"productCode": "ABQ.123+",
"ean": "8009000123A-2.A",
"externalId": 10999,
"price": "10.55",
"weight_grams": 1500,
"pictureUrl": "https:\/\/www.pathtomyimage.com",
"productType": "1",
"useDefaultExpiryOnReception": "no",
"useProdIdAsEan": "no",
"productSpecialType": "quaerat",
"externalSource": "Shopify MyWebSite",
"externalSourceProductId": "PRD00001",
"useOverriddenValidationRules": false
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/products/create" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"description\": \"TestProduct\",
\"productCode\": \"ABQ.123+\",
\"ean\": \"8009000123A-2.A\",
\"externalId\": 10999,
\"price\": \"10.55\",
\"weight_grams\": 1500,
\"pictureUrl\": \"https:\\/\\/www.pathtomyimage.com\",
\"productType\": \"1\",
\"useDefaultExpiryOnReception\": \"no\",
\"useProdIdAsEan\": \"no\",
\"productSpecialType\": \"quaerat\",
\"externalSource\": \"Shopify MyWebSite\",
\"externalSourceProductId\": \"PRD00001\",
\"useOverriddenValidationRules\": false
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/products/create'
payload = {
"description": "TestProduct",
"productCode": "ABQ.123+",
"ean": "8009000123A-2.A",
"externalId": 10999,
"price": "10.55",
"weight_grams": 1500,
"pictureUrl": "https:\/\/www.pathtomyimage.com",
"productType": "1",
"useDefaultExpiryOnReception": "no",
"useProdIdAsEan": "no",
"productSpecialType": "quaerat",
"externalSource": "Shopify MyWebSite",
"externalSourceProductId": "PRD00001",
"useOverriddenValidationRules": false
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
UPDATE Product
requires authentication
Updates product by ID
Throttling: Max 100 requests per minute. (100/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/products/update/1';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'description' => 'TestProduct',
'productCode' => 'ABQ.123+',
'ean' => '8009000123A-2.A',
'externalId' => 10999,
'price' => '10.55',
'weight_grams' => 1500,
'pictureUrl' => 'https://www.pathtomyimage.com',
'productType' => '1',
'useDefaultExpiryOnReception' => 'no',
'externalSource' => 'Shopify MyWebSite',
'externalSourceProductId' => 'PRD00001',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/products/update/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"description": "TestProduct",
"productCode": "ABQ.123+",
"ean": "8009000123A-2.A",
"externalId": 10999,
"price": "10.55",
"weight_grams": 1500,
"pictureUrl": "https:\/\/www.pathtomyimage.com",
"productType": "1",
"useDefaultExpiryOnReception": "no",
"externalSource": "Shopify MyWebSite",
"externalSourceProductId": "PRD00001"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request PUT \
"https://clients.metrica.bg/api/v1/connectors/client/products/update/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"description\": \"TestProduct\",
\"productCode\": \"ABQ.123+\",
\"ean\": \"8009000123A-2.A\",
\"externalId\": 10999,
\"price\": \"10.55\",
\"weight_grams\": 1500,
\"pictureUrl\": \"https:\\/\\/www.pathtomyimage.com\",
\"productType\": \"1\",
\"useDefaultExpiryOnReception\": \"no\",
\"externalSource\": \"Shopify MyWebSite\",
\"externalSourceProductId\": \"PRD00001\"
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/products/update/1'
payload = {
"description": "TestProduct",
"productCode": "ABQ.123+",
"ean": "8009000123A-2.A",
"externalId": 10999,
"price": "10.55",
"weight_grams": 1500,
"pictureUrl": "https:\/\/www.pathtomyimage.com",
"productType": "1",
"useDefaultExpiryOnReception": "no",
"externalSource": "Shopify MyWebSite",
"externalSourceProductId": "PRD00001"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET External Source List
requires authentication
Retrieve a list with the allowed external sources.
Throttling: Max 100 requests per minute. (100/1)
Please inform us if your source is not on this list, so we can add it.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/products/externalSourceList';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/products/externalSourceList"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/products/externalSourceList" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/products/externalSourceList'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 100
x-ratelimit-remaining: 99
access-control-allow-origin: *
{
"data": [
"Fulfill",
"Gomag",
"EasySales",
"Teamshare",
"ContentSpeed",
"BaseLinker",
"VTEX",
"Shopify",
"Magento",
"PrestaShop",
"OpenCart",
"WooCommerce",
"MerchantPro",
"EMAG RO",
"EMAG HU",
"EMAG BG",
"CEL",
"Elefant",
"Vivre",
"OLX",
"Okazii",
"Wordpress",
"Mentor",
"Metrica",
"Fashion Days",
"Trendyol",
"SeniorSoftware"
],
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
API V1 - Receptions
Reception Endpoints
GET All Receptions
requires authentication
List all receptions.
Throttling: Max 30 requests per minute. (30/1)
Presents the result with page size and pagination.
Default page size : 200 records per page.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptions';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptions"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/receptions?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptions'
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 30
x-ratelimit-remaining: 29
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Filtered Receptions with Reception Plans
requires authentication
List filtered receptions with reception plans.
Throttling: Max 15 requests per minute. (15/1)
Presents the result with page size and pagination.
Default page size : 200 records per page. (Maximum 300)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptions/filter';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
'json' => [
'ids' => '31084,31072',
'startDate' => '2020-01-01 12:59:59',
'endDate' => '2020-12-30 19:30:00',
'dateFilterBy' => 'CREATED_AT',
'sortDate' => 'ASC',
'isProcessed' => false,
'withReceptionPlans' => false,
'perPage' => 200,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptions/filter"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"ids": "31084,31072",
"startDate": "2020-01-01 12:59:59",
"endDate": "2020-12-30 19:30:00",
"dateFilterBy": "CREATED_AT",
"sortDate": "ASC",
"isProcessed": false,
"withReceptionPlans": false,
"perPage": 200
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/receptions/filter?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"ids\": \"31084,31072\",
\"startDate\": \"2020-01-01 12:59:59\",
\"endDate\": \"2020-12-30 19:30:00\",
\"dateFilterBy\": \"CREATED_AT\",
\"sortDate\": \"ASC\",
\"isProcessed\": false,
\"withReceptionPlans\": false,
\"perPage\": 200
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptions/filter'
payload = {
"ids": "31084,31072",
"startDate": "2020-01-01 12:59:59",
"endDate": "2020-12-30 19:30:00",
"dateFilterBy": "CREATED_AT",
"sortDate": "ASC",
"isProcessed": false,
"withReceptionPlans": false,
"perPage": 200
}
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 15
x-ratelimit-remaining: 14
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Reception By ID
requires authentication
Get Reception information by internal ID.
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptions/byId/31072';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptions/byId/31072"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/receptions/byId/31072" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptions/byId/31072'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Example response (404):
{
"success": false,
"error": {
"message": "Entry for Reception not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Reception Contents By ID
requires authentication
Get Reception contents ( received products ana quantity ) by internal ID.
Throttling: Max 20 requests per minute. (20/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptions/byId/13/contents';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptions/byId/13/contents"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/receptions/byId/13/contents" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptions/byId/13/contents'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 20
x-ratelimit-remaining: 19
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Example response (404):
{
"success": false,
"error": {
"message": "Entry for Reception not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
API V1 - Reception Plans
Reception Plan Endpoints
GET All Reception Plans
requires authentication
List all reception plans.
Throttling: Max 30 requests per minute. (30/1)
Presents the result with page size and pagination.
Default page size : 200 records per page.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlans"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/receptionPlans?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans'
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 30
x-ratelimit-remaining: 29
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Reception Plan By ID
requires authentication
Get Reception Plan by internal ID.
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/101';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/101"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/101" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/101'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Example response (404):
{
"success": false,
"error": {
"message": "Entry for ReceptionPlan not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
CREATE Reception Plan
requires authentication
Create a new Reception Plan
Throttling: Max 10 requests per minute. (10/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/create';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'TestPlan',
'externalId' => '10999',
'supplierName' => 'My Supplier',
'awbNumber' => 'AWB001',
'estimatedArrivalDate' => '2035-01-01',
'hasStrictMaxQuantity' => false,
'hasUniqueProducts' => false,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/create"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "TestPlan",
"externalId": "10999",
"supplierName": "My Supplier",
"awbNumber": "AWB001",
"estimatedArrivalDate": "2035-01-01",
"hasStrictMaxQuantity": false,
"hasUniqueProducts": false
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/create" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"TestPlan\",
\"externalId\": \"10999\",
\"supplierName\": \"My Supplier\",
\"awbNumber\": \"AWB001\",
\"estimatedArrivalDate\": \"2035-01-01\",
\"hasStrictMaxQuantity\": false,
\"hasUniqueProducts\": false
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/create'
payload = {
"name": "TestPlan",
"externalId": "10999",
"supplierName": "My Supplier",
"awbNumber": "AWB001",
"estimatedArrivalDate": "2035-01-01",
"hasStrictMaxQuantity": false,
"hasUniqueProducts": false
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
UPDATE Reception Plan
requires authentication
Updates reception plan by ID
Throttling: Max 10 requests per minute. (10/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/update/3';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'supplierName' => 'My Supplier',
'awbNumber' => 'AWB001',
'estimatedArrivalDate' => '2035-01-01',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/update/3"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"supplierName": "My Supplier",
"awbNumber": "AWB001",
"estimatedArrivalDate": "2035-01-01"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request PUT \
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/update/3" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"supplierName\": \"My Supplier\",
\"awbNumber\": \"AWB001\",
\"estimatedArrivalDate\": \"2035-01-01\"
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/update/3'
payload = {
"supplierName": "My Supplier",
"awbNumber": "AWB001",
"estimatedArrivalDate": "2035-01-01"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Reception Plan Imports
requires authentication
Get Reception Plan Imports by internal ID.
Throttling: Max 30 requests per minute. (30/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/126/imports';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/126/imports"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/126/imports" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/126/imports'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 30
x-ratelimit-remaining: 29
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Reception Plan Details
requires authentication
Get Reception Plan Details by internal ID.
Throttling: Max 15 requests per minute. (15/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/126/details';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/126/details"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/126/details" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/126/details'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 15
x-ratelimit-remaining: 14
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Reception Plan Report By ID
requires authentication
Get Reception Plan report by internal ID.
Throttling: Max 15 requests per minute. (15/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/126/report';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/126/report"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/126/report" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId/126/report'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (403):
{
"message": "This action is unauthorized."
}
Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 15
x-ratelimit-remaining: 14
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Example response (404):
{
"success": false,
"error": {
"message": "Entry for ReceptionPlan not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
FINISH Reception Plan
requires authentication
Finish Reception Plan
Throttling: Max 10 requests per minute. (10/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId//finish';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId//finish"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId//finish" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId//finish'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Requested Endpoint not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
DELETE Reception Plan
requires authentication
Delete Reception Plan by internal id
Throttling: Max 10 requests per minute. (10/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId//delete';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId//delete"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());curl --request DELETE \
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId//delete" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlans/byId//delete'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for ReceptionPlan not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
API V1 - Reception Plan Imports
Reception Plan Import Endpoints
GET Reception Plan Details
requires authentication
Get Reception Plan Details by import ID.
Throttling: Max 15 requests per minute. (15/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports/395/details';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports/395/details"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports/395/details" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports/395/details'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
CREATE Reception Plan Import
requires authentication
Create a new Reception Plan Import
Throttling: Max 10 requests per minute. (10/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports/create/101';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'name' => 'TestImportPlan',
'productIdentifierType' => 'barcode',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports/create/101"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "TestImportPlan",
"productIdentifierType": "barcode"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports/create/101" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"TestImportPlan\",
\"productIdentifierType\": \"barcode\"
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports/create/101'
payload = {
"name": "TestImportPlan",
"productIdentifierType": "barcode"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
FINISH Reception Plan Import
requires authentication
Finish Reception Plan Import
Throttling: Max 10 requests per minute. (10/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports//finish';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports//finish"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports//finish" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports//finish'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Requested Endpoint not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
DELETE Reception Plan Import
requires authentication
Delete Reception Plan Import by internal id
Throttling: Max 10 requests per minute. (10/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports/1/delete';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports/1/delete"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());curl --request DELETE \
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports/1/delete" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlanImports/1/delete'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for ReceptionPlanImport not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
API V1 - Reception Plan Details
Reception Plan Details Endpoints
CREATE Reception Plan Detail
requires authentication
Create a new Reception Plan Detail
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlanDetails/create/1';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'productIdentifier' => 'BARCODE999',
'externalId' => '1',
'expiryDate' => '2050-01-01',
'batch' => 0,
'quantity' => 15,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlanDetails/create/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"productIdentifier": "BARCODE999",
"externalId": "1",
"expiryDate": "2050-01-01",
"batch": 0,
"quantity": 15
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlanDetails/create/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"productIdentifier\": \"BARCODE999\",
\"externalId\": \"1\",
\"expiryDate\": \"2050-01-01\",
\"batch\": 0,
\"quantity\": 15
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlanDetails/create/1'
payload = {
"productIdentifier": "BARCODE999",
"externalId": "1",
"expiryDate": "2050-01-01",
"batch": 0,
"quantity": 15
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
DELETE Reception Plan Detail
requires authentication
Delete Reception Plan Detail by internal id
Throttling: Max 60 requests per minute. (60/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlanDetails/1/delete';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlanDetails/1/delete"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());curl --request DELETE \
"https://clients.metrica.bg/api/v1/connectors/client/receptionPlanDetails/1/delete" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/receptionPlanDetails/1/delete'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for ReceptionPlanDetail not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
API V1 - Stock
Stock Endpoints
GET All Products Stock By ID
requires authentication
List all products stock by ID.
Throttling: Max 1 request in 5 minutes. (1/5)
Presents all the results (NonPaginated).
This endpoint is recommended to use when there are more than 1000 products to display, because the paginated endpoint can show up to 1000 products per page.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/stock/allProducts/byProductId';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'untilDate' => '31/12/2020',
'showNoStock' => 'yes',
'showOnlyGoodProducts' => 'yes',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/stock/allProducts/byProductId"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"untilDate": "31\/12\/2020",
"showNoStock": "yes",
"showOnlyGoodProducts": "yes"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/stock/allProducts/byProductId" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"untilDate\": \"31\\/12\\/2020\",
\"showNoStock\": \"yes\",
\"showOnlyGoodProducts\": \"yes\"
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/stock/allProducts/byProductId'
payload = {
"untilDate": "31\/12\/2020",
"showNoStock": "yes",
"showOnlyGoodProducts": "yes"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, json=payload)
response.json()Example response (429):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 400
x-ratelimit-remaining: 315
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Too Many Attempts.",
"code": 429
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET All Products Stock Paginated By ID
requires authentication
List all products stock by ID.
Throttling: Max 5 requests per minute. (5/1)
Presents the result with page size and pagination.
Default page size : 1000 records per page.
This endpoint is recommended to use when there are less than 1000 products to display, because the first page can show up to 1000 products.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/stock/allProductsPaginated/byProductId';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
'json' => [
'untilDate' => '31/12/2020',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/stock/allProductsPaginated/byProductId"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"untilDate": "31\/12\/2020"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/stock/allProductsPaginated/byProductId?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"untilDate\": \"31\\/12\\/2020\"
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/stock/allProductsPaginated/byProductId'
payload = {
"untilDate": "31\/12\/2020"
}
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 5
x-ratelimit-remaining: 4
access-control-allow-origin: *
{
"data": [],
"links": {
"first": "https://clients.metrica.bg/api/v1/connectors/client/stock/allProductsPaginated/byProductId?page=1",
"last": "https://clients.metrica.bg/api/v1/connectors/client/stock/allProductsPaginated/byProductId?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": null,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://clients.metrica.bg/api/v1/connectors/client/stock/allProductsPaginated/byProductId?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://clients.metrica.bg/api/v1/connectors/client/stock/allProductsPaginated/byProductId",
"per_page": 1000,
"to": null,
"total": 0
},
"success": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
API V1 - Bundlers
A bundler is only a product with 'abilities'. Usually a bundler contains children and their children are also products.
The bundle bundler
- this type of bundler cannot have warehouse activity (reception, entries or shipments)
- its children products must have a quantity
- this type of bundler will expand into its children when detected in the order products
The stock-parent bundler
- this type of bundler can have warehouse activity
- its children products must have a priority
- can have maximum 5 children
- this bundler stock will be checked before the order creation and if the requested quantity is lower than the current stock its children will be added to the order with the remaining requested quantity (if they have stock), following their priority.
- the stock is calculated from total entries - total exits from all orders
Product Bundlers Endpoints
GET All Bundlers
requires authentication
List all product bundlers.
Presents the result with page size and pagination.
Throttling: Max 10 requests per minute. (10/1)
Default page size : 50 records per page.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/bundlers"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/bundlers?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers'
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 10
x-ratelimit-remaining: 9
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
CREATE Bundler
requires authentication
Create a new Bundler
Throttling: Max 10 requests per minute. (10/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'bundlerType' => 'bundle',
'bundlerProductId' => 10999,
'bundlerProducts' => [
[],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/bundlers"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"bundlerType": "bundle",
"bundlerProductId": 10999,
"bundlerProducts": [
[]
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/bundlers" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"bundlerType\": \"bundle\",
\"bundlerProductId\": 10999,
\"bundlerProducts\": [
[]
]
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers'
payload = {
"bundlerType": "bundle",
"bundlerProductId": 10999,
"bundlerProducts": [
[]
]
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Bundler By ID
requires authentication
Get Bundler information by internal ID
Throttling: Max 40 requests per minute. (40/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers/1';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/bundlers/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/bundlers/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers/1'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 40
x-ratelimit-remaining: 38
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Example response (404):
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
DELETE Bundler By ID
requires authentication
Delete Bundler by internal id
Throttling: Max 40 requests per minute. (40/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers/1';
$response = $client->delete(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/bundlers/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());curl --request DELETE \
"https://clients.metrica.bg/api/v1/connectors/client/bundlers/1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers/1'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Bundler By EAN
requires authentication
Get Bundler information by its EAN (barcode)
This endpoint will return the first product found with the given param value!
Throttling: Max 40 requests per minute. (40/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers/byEan/4971850911118';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/bundlers/byEan/4971850911118"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/bundlers/byEan/4971850911118" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers/byEan/4971850911118'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 40
x-ratelimit-remaining: 39
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Example response (404):
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET Bundler By External ID
requires authentication
Get Bundler information by its External ID
This endpoint will return the first product found with the given param value!
Throttling: Max 40 requests per minute. (40/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers/byExternalId/105';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/bundlers/byExternalId/105"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/bundlers/byExternalId/105" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers/byExternalId/105'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 40
x-ratelimit-remaining: 39
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Not allowed to access this endpoint.",
"code": 403
}
}
Example response (404):
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
ADD Product to bundler
requires authentication
ADD a child product using the product internal ID to a bundler
Throttling: Max 10 requests per minute. (10/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers/1/addProduct';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'productId' => '184736',
'productQuantity' => 3,
'productPriority' => 3,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/bundlers/1/addProduct"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"productId": "184736",
"productQuantity": 3,
"productPriority": 3
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/bundlers/1/addProduct" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"productId\": \"184736\",
\"productQuantity\": 3,
\"productPriority\": 3
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers/1/addProduct'
payload = {
"productId": "184736",
"productQuantity": 3,
"productPriority": 3
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
REMOVE Product from bundler
requires authentication
REMOVE a child product using the product internal ID from a bundler
Throttling: Max 10 requests per minute. (10/1)
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers/1/removeProduct';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'productId' => '184736',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/bundlers/1/removeProduct"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"productId": "184736"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/bundlers/1/removeProduct" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"productId\": \"184736\"
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/bundlers/1/removeProduct'
payload = {
"productId": "184736"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (404):
{
"success": false,
"error": {
"message": "Entry for Product not found",
"code": 404
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
API V1 - Courier Status List
Courier Status List Endpoints
- The information extracted from here is not 100% reliable and is susceptible to change!
- The information found on courierStatusId, status and statusLong comes from what couriers provided to us at the time of integration development.
- It is possible that the courier would change its internal status description, its internal code without any prior information!
- For the orders that we try to retrieve the status of the AWBs from the courier, we will set the courierStatusId order field with the primary id from the GET All Courier Statuses Endpoint.
GET All Courier Statuses
requires authentication
List all internal courier statuses records.
Throttling: Max 1 request per hour. (1/60)
Information found on fields courierStatusId, status and statusLong come from couriers and might not be up-to-date.
isFinal has only two values: YES,NO. The AWB number/order that have a courier status id with isFinal = YES is considered final and will probably not be changed anymore.
We have knowledge on situations when couriers changed the status of a shipment even after they provided a final status!
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/couriers/statusList';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/couriers/statusList"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://clients.metrica.bg/api/v1/connectors/client/couriers/statusList" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/couriers/statusList'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (429):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 400
x-ratelimit-remaining: 341
access-control-allow-origin: *
{
"success": false,
"error": {
"message": "Too Many Attempts.",
"code": 429
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
API V1 - Delete Event
Delete Event Endpoints
There are no delete event records BEFORE 23.05.2024!
The order delete event records are different from the other sources.
- A fully deleted order with 2 products will generate 2 delete event records and the internal product id will be found on sourceProductId with its corresponding quantity.
- An order with 5 products from which two products were removed, will still exist (and can be shipped) with the 3 remaining products. The other two removed products will each create a delete event for that order.
- The existence of an order delete event does not mean that the order has been fully removed.
- The existence of an order/product delete event with your sourceExternalId value does not mean that the order/product was not recreated by an automatic behaviour under another sourceInternalId value.
GET Deleted Events by CreatedAt Date
requires authentication
Returns a list with all deleted events filtered by the source and the provided date of creation.
Throttling: Max 20 requests per hour. (20/60)
Default page size : 250 records per page.
Presents the result with page size and pagination.
Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://clients.metrica.bg/api/v1/connectors/client/deleteEvents/createdAtDate';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'page' => '1',
],
'json' => [
'source' => 'product',
'date' => '2024-05-23',
'perPage' => 100,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://clients.metrica.bg/api/v1/connectors/client/deleteEvents/createdAtDate"
);
const params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"source": "product",
"date": "2024-05-23",
"perPage": 100
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());curl --request POST \
"https://clients.metrica.bg/api/v1/connectors/client/deleteEvents/createdAtDate?page=1" \
--header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"source\": \"product\",
\"date\": \"2024-05-23\",
\"perPage\": 100
}"
import requests
import json
url = 'https://clients.metrica.bg/api/v1/connectors/client/deleteEvents/createdAtDate'
payload = {
"source": "product",
"date": "2024-05-23",
"perPage": 100
}
params = {
'page': '1',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload, params=params)
response.json()Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.