# Stock List Rules

Whippy Ware enables stock calculation based on stock locations and providers. In order to do this, the user needs to define a calculation rule which will work in the background of the application. The brand provides stock providers, stock locations, and location-based/independent safety stocks to be used for the preparation of a stock list. Stock list rules should be defined to do this. Rule types can be as follows;

### List Stock List Rules

This method is used to list objects of StockListRule model.

`GET` **List-Stock-List-Rules**

**Path:** `/api/v1/stock-list-rules/`

**Parameters**

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

**Example Request**

```py
import requests

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

headers = {
	'content-type': 'application/json',
	'Authorization': 'Token {}'.format(api_token)
	}

response = requests.get(url, headers=headers)
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                |
| rule\_type     | string     | The type of the rule                |
| rule           | dictionary | 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": 2,
	"next": "http://{whippy_api_url}/api/v1/stock-list-rules/?page=2",
	"previous": null,
	"results": [
    	{
        	"id": 1,
        	"created_date": "2023-05-05T15:54:53.689242+03:00",
        	"modified_date": "2023-05-05T15:54:53.691352+03:00",
        	"is_active": true,
        	"name": "Eshop Stock List Rule",
        	"rule": {},
        	"rule_type": "sql"
    	},
    	{
        	"id": 2,
        	"created_date": "2023-05-08T12:36:08.729480+03:00",
        	"modified_date": "2023-05-08T12:36:08.729561+03:00",
        	"is_active": true,
        	"name": "Webshop Stock List Rule",
        	"rule": {},
        	"rule_type": "sql"
    	}
	]
}
```

### Stock List Rule Instance

This method is used to get stock list rule instance specified with the Rule ID.

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

**Path:** `api/v1/stock-list-rules/{rule_id}/`

**Parameters**

|  Parameter | Data Type |   In   |             Description             |
| :--------: | :-------: | :----: | :---------------------------------: |
| api\_token |   string  | header | The API key of the customer account |
| {rule\_id} |   string  |  query |          The ID of the rule         |

**Example Request**

```py
import requests
url = "https://{whippy_api_url}/api/v1/stock-list-rules/{rule_id}"
api_token = "f532eXXXXXXXXXXXXXXXXX201XXXXX9332d"

headers = {
	'content-type': 'application/json',
	'Authorization': 'Token {}'.format(api_token)
	} 

response = requests.get(url, headers=headers)
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                |
| rule\_type     | string     | The type of the rule                |
| rule           | dictionary | 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": "2020-01-01T18:25:43.976080+03:00",
	"modified_date": "2020-01-01T18:25:43.976080+03:00",
	"is_active": true,
	"name": "Eshop Stock List Rule",
	"rule": {},
	"rule_type": "sql"
}
```

**Filters**

The applicable filters are as follows.

```json
"filters": {
    	"is_active": {
        	"type": "BooleanFilter",
        	"lookup_types": [
            	"exact"
        	]
    	},
    	"rule_type": {
        	"type": "ChoiceFilter",
        	"lookup_types": [
            	"exact"
        	]
    	},
    	"created_date": {
        	"type": "IsoDateTimeFilter",
        	"lookup_types": [
            	"gt",
            	"gte",
            	"lt",
            	"lte",
            	"exact"
        	]
    	},
    	"modified_date": {
        	"type": "IsoDateTimeFilter",
        	"lookup_types": [
            	"gt",
            	"gte",
            	"lt",
            	"lte",
            	"exact"
        	]
    	},
    	"name": {
        	"type": "CharFilter",
        	"lookup_types": [
            	"icontains"
        	]
    	}
	}
```

### Create Stock List Rule

This method is used to create a new stock list rule object based on the information in the request body.

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

**Path:** `/api/v1/stock-list-rules/`

**Example Request**

```py
import requests
import json

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

payload = json.dumps({
  "name": "Sales channel Stock List Rule",
  "rule_type": "sql",
  "is_active": True,
  "rule": {}
})
headers = {
  'content-type': '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 list |
| name           | string     | The name of the rule                |
| rule\_type     | string     | The type of the rule                |
| rule           | dictionary | 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": 3,
	"created_date": "2023-05-09T11:41:58.884366+03:00",
	"modified_date": "2023-05-09T11:41:58.885409+03:00",
	"is_active": true,
	"name": "Webshop Stock List Rule",
	"rule": {},
	"rule_type": "sql"
}
```

### Search Stock List Rules

This method is used to search stock list rules.

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

**Path:** `/api/v1/stock-list-rules/?name=&lt;string>&is_active=&lt;string>&rule_type=&lt;string>&sort=&lt;string>&page=&lt;integer>&limit=&lt;integer>`

**Parameters**

| Parameter  | Data Type | In     | Description                                |
| ---------- | --------- | ------ | ------------------------------------------ |
| api\_token | string    | header | The API key of the customer account        |
| name       | string    | query  | The name of the rule                       |
| rule\_type | string    | query  | The type of the rule                       |
| is\_active | boolean   | query  | The activation status of the rule          |
| limit      | integer   | query  | The amount of line items returned per page |
| page       | string    | query  | The number of page returned                |

**Example Request**

```py
import requests

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

params = {
  'rule_type': 'sql'
}

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

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

print(response.text)
```

**Example Response (200 OK)**

The list of stock list rule objects according to the filter parameters is returned.

```json
{
   "count": 2,
   "next": "http://{whippy_api_url}/api/v1/stock-list-rules/?page=2&rule_type=sql",
   "previous": null,
   "results": [
       {
           "id": 2,
           "created_date": "2023-05-08T12:36:08.729480+03:00",
           "modified_date": "2023-05-08T12:36:08.729561+03:00",
           "is_active": true,
           "name": "Webshop Stock List Rule",
           "rule": {},
           "rule_type": "sql"
       },
       {
           "id": 3,
           "created_date": "2023-05-09T11:41:58.884366+03:00",
           "modified_date": "2023-05-09T11:41:58.885409+03:00",
           "is_active": true,
           "name": "PetShop Stock List Rule",
           "rule": {},
           "rule_type": "sql"
       }
   ]
}
```

**Filters**

The following filters can be applied via the request URL.

```json
"filters": {
       "is_active": {
           "type": "BooleanFilter",
           "lookup_types": [
               "exact"
           ]
       },
       "rule_type": {
           "type": "ChoiceFilter",
           "lookup_types": [
               "exact"
           ]
       },
       "created_date": {
           "type": "IsoDateTimeFilter",
           "lookup_types": [
               "gt",
               "gte",
               "lt",
               "lte",
               "exact"
           ]
       },
       "modified_date": {
           "type": "IsoDateTimeFilter",
           "lookup_types": [
               "gt",
               "gte",
               "lt",
               "lte",
               "exact"
           ]
       },
       "name": {
           "type": "CharFilter",
           "lookup_types": [
               "icontains"
           ]
       }
   }
```

### Stock List Rule Partial Update

This method is used to partially update a stock-list-rule object.

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

**Path:** `/api/v1/stock-list-rules/{rule_id}/`

**Parameters**

| Parameter  | Data Type | In     | Description                         |
| ---------- | --------- | ------ | ----------------------------------- |
| api\_token | string    | header | The API key of the customer account |
| {rule\_id} | string    | query  | The stock list rule ID              |

**Example Request**

```py
import requests
import json

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

payload = json.dumps({
  "name": "PetShop Stock List Rule",
  "rule_type": "raw_sql"
})
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         | string     | The primary key of the created list |
| name       | string     | The name of the rule                |
| rule\_type | string     | The type of the rule                |
| rule       | dictionary | The rule of the stock list          |
| is\_active | boolean    | The activation status of the rule   |

### Stock List Rule Full Update

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

`PUT` **Stock-List-Rule-Full-Update**

**Path:** `/api/v1/stock-list-rules/{rule_id}/`

**Parameters**

| Parameter  | Data Type | In     | Description                         |
| ---------- | --------- | ------ | ----------------------------------- |
| api\_token | string    | header | The API key of the customer account |
| {rule\_id} | string    | query  | The stock list rule ID              |

**Example Request**

```py
{
	"name": "<string>",
	"rule_type": "<string>",
	"is_active": "<boolean>",
	"rule": "<object>"
}
```

**Example Response (200 OK)**

```json
{
	"id": 1,
	"created_date": "2023-05-09T11:41:58.884366+03:00",
	"modified_date": "2023-05-09T12:59:18.813081+03:00",
	"is_active": true,
	"name": "PetShop Stock List Rule",
	"rule": {},
	"rule_type": "raw_sql"
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://apidocs.akinon.com/omnitron/whippy-ware/stock-list-rules.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
