---
title: "Listo produktet"
operation_id: "api.v1.products.list"
method: GET
path: "/api/v1/products"
group: "Produktet"
api_version: "v1"
authenticated: true
canonical: "https://fature.al/api-reference/endpoints/api-v1-products-list.html"
---

# Listo produktet

Pjesë e dokumentacionit [fature.al API](/api-reference/index.html).

## GET /api/v1/products

Kthen produktet dhe shërbimet e kompanisë që janë për shitje, sipas `id` në rritje, me filtrim
sipas tekstit, kategorisë dhe llojit. Produktet e fshira dhe ato që nuk shiten nuk dalin.

Përdoreni për të ndërtuar një arkë ose një katalog, ose për të gjetur `id`-në e një produkti.
Çdo produkt vjen me kodin, emrin, njësinë, çmimet, normën e TVSH-së dhe `id_category`; për
objektin e kategorisë dhe për `service` thirrni `GET /products/{id}/details`.

- `query` kërkon me përputhje të pjesshme në emër, kod dhe përshkrim.
- `id_category` mban vetëm produktet e një kategorie; `service` `true` vetëm shërbimet,
  `false` vetëm artikujt e inventarit.
- Pagination me `limit` dhe `offset`. `limit` kufizohet në `500`; një vlerë më e madhe ulet pa
  gabim. Pa `limit` kthehet i gjithë katalogu, `pagination.limit` është `null` dhe `offset`
  nuk merret parasysh.
- `pagination` kthen `total`, ndaj vazhdoni me `offset += limit` derisa `offset` të arrijë
  `total`.

Ndryshe nga listat e tjera, `data` është vetë lista e produkteve dhe `pagination` qëndron
pranë saj, jo brenda saj.

Ky endpoint nuk kthen `429` as `500`. Një kërkesë e dytë nga i njëjti token, ndërsa e para
nuk ka mbaruar, si dhe çdo gabim i papritur, kthehen me HTTP 200 dhe `status: false`; arsyeja
është te `message`. Lexoni `status`, jo vetëm kodin HTTP.

URL-ja e plotë: `https://fature.al/api/v1/products`

Versioni i API-t: `v1`.

Identifikimi: i detyrueshëm (bearer token, plus the `X-Client-Id` and `X-Client-Secret` headers).

### Parametrat query

| Fusha | Tipi | E detyrueshme | Përshkrimi |
| --- | --- | --- | --- |
| `query` | string | jo | Kërkim në emrin, kodin ose përshkrimin e produktit. |
| `id_category` | integer | jo | Vetëm produktet e kësaj kategorie, sipas `id` nga `GET /product/categories`. |
| `service` | boolean | jo | `true` kthen vetëm shërbimet, `false` vetëm artikujt e inventarit. Pa të kthehen të dyja. |
| `limit` | integer | jo | Sa produkte të kthehen në një faqe, deri në 500. Pa të kthehet i gjithë katalogu. |
| `offset` | integer | jo | Nga cili produkt të fillohet, duke numëruar nga 0. Zbatohet vetëm bashkë me `limit`. Defaults to `0`. |

### Shembull kërkese

```bash
curl -X GET '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'
```

### Përgjigjet

**200**: Produktet e faqes te `data`, me `pagination` pranë saj; ose `status: false` me arsyen te `message`.

| Fusha | Tipi | Përshkrimi |
| --- | --- | --- |
| `status` | boolean |  |
| `data` | array |  |
| `data[].id` | integer | Id-ja e produktit në fature.al |
| `data[].code` | string, nullable | Kodi unik i produktit |
| `data[].name` | string | Emri i produktit |
| `data[].description` | string, nullable | Përshkrimi i produktit |
| `data[].unit` | string, nullable | Njësia matëse, e nxjerrë nga `unit_code` |
| `data[].unit_code` | string, nullable | Kodi i njësisë matëse, p.sh. `C62`, `XPP`, `LTR` |
| `data[].last_price` | number | Çmimi i shitjes |
| `data[].cost_price` | number, nullable | Çmimi i blerjes, kur është regjistruar |
| `data[].vat_rate` | number | Norma e TVSH-së në përqind: 0, 6, 10 ose 20 |
| `data[].vat_exempt_type` | string, nullable | Tipi i përjashtimit nga TVSH-ja, kur produkti është i përjashtuar |
| `data[].vat_exempt_description` | string, nullable | Përjashtimi i shkruar në gjuhën e llogarisë |
| `data[].currency` | string, nullable | Monedha e çmimit |
| `data[].id_category` | integer, nullable | Id-ja e kategorisë, ose null kur produkti nuk ka |
| `pagination` | object |  |
| `pagination.records` | integer | Sa produkte mban `data` në këtë përgjigje |
| `pagination.total` | integer | Sa produkte përputhen gjithsej me filtrat, në të gjitha faqet |
| `pagination.limit` | integer, nullable | Kufiri që u zbatua: ai që dërguat, i ulur në `500` kur ishte më i madh. null kur nuk dërguat `limit` dhe u kthye i gjithë katalogu |
| `pagination.offset` | integer | Nga cili produkt filloi kjo faqe, duke numëruar nga 0. Gjithmonë `0` kur nuk ka `limit` |

```json
{
    "status": true,
    "data": [
        {
            "id": 314,
            "code": "SRV-MNT",
            "name": "Orë pune mirëmbajtje",
            "description": "Mirëmbajtje e sistemit, faturohet për orë",
            "unit": "Orë",
            "unit_code": "HUR",
            "last_price": 300,
            "cost_price": 150,
            "vat_rate": 20,
            "vat_exempt_type": "TYPE_1",
            "vat_exempt_description": "Përjashtim i llojit 1. (Përjashtim në bazë të nenit 51 të Ligjit për TVSH-në.)",
            "currency": "EUR",
            "id_category": 12
        }
    ],
    "pagination": {
        "records": 50,
        "total": 312,
        "limit": 50,
        "offset": 0
    }
}
```

**401**: Unauthenticated

| Fusha | Tipi | Përshkrimi |
| --- | --- | --- |
| `message` | string |  |

```json
{
    "message": "Unauthenticated."
}
```
