# Stock Lists

Stock Lists enable the mapping between a predefined stock list ID in Omnitron and the corresponding rule to be applied to that stock list. This association allows the utilization of rule sets created in Omnitron and OMS (Order Management System).

### List Stock Lists

This method is used to get a list of stock list objects.

`GET` **List-Stock-Lists**

**Path:** `/api/v1/stock-lists/`

**Parameters**

| Parameter  | Data Type | In     | Description                                |
| ---------- | --------- | ------ | ------------------------------------------ |
| api\_token | string    | header | The API key of the customer account        |
| limit      | string    | query  | The amount of line items returned per page |
| page       | string    | query  | The number of page returned                |

**Example Request**

```python
import requests

url = "http://localhost:8000/api/v1/stock-lists/"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

payload={}
headers = {
  'Accept': 'application/json',
  'Authorization': 'Token {}'.format(api_token),
}

response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
```

**Example Response (200 OK)**

The response includes the following parameters.

| Parameter         | Data Type | Description                       |
| ----------------- | --------- | --------------------------------- |
| id                | integer   | The primary key of the stock list |
| name              | string    | The name of the list              |
| code              | integer   | The code of the stock list        |
| remote\_id        | integer   | The remote ID                     |
| stock\_list\_rule | string    | The rule of the stock list        |
| created\_date     | date      | The creation date                 |
| modified\_date    | date      | The last modified date            |
| is\_active        | boolean   | The activation status of the rule |

```json
{
	"count": 3,
	"next": "https://{whippy_api_url}/api/v1/stock-lists/?page=2",
	"previous": null,
	"results": [
    	{
        	"id": 1,
        	"created_date": "2023-05-09T14:42:44.507114+03:00",
        	"modified_date": "2023-05-09T14:54:38.997168+03:00",
        	"is_active": true,
        	"code": "alpha_stock_list",
        	"name": "Alpha Stock List",
        	"remote_id": 1,
        	"stock_list_rule": 1
    	},
    	{
        	"id": 2,
        	"created_date": "2023-05-09T14:44:25.500852+03:00",
        	"modified_date": "2023-05-09T14:54:41.981423+03:00",
        	"is_active": true,
        	"code": "marketplace_stock_list",
        	"name": "Marketplace Stock List",
        	"remote_id": 2,
        	"stock_list_rule": 1
    	},
    	{
        	"id": 3,
        	"created_date": "2023-05-09T14:46:44.973248+03:00",
        	"modified_date": "2023-05-09T14:54:45.502269+03:00",
        	"is_active": true,
        	"code": "warehouse_stock_list",
        	"name": "Warehouse Stock List",
        	"remote_id": 3,
        	"stock_list_rule": 1
    	}
	]
}
```

### Stock List Instance

This method is used to get a list of stock instance.

`GET` **Stock-List-Instance**

**Path:** `/api/v1/stock-lists/{stocklist_id}/`

**Parameters**

| Parameter       | Data Type | In     | Description                                                                    |
| --------------- | --------- | ------ | ------------------------------------------------------------------------------ |
| api\_token      | string    | header | The API key of the customer account                                            |
| {stocklist\_id} | string    | query  | The ID of the stock list (also referred to as the stock list code in Omnitron) |

**Example Request**

```python
import requests

url = "http://localhost:8000/api/v1/stock-lists/1/"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

payload={}
headers = {
  'Accept': 'application/json',
  'Authorization': 'Token {}'.format(api_token)
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
```

**Example Response (200 OK)**

The response includes the following parameters.

| Parameter         | Data Type | Description                       |
| ----------------- | --------- | --------------------------------- |
| id                | integer   | The primary key of the stock list |
| name              | string    | The name of the list              |
| code              | integer   | The code of the stock list        |
| remote\_id        | integer   | The remote ID                     |
| stock\_list\_rule | string    | The rule of the stock list        |
| created\_date     | date      | The creation date                 |
| modified\_date    | date      | The last modified date            |
| is\_active        | boolean   | The activation status of the rule |

```json
{
	"id": 1,
	"created_date": "2023-05-09T14:42:44.507114+03:00",
	"modified_date": "2023-05-09T14:54:38.997168+03:00",
	"is_active": true,
	"code": "alpha_stock_list",
	"name": "Alpha Stock List",
	"remote_id": 1,
	"stock_list_rule": 1
}
```

### Create Stock List

This method is used to create a new stock list object.

`POST` **Create-Stock-List**

**Path:** `/api/v1/stock-lists/`

**Parameters**

| Parameter         | Data Type | In     | Required | Description                         |
| ----------------- | --------- | ------ | :------: | ----------------------------------- |
| api\_token        | string    | header |     ✓    | The API key of the customer account |
| code              | string    | body   |     ✓    | The code of the stock list          |
| name              | string    | body   |     ✓    | The name of the stock list          |
| remote\_id        | integer   | body   |     ✓    | The remote ID                       |
| stock\_list\_rule | integer   | body   |     ✓    | The rule of the stock list          |

**Example Request**

```python
import requests
import json

url = "https://{whippy_api_url}/api/v1/stock-lists/"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

payload = json.dumps({
  "code": "new_stock_list",
  "name": "Shop New Stock List",
  "remote_id": 5,
  "stock_list_rule": 1,
  "is_active": True
})
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Token {}'.format(api_token)
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
```

**Example Response (201 Created)**

The response includes the following parameters.

| Parameter         | Data Type | Description                               |
| ----------------- | --------- | ----------------------------------------- |
| id                | string    | The primary key of the created stock list |
| name              | string    | The name of the rule                      |
| code              | string    | The code of the stock list                |
| remote\_id        | integer   | The remote ID                             |
| stock\_list\_rule | integer   | The rule of the stock list                |
| created\_date     | date      | The creation date                         |
| modified\_date    | date      | The last modified date                    |
| is\_active        | boolean   | The activation status of the rule         |

```json
{
	"id": 4,
	"created_date": "2023-05-10T09:16:42.009484+03:00",
	"modified_date": "2023-05-10T09:16:42.009517+03:00",
	"is_active": true,
	"code": "new_stock_list",
	"name": "Shop New Stock List",
	"remote_id": 5,
	"stock_list_rule": 1
}
```

**Example Response (400 Bad Request)**

```json
{
   "code": [
       "This field is required."
   ],
   "name": [
       "This field is required."
   ],
   "remote_id": [
       "This field is required."
   ],
   "stock_list_rule": [
       "This field is required."
   ]
}
```

### Search Stock Lists

This method is used to search stock list object with the specified filters.

`GET` **Search-Stock-List**

**Path:** `stock-lists/?name=&lt;string>&is_active=&lt;string>&remote_id=&lt;number>&code=&lt;string>&code__contains=&lt;string>&created_date__gt=&lt;string>&created_date__gte=&lt;string>&created_date__lt=&lt;string>&created_date__lte=&lt;string>&created_date=&lt;string>&modified_date__gt=&lt;string>&modified_date__gte=&lt;string>&modified_date__lt=&lt;string>&modified_date__lte=&lt;string>&modified_date=&lt;string>&rule_name=&lt;string>&sort=&lt;string>&page=&lt;integer>&limit=&lt;integer>`

**Filters**

The following parameters can be used to filter GET request results.

| Parameter      | Data Type | In     | Description                                |
| -------------- | --------- | ------ | ------------------------------------------ |
| api\_token     | string    | header | The API key of the customer account        |
| name           | string    | query  | The name of the rule                       |
| code           | string    | query  | The code of the stock                      |
| remote\_id     | string    | query  | The remote ID                              |
| created\_date  | date      | query  | The creation date                          |
| modified\_date | date      | query  | The last modified date                     |
| is\_active     | boolean   | query  | The activation status of the rule          |
| limit          | string    | query  | The amount of line items returned per page |
| page           | integer   | query  | The number of page returned                |

**Example Request**

```python
import requests

url = "https://{whippy_api_url}/api/v1/stock-lists/?remote_id=4"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

payload={}
headers = {
  'Accept': 'application/json',
  'Authorization': 'Token {}'.format(api_token),
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
```

**Example Response (200 OK)**

The response includes the following parameters.

| Parameter         | Data Type | Description                         |
| ----------------- | --------- | ----------------------------------- |
| id                | string    | The primary key of the created list |
| name              | string    | The name of the rule                |
| code              | string    | The code of the stock list          |
| remote\_id        | integer   | The remote ID                       |
| stock\_list\_rule | integer   | The rule of the stock list          |
| created\_date     | date      | The creation date                   |
| modified\_date    | date      | The last modified date              |
| is\_active        | boolean   | The activation status of the rule   |

```json
{
	"count": 1,
	"next": "https://{whippy_api_url}/api/v1/stock-lists/?page=2&remote_id=1",
	"previous": null,
	"results": [
    	{
        	"id": 1,
        	"created_date": "2023-05-09T14:42:44.507114+03:00",
        	"modified_date": "2023-05-09T17:44:28.736384+03:00",
        	"is_active": true,
        	"code": "alpha_stock_list",
        	"name": "Alpha Stock List",
        	"remote_id": 4,
        	"stock_list_rule": 1
    	}
	]
}
```

### Stock List Partial Update

This method is used to partially update the specified stock list object with PATCH request.

`PATCH` **Stock-List-Partial-Update**

**Path:** `/api/v1/stock-lists/{stocklist_id}/`

**Parameters**

| Parameter       | Data Type | In     | Description                                                                    |
| --------------- | --------- | ------ | ------------------------------------------------------------------------------ |
| api\_token      | string    | header | The API key of the customer account                                            |
| {stocklist\_id} | string    | query  | The ID of the stock list (also referred to as the stock list code in Omnitron) |

**Example Request**

```python
import requests
import json
url = "http://localhost:8000/api/v1/stock-lists/1/"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

payload = json.dumps({
  "remote_id": 4
})
headers = {
  'Content-Type': 'application/json'
  'Authorization': 'Token {}'.format(api_token)
}
response = requests.request("PATCH", url, headers=headers, data=payload)
print(response.text)
```

**Example Response (200 OK)**

The response includes the following parameters.

| Parameter         | Data Type | Description                       |
| ----------------- | --------- | --------------------------------- |
| id                | integer   | The primary key of the stock list |
| name              | string    | The name of the stock list        |
| code              | integer   | The code of the stock list        |
| remote\_id        | integer   | The remote ID                     |
| stock\_list\_rule | integer   | The ID of the stock list rule     |
| created\_date     | date      | The creation date                 |
| modified\_date    | date      | The last modified date            |
| is\_active        | boolean   | The activation status of the rule |

```json
{
	"id": 1,
	"created_date": "2023-05-09T14:42:44.507114+03:00",
	"modified_date": "2023-05-09T17:28:05.664177+03:00",
	"is_active": true,
	"code": "alpha_stock_list",
	"name": "Alpha Stock List",
	"remote_id": 4,
	"stock_list_rule": 1
}
```

### Stock List Full Update

This method is used to update all fields of the specified stock list object with PUT request.

`PUT` **Stock-List**

**Path:** `/api/v1/stock-lists/{stocklist_id}/`

**Example Request**

```python
import requests
import json

url = "http://localhost:8000/api/v1/stock-lists/1/"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

payload = json.dumps({
  "is_active": True,
  "code": "alpha_stock_list",
  "name": "Alpha Stock List",
  "remote_id": 4,
  "stock_list_rule": 1
})
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Token {}'.format(api_token)
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)
```

**Example Response (200 OK)**

```json
{
	"id": 1,
	"created_date": "2023-05-09T14:42:44.507114+03:00",
	"modified_date": "2023-05-09T17:44:28.736384+03:00",
	"is_active": true,
	"code": "alpha_stock_list",
	"name": "Alpha Stock List",
	"remote_id": 4,
	"stock_list_rule": 1
}
```

**Example Response (400 Bad Request)**

```json
{
   "remote_id": [
       "This field is required."
   ],
   "code": [
       "This field is required."
   ],
   "name": [
       "This field is required."
   ],
   "stock_list_rule": [
       "This field is required."
   ]
}
```
