_Version: 1.0_

> This document is the LLM-friendly export of the API. It is regenerated on every request from the live OpenAPI spec. Use it as context when asking an AI assistant for help.

# fature.al Partner API

Wolt është një platformë porosish dhe dërgese ushqimi: klienti porosit në aplikacionin e Wolt dhe
porosia i mbërrin restorantit ose dyqanit që e përgatit. Ai restorant ose dyqan quhet këtu njësia
(venue). Ky dokument është për software-in që punon te njësia: programin e arkës, të kuzhinës ose
të dyqanit që i merr porositë e Wolt dhe i përpunon.

Me këtë API sistemi juaj ndjek porositë e Wolt të një njësie të vetme nëpërmjet fature.al: lexon
ciklin e çdo porosie nga feed-i i ngjarjeve, i kthen Wolt-it pranimin, refuzimin dhe gatishmërinë,
dhe merr faturën fiskale që fature.al lëshon për çdo porosi.

Është dokument më vete sepse token-i këtu ka kuptim më të ngushtë: një njësi e vetme. Gjithçka
tjetër, bearer token-i, çifti `X-Client-Id` dhe `X-Client-Secret`, formati i përgjigjes dhe
fjalorthi i fiskalizimit, punon njësoj si në API-në kryesore dhe shpjegohet te
[`/docs/api`](/docs/api).

## Serverat

| Mjedisi | URL |
| --- | --- |
| **Live** | `https://fature.al/api/partner/v1` |
| **Sandbox** | `https://demo.fature.al/api/partner/v1` |

## Një token, një njësi

Bearer token-i zgjidhet në një njësi të vetme Wolt dhe çdo endpoint punon vetëm mbi të. Id-ja e një
porosie që i përket një njësie tjetër përgjigjet me `404`, jo me `403`: një id e gabuar dhe një id
e huaj nuk dallohen nga njëra-tjetra.

Thirrni `GET /ping` në fillim: kthen kompaninë, njësinë e biznesit dhe njësinë Wolt me të cilat
është lidhur token-i, pra konfirmon kredencialet dhe ju thotë mbi çfarë po punoni.

## Feed-i i ngjarjeve është boshti

Thirrni `GET /events` në mënyrë periodike me `next_cursor`-in e fundit që keni marrë. Feed-i vetëm
shtohet: asnjë ngjarje nuk ndryshon dhe asnjë nuk fshihet, ndaj asgjë nuk humbet gjatë kohës që
sistemi juaj nuk punon. Dorëzimi është të paktën një herë (at-least-once), ndaj trajtojeni çiftin
`(order_id, type)` si idempotent. Çdo ngjarje mban një snapshot të shkurtër të porosisë në atë
çast, që zakonisht mjafton pa një thirrje të dytë.

## Çdo shkrim kërkon një Idempotency-Key

Tetë endpoint-et e veprimeve kërkojnë header-in `Idempotency-Key`. Një kërkesë pa të refuzohet me
**400**.

- Një riprovim me të njëjtin çelës kthen përsëritjen e përgjigjes së parë, në vend që t'i dërgojë
  Wolt-it një veprim të dytë, dhe përsëritja mban header-in `Idempotent-Replayed: true`. Çelësat
  ruhen 24 orë.
- Një thirrje e dytë me të njëjtin çelës, ndërsa e para është ende në proces, refuzohet me **409**.
- Ruhen vetëm rezultatet e suksesshme, ndaj një dështim kalimtar riprovohet pa rrezik me të njëjtin
  çelës.

## Gabimet

Një kërkesë që dështon kthen të njëjtin format si pjesa tjetër e API-së, plus një `code` të
qëndrueshëm:

```json
{"status": false, "message": "Porosia nuk u gjet.", "code": "order_not_found"}
```

Vendosni sipas `code`, jo sipas `message`: mesazhi është i përkthyer dhe mund të ndryshojë.

| Kodi | Statusi | Kuptimi |
| --- | --- | --- |
| `unauthenticated` | 401 | Token-i mungon ose nuk vlen |
| `wolt_not_enabled` | 403 | Kompania nuk e ka modulin Wolt |
| `forbidden` | 403 | Përdoruesi i token-it nuk ka të drejtën Wolt |
| `no_venue` | 403 | Token-i nuk zgjidhet në një njësi të vetme aktive |
| `order_not_found` | 404 | Nuk ka porosi të tillë për këtë njësi |
| `invalid_transition` | 409 | Veprimi nuk lejohet për statusin aktual të porosisë. Asgjë nuk i është dërguar Wolt-it |
| `idempotency_key_required` | 400 | Header-i `Idempotency-Key` mungon |
| `idempotency_in_progress` | 409 | Një thirrje me të njëjtin çelës është ende në proces |
| `invalid_data` | 422 | Body i kërkesës nuk kaloi validimin |
| `action_failed` | 422 | Veprimi dështoi nga ana jonë dhe nuk u krye |
| `wolt_upstream_error` | 502 | Wolt e refuzoi veprimin ose nuk u përgjigj. Riprovoni pa rrezik me të njëjtin çelës |

Token-i kontrollohet nga identifikimi i përgjithshëm i API-së para se kërkesa të arrijë këtu, ndaj
një `401` mund të vijë edhe si `{"message": "Unauthenticated."}`, pa `code`. Dërgoni header-in
`Accept: application/json` në çdo kërkesë, që një token i pavlefshëm të marrë `401` dhe jo një
ridrejtim.

## Kufijtë e kërkesave (rate limit)

Leximet mbajnë ciklin e thirrjeve periodike të feed-it, ndaj kanë kufirin më të gjerë; shkrimet i
dërgohen Wolt-it, ndaj kanë kufi më të ngushtë. Të dy numërohen për token.

| | Kufiri |
| --- | --- |
| Lexime (`GET`) | 180 në minutë |
| Shkrime (`POST`) | 60 në minutë |

Mbi kufi përgjigja është **429** me header-in `Retry-After`, që thotë sa sekonda të prisni.

## Servers

- `https://fature.al/api/partner/v1` - Live
- `https://demo.fature.al/api/partner/v1` - Sandbox

## Endpoints

### GET /wolt/events

**Summary:** Lexo feed-in e ngjarjeve

Boshti i integrimit. Thirreni këtë endpoint në mënyrë periodike me `next_cursor`-in e fundit
që keni marrë, dhe merrni me radhë ngjarjet e ciklit të porosive të njësisë (venue). Feed-i
vetëm shtohet, ndaj asgjë nuk humbet gjatë kohës që sistemi juaj nuk punon; dorëzimi është
të paktën një herë (at-least-once), ndaj trajtojeni çiftin `(order_id, type)` si idempotent.
Çdo ngjarje mban te `order` një snapshot të shkurtër të porosisë në atë çast.

**Tags:** Wolt Partner API

**Parameters:**

| Name | In | Required | Description |
|------|----|----------|-------------|
| `since` | query | no | Cursor-i nga i cili vazhdohet; dërgoni next_cursor-in e mëparshëm. Parazgjedhja është 0, fillimi i historikut të ruajtur. |
| `limit` | query | no | Numri më i madh i ngjarjeve që kthehen, 1-200. |
| `types` | query | no | Llojet e ngjarjeve që përfshihen, të ndara me presje, p.sh. order.received,order.ready. |

**Responses:**

- `200` - Ngjarjet pas `since` te `events`, nga më e vjetra te më e reja, me `next_cursor` dhe `has_more`; `events` është bosh kur nuk ka asgjë të re.
- `401`
- `403` - Kompania nuk e ka modulin Wolt, përdoruesi i token-it nuk ka të drejtën Wolt, ose token-i nuk zgjidhet në një njësi të vetme aktive.
- `429` - Kufiri i kërkesave u arrit: 180 lexime në minutë për token. Riprovoni pas numrit të sekondave në header-in Retry-After.

---

### GET /wolt/orders

**Summary:** Listo porositë

Porositë e njësisë (venue), më të rejat të parat.

Për të shkuar më prapa, dërgoni `next_cursor`-in e përgjigjes së mëparshme si `?cursor=`.
Ndaloni kur `has_more` është `false`.

Ky është një snapshot për listim dhe për plotësim të historikut. Për të qëndruar në hap me
njësinë në kohë reale lexoni feed-in e ngjarjeve: ai vetëm shtohet dhe është i renditur,
ndaj asgjë nuk humbet.

**Tags:** Wolt Partner API

**Parameters:**

| Name | In | Required | Description |
|------|----|----------|-------------|
| `cursor` | query | no | Kthen porositë më të vjetra se kjo id; dërgoni next_cursor-in e mëparshëm. |
| `limit` | query | no | Numri i porosive për kërkesë, 1-100. |
| `status` | query | no | Filtron sipas statusit të Wolt, p.sh. received, acknowledged, ready, delivered. |
| `from` | query | no | Vetëm porositë e marra në këtë datë ose pas saj (YYYY-MM-DD). |
| `to` | query | no | Vetëm porositë e marra në këtë datë ose para saj (YYYY-MM-DD). |

**Responses:**

- `200` - Porositë e njësisë te `orders`, nga më e reja te më e vjetra, me `next_cursor` dhe `has_more`; `orders` është bosh kur nuk ka porosi.
- `401`
- `403` - Kompania nuk e ka modulin Wolt, përdoruesi i token-it nuk ka të drejtën Wolt, ose token-i nuk zgjidhet në një njësi të vetme aktive.
- `429` - Kufiri i kërkesave u arrit: 180 lexime në minutë për token. Riprovoni pas numrit të sekondave në header-in Retry-After.

---

### GET /wolt/orders/{id}

**Summary:** Merr një porosi

Kthen gjendjen e plotë të një porosie, siç e mban fature.al: kreun, palët, rreshtat, totalet dhe
lidhjen fiskale. Përdoreni kur snapshot-i i shkurtër i feed-it ose i listës nuk mjafton, për
shembull për ta shfaqur porosinë në kuzhinë me modifikuesit e zgjedhur, shënimin e klientit dhe
zbritjet, ose për të rilexuar gjendjen e tanishme pas një ngjarjeje. Objekti `order` është i
njëjtë me atë që kthen çdo endpoint veprimi, ndaj një lexues i vetëm mjafton për të dyja. Sa kohë
porosia nuk ka faturë, `invoice` është `null` dhe rreshtat vijnë nga payload-i i Wolt; pas
lëshimit të faturës, rreshtat vijnë nga fatura fiskale dhe mbajnë produktin me të cilin u
faturuan.

**Tags:** Wolt Partner API

**Parameters:**

| Name | In | Required | Description |
|------|----|----------|-------------|
| `id` | path | yes | Id-ja e porosisë në fature.al, nga feed-i ose nga lista e porosive. |

**Responses:**

- `200` - Porosia e plotë te `data.order`: kreu, palët, rreshtat, totalet dhe referenca e faturës.
- `401`
- `403` - Kompania nuk e ka modulin Wolt, përdoruesi i token-it nuk ka të drejtën Wolt, ose token-i nuk zgjidhet në një njësi të vetme aktive.
- `404` - Nuk ka porosi të tillë për këtë njësi.
- `429` - Kufiri i kërkesave u arrit: 180 lexime në minutë për token. Riprovoni pas numrit të sekondave në header-in Retry-After.

---

### POST /wolt/orders/{id}/accept

**Summary:** Prano një porosi

Ia kalon Wolt-it pranimin. Këtu nuk lëshohet faturë fiskale: ajo lëshohet kur porosia
shënohet gati.

`pickup_minutes` ka dy kuptime, sipas llojit të porosisë:

| Lloji i porosisë | Çfarë premton `pickup_minutes` |
| --- | --- |
| Marketplace | Kur do të jetë gati ushqimi, që Wolt të nisë korrierin në atë orar |
| Self-delivery | **Kohën e plotë të dorëzimit** që i premtohet klientit |

Një vlerë e gabuar te një porosi marketplace dërgon një korrier që pret, ose lë ushqimin të
ftohet.

**Tags:** Wolt Partner API

**Parameters:**

| Name | In | Required | Description |
|------|----|----------|-------------|
| `id` | path | yes | Id-ja e porosisë në fature.al, nga feed-i ose nga lista e porosive. |
| `Idempotency-Key` | header | yes | Çelësi i idempotencës: një çelës unik, i juaji, për këtë veprim. Një riprovim me të njëjtin çelës kthen përsëritjen e përgjigjes së parë, në vend që t'i dërgojë Wolt-it një veprim të dytë, dhe përsëritja mban header-in Idempotent-Replayed: true. Ruhet 24 orë. |

**Request body content types:** application/json

**Responses:**

- `200` - Porosia e rifreskuar te `data.order`, me statusin `acknowledged`; `pickup_at` mban kohën e premtuar Wolt-it, kur u premtua një e tillë.
- `401`
- `400` - Header-i Idempotency-Key mungon.
- `403` - Kompania nuk e ka modulin Wolt, përdoruesi i token-it nuk ka të drejtën Wolt, ose token-i nuk zgjidhet në një njësi të vetme aktive.
- `404` - Nuk ka porosi të tillë për këtë njësi.
- `409` - Statusi aktual i porosisë nuk e lejon këtë veprim, ose një thirrje me të njëjtin Idempotency-Key është ende në proces. Asgjë nuk i është dërguar Wolt-it.
- `422` - pickup_minutes është jashtë intervalit 5-180, ose veprimi dështoi nga ana jonë dhe nuk u krye.
- `502` - Wolt e refuzoi veprimin ose nuk u përgjigj. Riprovoni pa rrezik me të njëjtin Idempotency-Key.
- `429` - Kufiri i kërkesave u arrit: 60 shkrime në minutë për token. Riprovoni pas numrit të sekondave në header-in Retry-After.

---

### POST /wolt/orders/{id}/confirm-preorder

**Summary:** Konfirmo një porosi të paraporositur

Konfirmon një porosi të paraporositur, që klienti e ka planifikuar për më vonë. Ajo qëndron
në pritje derisa Wolt ta lëshojë në përgatitje afër orarit të saj, dhe vetëm pas kësaj mund
të shënohet gati.

**Tags:** Wolt Partner API

**Parameters:**

| Name | In | Required | Description |
|------|----|----------|-------------|
| `id` | path | yes | Id-ja e porosisë në fature.al, nga feed-i ose nga lista e porosive. |
| `Idempotency-Key` | header | yes | Çelësi i idempotencës: një çelës unik, i juaji, për këtë veprim. Një riprovim me të njëjtin çelës kthen përsëritjen e përgjigjes së parë, në vend që t'i dërgojë Wolt-it një veprim të dytë, dhe përsëritja mban header-in Idempotent-Replayed: true. Ruhet 24 orë. |

**Responses:**

- `200` - Porosia e rifreskuar te `data.order`, me statusin `preorder_confirmed`.
- `401`
- `400` - Header-i Idempotency-Key mungon.
- `403` - Kompania nuk e ka modulin Wolt, përdoruesi i token-it nuk ka të drejtën Wolt, ose token-i nuk zgjidhet në një njësi të vetme aktive.
- `404` - Nuk ka porosi të tillë për këtë njësi.
- `409` - Statusi aktual i porosisë nuk e lejon këtë veprim, ose një thirrje me të njëjtin Idempotency-Key është ende në proces. Asgjë nuk i është dërguar Wolt-it.
- `422` - Veprimi dështoi nga ana jonë dhe nuk u krye.
- `502` - Wolt e refuzoi veprimin ose nuk u përgjigj. Riprovoni pa rrezik me të njëjtin Idempotency-Key.
- `429` - Kufiri i kërkesave u arrit: 60 shkrime në minutë për token. Riprovoni pas numrit të sekondave në header-in Retry-After.

---

### POST /wolt/orders/{id}/courier-at-customer

**Summary:** Shëno korrierin te klienti

Hapi i dytë i self-delivery: korrieri mbërriti te klienti. Vetëm për porositë
**self-delivery**, dhe vetëm pas `pickup-completed`. Wolt e njofton klientin që korrieri ka
mbërritur, ndaj dërgojeni kur kjo është e vërtetë dhe jo paraprakisht.

Porosia kalon në `courier_at_customer`. Vetë dorëzimi konfirmohet veçmas me `delivered`.

**Tags:** Wolt Partner API

**Parameters:**

| Name | In | Required | Description |
|------|----|----------|-------------|
| `id` | path | yes | Id-ja e porosisë në fature.al, nga feed-i ose nga lista e porosive. |
| `Idempotency-Key` | header | yes | Çelësi i idempotencës: një çelës unik, i juaji, për këtë veprim. Një riprovim me të njëjtin çelës kthen përsëritjen e përgjigjes së parë, në vend që t'i dërgojë Wolt-it një veprim të dytë, dhe përsëritja mban header-in Idempotent-Replayed: true. Ruhet 24 orë. |

**Responses:**

- `200` - Porosia e rifreskuar te `data.order`, me statusin `courier_at_customer`.
- `401`
- `400` - Header-i Idempotency-Key mungon.
- `403` - Kompania nuk e ka modulin Wolt, përdoruesi i token-it nuk ka të drejtën Wolt, ose token-i nuk zgjidhet në një njësi të vetme aktive.
- `404` - Nuk ka porosi të tillë për këtë njësi.
- `409` - Statusi aktual i porosisë nuk e lejon këtë veprim, ose një thirrje me të njëjtin Idempotency-Key është ende në proces. Asgjë nuk i është dërguar Wolt-it.
- `422` - Veprimi dështoi nga ana jonë dhe nuk u krye.
- `502` - Wolt e refuzoi veprimin ose nuk u përgjigj. Riprovoni pa rrezik me të njëjtin Idempotency-Key.
- `429` - Kufiri i kërkesave u arrit: 60 shkrime në minutë për token. Riprovoni pas numrit të sekondave në header-in Retry-After.

---

### POST /wolt/orders/{id}/delivered

**Summary:** Shëno porosinë të dorëzuar

Hapi i fundit, i përdorur në dy raste:

- **Takeaway**: klienti e ka marrë porosinë pasi u shënua gati.
- **Self-delivery**: korrieri juaj e ka dorëzuar, pas `courier-at-customer`.

Porositë marketplace nuk kanë nevojë për të: i merr një korrier i Wolt dhe i mbyll Wolt.

Porosia kalon në `delivered` dhe del nga tabela e porosive aktive.

**Tags:** Wolt Partner API

**Parameters:**

| Name | In | Required | Description |
|------|----|----------|-------------|
| `id` | path | yes | Id-ja e porosisë në fature.al, nga feed-i ose nga lista e porosive. |
| `Idempotency-Key` | header | yes | Çelësi i idempotencës: një çelës unik, i juaji, për këtë veprim. Një riprovim me të njëjtin çelës kthen përsëritjen e përgjigjes së parë, në vend që t'i dërgojë Wolt-it një veprim të dytë, dhe përsëritja mban header-in Idempotent-Replayed: true. Ruhet 24 orë. |

**Responses:**

- `200` - Porosia e rifreskuar te `data.order`, me statusin `delivered`.
- `401`
- `400` - Header-i Idempotency-Key mungon.
- `403` - Kompania nuk e ka modulin Wolt, përdoruesi i token-it nuk ka të drejtën Wolt, ose token-i nuk zgjidhet në një njësi të vetme aktive.
- `404` - Nuk ka porosi të tillë për këtë njësi.
- `409` - Statusi aktual i porosisë nuk e lejon këtë veprim, ose një thirrje me të njëjtin Idempotency-Key është ende në proces. Asgjë nuk i është dërguar Wolt-it.
- `422` - Veprimi dështoi nga ana jonë dhe nuk u krye.
- `502` - Wolt e refuzoi veprimin ose nuk u përgjigj. Riprovoni pa rrezik me të njëjtin Idempotency-Key.
- `429` - Kufiri i kërkesave u arrit: 60 shkrime në minutë për token. Riprovoni pas numrit të sekondave në header-in Retry-After.

---

### GET /wolt/orders/{id}/invoice

**Summary:** Merr faturën fiskale të porosisë

Kthen faturën fiskale të lëshuar për porosinë: identifikuesit `IIC`, `FIC` dhe `EIC`,
verifikimin nëpërmjet `pdf_url`, klientin, shumat dhe rreshtat.

Objekti i faturës është i njëjtë me atë të `GET /api/v1/invoice/{id}/details`, ndaj çdo gjë e
shkruar tashmë për atë endpoint punon këtu pa ndryshim.

## Sa kohë është ende null

`invoice` është `null` sa kohë porosia nuk ka faturë. Ndiqni `fiscal_state` në vend që të
thërrisni pa kriter:

| `fiscal_state` | Kuptimi |
| --- | --- |
| `pending` | Ende pa faturë. Shënojeni porosinë gati që të lëshohet një |
| `deferred` | E lëshuar, në pritje të CIS-it; `invoice` vjen me `fic: null`. Përfundon vetë |
| `fiscalised` | E kryer. `invoice` është i plotësuar |
| `failed` | Duhet riprovuar |

Edhe më mirë, ndiqni ngjarjen `order.fiscalized` në feed në vend të thirrjeve periodike.

**Tags:** Wolt Partner API

**Parameters:**

| Name | In | Required | Description |
|------|----|----------|-------------|
| `id` | path | yes | Id-ja e porosisë në fature.al, nga feed-i ose nga lista e porosive. |

**Responses:**

- `200` - Gjendja fiskale te `fiscal_state` dhe fatura e plotë te `invoice`; `invoice` është `null` sa kohë porosia nuk ka faturë.
- `401`
- `403` - Kompania nuk e ka modulin Wolt, përdoruesi i token-it nuk ka të drejtën Wolt, ose token-i nuk zgjidhet në një njësi të vetme aktive.
- `404` - Nuk ka porosi të tillë për këtë njësi.
- `429` - Kufiri i kërkesave u arrit: 180 lexime në minutë për token. Riprovoni pas numrit të sekondave në header-in Retry-After.

---

### POST /wolt/orders/{id}/pickup-completed

**Summary:** Shëno marrjen nga korrieri

Hapi i parë i self-delivery: korrieri i vetë njësisë (venue) e mori porosinë. Vetëm për
porositë **self-delivery**, ku njësia dorëzon me korrierin e vet dhe jo me një korrier të
Wolt. Porositë marketplace dhe takeaway nuk e thërrasin kurrë.

Ky **nuk** është dorëzimi. Porosia kalon në `picked_up` dhe mbetet e hapur gjatë
`courier-at-customer` dhe `delivered`, ndaj qëndron në tabelën e porosive derisa dorëzimi të
konfirmohet.

**Tags:** Wolt Partner API

**Parameters:**

| Name | In | Required | Description |
|------|----|----------|-------------|
| `id` | path | yes | Id-ja e porosisë në fature.al, nga feed-i ose nga lista e porosive. |
| `Idempotency-Key` | header | yes | Çelësi i idempotencës: një çelës unik, i juaji, për këtë veprim. Një riprovim me të njëjtin çelës kthen përsëritjen e përgjigjes së parë, në vend që t'i dërgojë Wolt-it një veprim të dytë, dhe përsëritja mban header-in Idempotent-Replayed: true. Ruhet 24 orë. |

**Responses:**

- `200` - Porosia e rifreskuar te `data.order`, me statusin `picked_up`.
- `401`
- `400` - Header-i Idempotency-Key mungon.
- `403` - Kompania nuk e ka modulin Wolt, përdoruesi i token-it nuk ka të drejtën Wolt, ose token-i nuk zgjidhet në një njësi të vetme aktive.
- `404` - Nuk ka porosi të tillë për këtë njësi.
- `409` - Statusi aktual i porosisë nuk e lejon këtë veprim, ose një thirrje me të njëjtin Idempotency-Key është ende në proces. Asgjë nuk i është dërguar Wolt-it.
- `422` - Veprimi dështoi nga ana jonë dhe nuk u krye.
- `502` - Wolt e refuzoi veprimin ose nuk u përgjigj. Riprovoni pa rrezik me të njëjtin Idempotency-Key.
- `429` - Kufiri i kërkesave u arrit: 60 shkrime në minutë për token. Riprovoni pas numrit të sekondave në header-in Retry-After.

---

### POST /wolt/orders/{id}/ready

**Summary:** Shëno porosinë gati

**Ky është hapi që lëshon faturën fiskale.** Nëse porosia nuk ka ende faturë, ajo lëshohet
dhe fiskalizohet këtu, ndaj shënimi gati është çasti kur shitja bëhet dokument ligjor. Një
thirrje e dytë mbi një porosi që e ka tashmë faturën nuk lëshon një të dytë.

Çfarë vjen pas varet nga lloji i dorëzimit:

| Lloji i dorëzimit | Pas shënimit gati |
| --- | --- |
| Marketplace | Porosinë e merr një korrier i Wolt |
| Takeaway | Klienti e merr vetë; pastaj thirrni `delivered` |
| Self-delivery | Thirrni `pickup-completed`, pastaj `courier-at-customer`, pastaj `delivered` |

Porosia kalon në statusin `ready`.

**Tags:** Wolt Partner API

**Parameters:**

| Name | In | Required | Description |
|------|----|----------|-------------|
| `id` | path | yes | Id-ja e porosisë në fature.al, nga feed-i ose nga lista e porosive. |
| `Idempotency-Key` | header | yes | Çelësi i idempotencës: një çelës unik, i juaji, për këtë veprim. Një riprovim me të njëjtin çelës kthen përsëritjen e përgjigjes së parë, në vend që t'i dërgojë Wolt-it një veprim të dytë, dhe përsëritja mban header-in Idempotent-Replayed: true. Ruhet 24 orë. |

**Responses:**

- `200` - Porosia e rifreskuar te `data.order`, me statusin `ready` dhe referencën e faturës te `invoice`; `fiscal_state` është `fiscalised`, ose `deferred` kur CIS-i nuk u arrit.
- `401`
- `400` - Header-i Idempotency-Key mungon.
- `403` - Kompania nuk e ka modulin Wolt, përdoruesi i token-it nuk ka të drejtën Wolt, ose token-i nuk zgjidhet në një njësi të vetme aktive.
- `404` - Nuk ka porosi të tillë për këtë njësi.
- `409` - Statusi aktual i porosisë nuk e lejon këtë veprim, ose një thirrje me të njëjtin Idempotency-Key është ende në proces. Asgjë nuk i është dërguar Wolt-it.
- `422` - Veprimi dështoi nga ana jonë dhe nuk u krye.
- `502` - Wolt e refuzoi veprimin ose nuk u përgjigj. Riprovoni pa rrezik me të njëjtin Idempotency-Key.
- `429` - Kufiri i kërkesave u arrit: 60 shkrime në minutë për token. Riprovoni pas numrit të sekondave në header-in Retry-After.

---

### POST /wolt/orders/{id}/reject

**Summary:** Refuzo një porosi

E refuzon porosinë dhe ia kalon refuzimin Wolt-it. Është përfundimtar: një porosi e refuzuar
nuk pranohet dot më pas, dhe për të nuk lëshohet faturë fiskale.

| Fusha | Shënime |
| --- | --- |
| `reason` | Tekst i lirë, deri në 255 karaktere. **Wolt mund t'ia tregojë klientit**, ndaj mbajeni të përshtatshëm |
| `code` | `GENERIC`, `ITEMS_UNAVAILABLE` ose `VENUE_CLOSING_SOON`. Parazgjedhja është `GENERIC` |

Të dyja janë opsionale, por një `code` i saktë e ndihmon Wolt-in t'i ofrojë klientit një
alternativë të arsyeshme në vend të një ndjese të përgjithshme.

**Tags:** Wolt Partner API

**Parameters:**

| Name | In | Required | Description |
|------|----|----------|-------------|
| `id` | path | yes | Id-ja e porosisë në fature.al, nga feed-i ose nga lista e porosive. |
| `Idempotency-Key` | header | yes | Çelësi i idempotencës: një çelës unik, i juaji, për këtë veprim. Një riprovim me të njëjtin çelës kthen përsëritjen e përgjigjes së parë, në vend që t'i dërgojë Wolt-it një veprim të dytë, dhe përsëritja mban header-in Idempotent-Replayed: true. Ruhet 24 orë. |

**Request body content types:** application/json

**Responses:**

- `200` - Porosia e rifreskuar te `data.order`, me statusin `rejected`; nuk lëshohet faturë.
- `401`
- `422` - Kodi i refuzimit nuk është një nga GENERIC, ITEMS_UNAVAILABLE ose VENUE_CLOSING_SOON, ose veprimi dështoi nga ana jonë. Një dështim validimi shton objektin errors në përgjigje.
- `400` - Header-i Idempotency-Key mungon.
- `403` - Kompania nuk e ka modulin Wolt, përdoruesi i token-it nuk ka të drejtën Wolt, ose token-i nuk zgjidhet në një njësi të vetme aktive.
- `404` - Nuk ka porosi të tillë për këtë njësi.
- `409` - Statusi aktual i porosisë nuk e lejon këtë veprim, ose një thirrje me të njëjtin Idempotency-Key është ende në proces. Asgjë nuk i është dërguar Wolt-it.
- `502` - Wolt e refuzoi veprimin ose nuk u përgjigj. Riprovoni pa rrezik me të njëjtin Idempotency-Key.
- `429` - Kufiri i kërkesave u arrit: 60 shkrime në minutë për token. Riprovoni pas numrit të sekondave në header-in Retry-After.

---

### POST /wolt/orders/{id}/retry-fiscalize

**Summary:** Riprovo fiskalizimin

Përdoreni kur `fiscal_state` është `deferred` ose `failed`, që ndodh kur CIS-i nuk u arrit
në çastin që u lëshua fatura. Riprovimi bën atë që i takon rastit:

- porosia ka tashmë një faturë të pafiskalizuar, ndaj fiskalizohet ajo faturë;
- porosia nuk ka fare faturë, ndaj lëshohet dhe fiskalizohet një tani.

**Një porosi e refuzuar, e anuluar ose e rimbursuar nuk fiskalizohet dot** dhe thirrja
refuzohet. Riprovimi mbi një porosi tashmë të fiskalizuar është i padëmshëm dhe nuk ndryshon
asgjë.

**Tags:** Wolt Partner API

**Parameters:**

| Name | In | Required | Description |
|------|----|----------|-------------|
| `id` | path | yes | Id-ja e porosisë në fature.al, nga feed-i ose nga lista e porosive. |
| `Idempotency-Key` | header | yes | Çelësi i idempotencës: një çelës unik, i juaji, për këtë veprim. Një riprovim me të njëjtin çelës kthen përsëritjen e përgjigjes së parë, në vend që t'i dërgojë Wolt-it një veprim të dytë, dhe përsëritja mban header-in Idempotent-Replayed: true. Ruhet 24 orë. |

**Responses:**

- `200` - Porosia e rifreskuar te `data.order`; `fiscal_state` është `fiscalised` kur fiskalizimi u krye, ose `deferred` kur fatura u lëshua por CIS-i nuk u arrit.
- `401`
- `400` - Header-i Idempotency-Key mungon.
- `403` - Kompania nuk e ka modulin Wolt, përdoruesi i token-it nuk ka të drejtën Wolt, ose token-i nuk zgjidhet në një njësi të vetme aktive.
- `404` - Nuk ka porosi të tillë për këtë njësi.
- `409` - Statusi aktual i porosisë nuk e lejon këtë veprim, ose një thirrje me të njëjtin Idempotency-Key është ende në proces. Asgjë nuk i është dërguar Wolt-it.
- `422` - Veprimi dështoi nga ana jonë dhe nuk u krye.
- `502` - Wolt e refuzoi veprimin ose nuk u përgjigj. Riprovoni pa rrezik me të njëjtin Idempotency-Key.
- `429` - Kufiri i kërkesave u arrit: 60 shkrime në minutë për token. Riprovoni pas numrit të sekondave në header-in Retry-After.

---

### GET /wolt/ping

**Summary:** Kontrollo lidhjen

Verifikon token-in dhe kthen njësinë (venue) e vetme Wolt me të cilën është lidhur. Thirreni
të parën, që të konfirmoni kredencialet dhe të shihni mbi cilën kompani, njësi biznesi dhe
njësi Wolt punon token-i.

**Tags:** Wolt Partner API

**Responses:**

- `200` - Njësia (venue) mbi të cilën punon token-i: kompania, njësia e biznesit, id-ja e njësisë te Wolt, statusi i lidhjes dhe ora e serverit.
- `401`
- `403` - Kompania nuk e ka modulin Wolt, përdoruesi i token-it nuk ka të drejtën Wolt, ose token-i nuk zgjidhet në një njësi të vetme aktive.
- `429` - Kufiri i kërkesave u arrit: 180 lexime në minutë për token. Riprovoni pas numrit të sekondave në header-in Retry-After.

---

## Full OpenAPI specification

For complete schemas, examples and request/response bodies, fetch the JSON spec:

```
https://fature.al/docs/api.json
```
