/api/v1/products
Requires authentication
Rate limited by the `api-global` limiter
v1
Send a bearer token in the Authorization header.
Krijon nje produkt te ri per kompanine tuaj.
codegjenerohet vete nese nuk e dergoni, prandaj mund ta lini bosh dhe ta ruani ate qe ju kthehet.unitnuk dergohet: njesia matese derivohet ngaunit_code, i cili eshte kodi qe mban dokumenti fiskal.vat_ratepranon0,6,10ose20. Per nje produkt te perjashtuar shtonivat_exempt_type.
Produkti i krijuar ketu del menjehere ne GET /products dhe mund te perdoret ne rreshtat e
nje fature.
Full URL: https://fature.al/api/v1/products
Body parameters
| Name | Type | Required | Description |
|---|---|---|---|
| code | string, maxLength 255, nullable | no | Kodi unik i produktit. Gjenerohet vete nese mungon. |
| name | string, maxLength 255 | yes | Emri i produktit. |
| description | string, maxLength 255, nullable | no | Pershkrimi. Pa te merret emri. |
| last_price | number, min 0 | yes | Cmimi i shitjes. |
| cost_price | number, min 0, nullable | no | Cmimi i blerjes. |
| vat_rate | string, one of 0, 6, 10, 20 | yes | Shkalla e TVSH. |
| currency | string, maxLength 10, nullable | no | Monedha. Pa te merret ALL. |
| service | boolean | no | Sherbim (true) apo artikull inventarizues (false). Pa te merret true. |
| id_category | integer, nullable | no | ID e kategorise, nga GET /product/categories. |
Responses
201 Created
| Field | Type | Description |
|---|---|---|
| status | boolean | |
| data | object | |
| data.product | object | |
| data.product.service | boolean | True for a service, false for an article that is tracked in stock |
| data.product.category | object, nullable | The category resolved, or null when the product has none |
| data.product.category.id | integer | |
| data.product.category.name | string | |
| data.product.category.color | string, nullable | Hex colour used by the POS grid |
| data.product.created_at | string, nullable | Creation timestamp, ISO 8601 |
403 Abonimi ka mbaruar, ose veprimi nuk lejohet per kete llogari.
| Field | Type | Description |
|---|---|---|
| status | boolean | Always false. A successful response carries `status: true` and a `data` object instead |
| message | string | The exception message. Empty when the failure carries no exception of its own |
| errors | array | Messages to show the operator or to log. Absent when the failure has nothing to add beyond `message` |
409 Ekziston tashme nje regjistrim me te njejtat te dhena.
| Field | Type | Description |
|---|---|---|
| status | boolean | Always false. A successful response carries `status: true` and a `data` object instead |
| message | string | The exception message. Empty when the failure carries no exception of its own |
| errors | array | Messages to show the operator or to log. Absent when the failure has nothing to add beyond `message` |
422 Te dhenat nuk kaluan validimin. Kjo pergjigje perdor fushen `success`, jo `status`.
| Field | Type | Description |
|---|---|---|
| success | boolean | Always false |
| message | string | A single summary line, the same for every validation failure |
| errors | object | The failing fields, each with the messages for it. Dotted keys point into nested objects and array items, e.g. `lines.0.quantity` |
429 Kufiri i kerkesave u arrit. Kufiri per endpoint kthen zarfin standard te gabimit; kufiri i pergjithshem kthen vetem `message` bashke me header-in `Retry-After`.
| Field | Type | Description |
|---|---|---|
| status | boolean | Always false. A successful response carries `status: true` and a `data` object instead |
| message | string | The exception message. Empty when the failure carries no exception of its own |
| errors | array | Messages to show the operator or to log. Absent when the failure has nothing to add beyond `message` |
500 Gabim i papritur ne server.
| Field | Type | Description |
|---|---|---|
| status | boolean | Always false. A successful response carries `status: true` and a `data` object instead |
| message | string | The exception message. Empty when the failure carries no exception of its own |
| errors | array | Messages to show the operator or to log. Absent when the failure has nothing to add beyond `message` |
Example request
curl -X POST 'https://fature.al/api/v1/products' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'X-Client-Id: YOUR_CLIENT_ID' \
-H 'X-Client-Secret: YOUR_CLIENT_SECRET' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"code": "P001",
"name": "Kafe Espresso",
"description": "Kafe espresso e peshuar 18g",
"last_price": 150,
"cost_price": 80,
"vat_rate": 20,
"currency": "ALL",
"service": true,
"id_category": 3
}'
use Illuminate\Support\Facades\Http;
$response = Http::withHeaders([
'Authorization' => 'Bearer YOUR_TOKEN',
'X-Client-Id' => 'YOUR_CLIENT_ID',
'X-Client-Secret' => 'YOUR_CLIENT_SECRET',
'Accept' => 'application/json',
'Content-Type' => 'application/json',
])->post('https://fature.al/api/v1/products', [
'code' => 'P001',
'name' => 'Kafe Espresso',
'description' => 'Kafe espresso e peshuar 18g',
'last_price' => 150,
'cost_price' => 80,
'vat_rate' => 20,
'currency' => 'ALL',
'service' => true,
'id_category' => 3,
]);
$data = $response->json();
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('POST', 'https://fature.al/api/v1/products', [
'headers' => [
'Authorization' => 'Bearer YOUR_TOKEN',
'X-Client-Id' => 'YOUR_CLIENT_ID',
'X-Client-Secret' => 'YOUR_CLIENT_SECRET',
'Accept' => 'application/json',
'Content-Type' => 'application/json',
],
'json' => [
'code' => 'P001',
'name' => 'Kafe Espresso',
'description' => 'Kafe espresso e peshuar 18g',
'last_price' => 150,
'cost_price' => 80,
'vat_rate' => 20,
'currency' => 'ALL',
'service' => true,
'id_category' => 3,
],
]);
$data = json_decode((string) $response->getBody(), true);
const response = await fetch('https://fature.al/api/v1/products', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'X-Client-Id': 'YOUR_CLIENT_ID',
'X-Client-Secret': 'YOUR_CLIENT_SECRET',
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"code": "P001",
"name": "Kafe Espresso",
"description": "Kafe espresso e peshuar 18g",
"last_price": 150,
"cost_price": 80,
"vat_rate": 20,
"currency": "ALL",
"service": true,
"id_category": 3
})
});
const data = await response.json();
Example response
{
"status": true,
"data": {
"product": {
"service": true,
"category": {
"id": 1,
"name": "Jane Doe",
"color": "color"
},
"created_at": "created at"
}
}
}
{
"status": true,
"message": "Hello there",
"errors": [
"errors"
]
}
{
"status": true,
"message": "Hello there",
"errors": [
"errors"
]
}
{
"success": true,
"message": "Hello there",
"errors": []
}
{
"status": true,
"message": "Hello there",
"errors": [
"errors"
]
}
{
"status": true,
"message": "Hello there",
"errors": [
"errors"
]
}