---
# System prepended metadata

title: Procurement API

---

<style>
span.method {
    color: white;
    padding: 6px 8px;
    border-radius: 4px;
    margin-right: 12px;
}
    
.get { background-color: green; }
.post { background-color: orange; }
.delete { background-color: firebrick; }
.patch { background-color: navy; }
.model { display: flex; align-items: center; color: #333;}
.model .icon { 
    width: 24px;
    height: 24px;
    margin-right: 4px;
    background-size: contain;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' aria-hidden='true' role='img' class='icon' width='32' height='32' preserveAspectRatio='xMidYMid meet' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M8 8h8v8H8z'%3E%3C/path%3E%3Crect width='16' height='16' x='4' y='4' rx='2'%3E%3C/rect%3E%3Cpath d='m16 16l3.3 3.3M16 8l3.3-3.3M8 8L4.7 4.7M8 16l-3.3 3.3'%3E%3C/path%3E%3C/g%3E%3C/svg%3E");
      }
.partial { font-size: 12px; padding: 2px 6px; border-radius: 4px; background: #eee; margin-right: 8px;}
details .collapse {
    background: #f1f1f1;
    padding: 8px;
    border-radius: 6px;
    display: flex;
}
</style>

# Procurement API

## Endpoints

### List procurement items

<strong><span class="method get">GET</span> <code>/procurement-item</code></strong>

#### Query Params
```yaml=
limit?: number = 100
offset?: number = 0
since?: Date = null
until?: Date = null
id_shopper?: string
```

#### Response

<details>
<summary>
    <code>200</code> Procurement items successfully fetched
</summary>
    
> The contents of the fetched procurement items

<a href="#ProcurementItem" class="model">
<span class="partial">List of</span>
<div class="icon"></div>
<strong>Procurement Item</strong>
</a>    
</details>
---

### Get a procurement item

<strong><span class="method get">GET</span> <code>/procurement-item/:id</code></strong>

#### Path params
`id` → The ID of the procurement item to be fetched

#### Response


<details>
<summary>
<code>200</code> Procurement item successfully found
</summary>

> The contents of the fetched procurement item

<a href="#ProcurementItem" class="model">
<div class="icon"></div>
<strong>Procurement Item</strong>
</a>
</details>



<details>
<summary>
<code>404</code> Procurement item not found
</summary>
    
```json
{
    "error": true,
    "message": "Resource not found",
    "code": "ERR_RESOURCE_NOT_FOUND"
}
```
</details>


---

### Create a procurement item

<strong><span class="method post">POST</span> <code>/procurement-item</code></strong>

#### Request body

<details>
<summary>Add a single item</summary>
    
<div class="collapse">
        
<a href="#ProcurementItem" class="model">
<div class="icon"></div>
<strong>Procurement Item</strong>
</a>
    
</div>
    
</details>
<details style="margin-top: 6px">
<summary>Add multiple items</summary>
   
<div class="collapse">
    <a href="#ProcurementItem" class="model">
        <span class="partial">List of</span>
        <div class="icon"></div>
        <strong>Procurement Item</strong>
    </a>
</div>
    
</details>


#### Response

<details>
<summary>
    <code>200</code> Procurement item successfully created
</summary>
    
> The contents of the created procurement items

<a href="#ProcurementItem" class="model">
<span class="partial">List of</span>
<div class="icon"></div>
<strong>Procurement Item</strong>
</a>    
</details>

<details>
<summary>
    <code>400</code> Request body malformed
</summary>
    
> The structure of the request payload is incorrect

```json
{
    "error": true,
    "message": "Request body malformed",
    "details": {
        "missing": ["field"],
        "invalid": ["field"],
    },
    "code": "ERR_REQUEST_BODY_MALFORMED"
}
```
</details>


---

### Update a procurement item

<strong><span class="method patch">PATCH</span> <code>/procurement-item/:id</code></strong>

#### Path params
`id` → The ID of the procurement item to be updated

#### Request body
<a href="#ProcurementItem" class="model">
<span class="partial">Partial</span>
<div class="icon"></div>
<strong>Procurement Item</strong>
</a>




#### Response
<details>
<summary>
    <code>200</code> Procurement item successfully updated
</summary>
    
> The contents of the updated procurement item

<a href="#ProcurementItem" class="model">
<div class="icon"></div>
<strong>Procurement Item</strong>
</a>    
</details>

<details>
<summary>
    <code>400</code> Request body malformed
</summary>
    
> The structure of the request payload is incorrect

```json
{
    "error": true,
    "message": "Request body malformed",
    "details": {
        "missing": ["field"],
        "invalid": ["field"],
    },
    "code": "ERR_REQUEST_BODY_MALFORMED"
}
```
</details>


<details>
<summary>
<code>404</code> Procurement item not found
</summary>
    
```json
{
    "error": true,
    "message": "Resource not found",
    "code": "ERR_RESOURCE_NOT_FOUND"
}
```
</details>



---


### Delete a procurement item

<strong><span class="method delete">DELETE</span> <code>/procurement-item/:id</code></strong>

#### Path params
`id` → The ID of the procurement item to be deleted


#### Response
<details>
<summary>
<code>200</code> Procurement item successfully deleted
</summary>
    
> The contents of the deleted item

<a href="#ProcurementItem" class="model">
<div class="icon"></div>
<strong>Procurement Item</strong>
</a>
</details>


<details>
<summary>
<code>404</code> Procurement item not found
</summary>
    
```json
{
    "error": true,
    "message": "Resource not found",
    "code": "ERR_RESOURCE_NOT_FOUND"
}
```
</details>

---

### List procurement buy events

<strong><span class="method get">GET</span> <code>/procurement-buy-event</code></strong>

#### Query Params
```yaml=
limit?: number = 100
offset?: number = 0
since?: Date = null
until?: Date = null
id_procurement_item?: string
```

#### Response

<details>
<summary>
    <code>200</code> Procurement buy events successfully fetched
</summary>
    
> The contents of the fetched procurement buy events

<a href="#ProcurementBuyEvent" class="model">
<span class="partial">List of</span>
<div class="icon"></div>
<strong>Procurement Buy Event</strong>
</a>    
</details>

---

### Get a procurement item

<strong><span class="method get">GET</span> <code>/procurement-buy-event/:id</code></strong>

#### Path params
`id` → The ID of the procurement buy event to be fetched

#### Response


<details>
<summary>
<code>200</code> Procurement buy event successfully found
</summary>

> The contents of the fetched procurement buy event

<a href="#ProcurementBuyEvent" class="model">
<div class="icon"></div>
<strong>Procurement Buy Event</strong>
</a>
</details>



<details>
<summary>
<code>404</code> Procurement item not found
</summary>
    
```json
{
    "error": true,
    "message": "Resource not found",
    "code": "ERR_RESOURCE_NOT_FOUND"
}
```
</details>


---

### Create a procurement buy event

<strong><span class="method post">POST</span> <code>/procurement-buy-event</code></strong>

#### Request body

<details>
<summary>Add a single buy event</summary>
    
<div class="collapse">
        
<a href="#ProcurementBuyEvent" class="model">
<div class="icon"></div>
<strong>Procurement Buy Event</strong>
</a>
    
</div>
    
</details>
<details style="margin-top: 6px">
<summary>Add multiple buy events</summary>
   
<div class="collapse">
    <a href="#ProcurementBuyEvent" class="model">
        <span class="partial">List of</span>
        <div class="icon"></div>
        <strong>Procurement Buy Event</strong>
    </a>
</div>
    
</details>


#### Response

<details>
<summary>
    <code>200</code> Procurement buy event successfully created
</summary>
    
> The contents of the created procurement buy events

<a href="#ProcurementBuyEvent" class="model">
<span class="partial">List of</span>
<div class="icon"></div>
<strong>Procurement Buy Event</strong>
</a>    
</details>

<details>
<summary>
    <code>400</code> Request body malformed
</summary>
    
> The structure of the request payload is incorrect

```json
{
    "error": true,
    "message": "Request body malformed",
    "details": {
        "missing": ["field"],
        "invalid": ["field"],
    },
    "code": "ERR_REQUEST_BODY_MALFORMED"
}
```
</details>


---

### Update a procurement buy event

<strong><span class="method patch">PATCH</span> <code>/procurement-buy-event/:id</code></strong>

#### Path params
`id` → The ID of the procurement buy event to be updated

#### Request body
<a href="#ProcurementBuyEvent" class="model">
<span class="partial">Partial</span>
<div class="icon"></div>
<strong>Procurement Buy Event</strong>
</a>




#### Response
<details>
<summary>
    <code>200</code> Procurement buy event successfully updated
</summary>
    
> The contents of the updated procurement buy event

<a href="#ProcurementBuyEvent" class="model">
<div class="icon"></div>
<strong>Procurement Buy Event</strong>
</a>    
</details>

<details>
<summary>
    <code>400</code> Request body malformed
</summary>
    
> The structure of the request payload is incorrect

```json
{
    "error": true,
    "message": "Request body malformed",
    "details": {
        "missing": ["field"],
        "invalid": ["field"],
    },
    "code": "ERR_REQUEST_BODY_MALFORMED"
}
```
</details>


<details>
<summary>
<code>404</code> Procurement buy event not found
</summary>
    
```json
{
    "error": true,
    "message": "Resource not found",
    "code": "ERR_RESOURCE_NOT_FOUND"
}
```
</details>



---


### Delete a procurement buy event

<strong><span class="method delete">DELETE</span> <code>/procurement-buy-event/:id</code></strong>

#### Path params
`id` → The ID of the procurement buy event to be deleted


#### Response
<details>
<summary>
<code>200</code> Procurement buy event successfully deleted
</summary>
    
> The contents of the deleted buy event

<a href="#ProcurementBuyEvent" class="model">
<div class="icon"></div>
<strong>Procurement Buy Event</strong>
</a>
</details>


<details>
<summary>
<code>404</code> Procurement buy event not found
</summary>
    
```json
{
    "error": true,
    "message": "Resource not found",
    "code": "ERR_RESOURCE_NOT_FOUND"
}
```
</details>


## Models


### ProcurementItem
```yaml
id: UUID
updated_at: Date
created_at: Date
deleted_at: Date
id_shopper: UUID
id_raw_product: UUID
id_quality_type: UUID
id_maturation_type: UUID
id_provider: UUID
total_units: Numeric
total_weight: Numeric
total_boxes: Numeric
total_units_in_stock: Numeric
total_weight_in_stock: Numeric
total_boxes_in_stock: Numeric
tags: JSONB
```

### ProcurementBuyEvent
```yaml
id: UUID
updated_at: Date
created_at: Date
deleted_at: Date | NULL
id_procurement_item: UUID
price: Number # In cents
units: Number
weight: Number
boxes: Number
```





