> For the complete documentation index, see [llms.txt](https://cortex-docs.paloaltonetworks.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cortex-docs.paloaltonetworks.com/xsiam-api/cortex-platform/iocs.md).

# IOCs

APIs for managing IOCs

## Insert Simple Indicators, CSV

> Upload IOCs in CSV format that you retrieved from external threat intelligence sources. \
> \
> Note: Cortex XDR does not scan historic data, but rather only new incoming data.\
> \
> Required license: \*\*Cortex XSIAM Premium\*\* or \*\*Cortex XSIAM Enterprise\*\* or \*\*Cortex XSIAM NG SIEM\*\*

```json
{"openapi":"3.0.0","info":{"title":"Cortex XSIAM Platform APIs","version":"Cortex XSIAM 3.6"},"tags":[{"name":"IOCs","description":"APIs for managing IOCs"}],"servers":[{"url":"https://api-yourfqdn"}],"paths":{"/public_api/v1/indicators/insert_csv":{"post":{"tags":["IOCs"],"summary":"Insert Simple Indicators, CSV","description":"Upload IOCs in CSV format that you retrieved from external threat intelligence sources. \n\nNote: Cortex XDR does not scan historic data, but rather only new incoming data.\n\nRequired license: **Cortex XSIAM Premium** or **Cortex XSIAM Enterprise** or **Cortex XSIAM NG SIEM**","operationId":"postInsertCsv","parameters":[{"name":"Authorization","in":"header","description":"{api_key}","required":true,"schema":{"type":"string"}},{"name":"x-xdr-auth-id","in":"header","description":"{api_key_id}","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"request_data":{"type":"string","description":"The body of this request contains a JSON object with a single field: `request_data`. This field is required. Its value is as string containing two or more comma-separated lines. The first line must contain the CSV header. All subsequent lines must represent IOC data. Each line must include at a minimum the required CSV fields, which are identified below. To help you validate the upload, you can send a separate validate field to view an array of errors with an unsuccessful call.\n\nFor the complete list of supported fields, see [Insert CSV Fields](https://app.gitbook.com/s/1ZrobAtcwfCDWAJAWeuj/cortex-platform/cortex-platform-papi-tables#insert-csv-fields)."},"validate":{"type":"boolean","description":"Indicates whether to return an array of errors in the case of an unsuccessful update indicator API request."}},"required":["request_data"]}}}},"responses":{"200":{"description":"SUCCESS","content":{"application/json":{"schema":{"type":"object","properties":{"reply":{"type":"object","properties":{"success":{"type":"boolean","description":"true=upload successful"},"validation_errors":{"type":"array","description":"Array of the following fields:\n- indicator: Name of the indicator that failed to upload.\n- error: Description of the error that caused the indicator to upload.","items":{"type":"object","properties":{"indicator":{"type":"string"},"error":{"type":"string"}}}}}}}}}}},"400":{"description":"Bad Request. Got an invalid JSON.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"401":{"description":"Unauthorized access. An issue occurred during authentication. This can indicate an incorrect key, id, or other invalid authentication parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"402":{"description":"Unauthorized access. User does not have the required license type to run this API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"403":{"description":"Forbidden access. The provided API Key does not have the required RBAC permissions to run this API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"500":{"description":"Internal server error. A unified status for API communication type errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}}}}}},"components":{"schemas":{"reply":{"type":"object","title":"reply","description":"The query result upon error.","properties":{"err_code":{"type":"string","description":"HTTP response code."},"err_msg":{"type":"string","description":"Error message."},"err_extra":{"type":"string","description":"Additional information describing the error."}}}}}}
```

## Insert Simple Indicators, JSON

> Upload IOCs as JSON objects that you retrieved from external threat intelligence sources.\
> \
> Note: Cortex XSIAM does not scan historic data, rather only new incoming data.\
> \
> Required license: \*\*Cortex XSIAM Premium\*\* or \*\*Cortex XSIAM Enterprise\*\* or \*\*Cortex XSIAM NG SIEM\*\*

```json
{"openapi":"3.0.0","info":{"title":"Cortex XSIAM Platform APIs","version":"Cortex XSIAM 3.6"},"tags":[{"name":"IOCs","description":"APIs for managing IOCs"}],"servers":[{"url":"https://api-yourfqdn"}],"paths":{"/public_api/v1/indicators/insert_jsons":{"post":{"tags":["IOCs"],"summary":"Insert Simple Indicators, JSON","description":"Upload IOCs as JSON objects that you retrieved from external threat intelligence sources.\n\nNote: Cortex XSIAM does not scan historic data, rather only new incoming data.\n\nRequired license: **Cortex XSIAM Premium** or **Cortex XSIAM Enterprise** or **Cortex XSIAM NG SIEM**","operationId":"postInsertJsons","parameters":[{"name":"Authorization","in":"header","description":"{api_key}","required":true,"schema":{"type":"string"}},{"name":"x-xdr-auth-id","in":"header","description":"{api_key_id}","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"The body of this request contains a JSON object with a single field: `request_data`. This field is required. Its value is an array of JSON objects, each element of which represents IOC data. Each object must include at a minimum the required fields, which are identified below.\n\nNote: Cortex XSIAM recommends you send the validate field in your request call to view the API validation errors. Without sending the validate field, the API may return a reply of 'true' without any information of why the IOC failed to upload.","content":{"application/json":{"schema":{"type":"object","properties":{"request_data":{"type":"array","items":{"type":"object","properties":{"indicator":{"type":"string","description":"String that identifies the indicator you want to insert into Cortex XDR."},"type":{"type":"string","enum":["HASH","IP","DOMAIN_NAME","FILENAME"],"description":"The type of indicator."},"severity":{"type":"string","enum":["LOW","MEDIUM","HIGH","CRITICAL","INFO"],"description":"The indicator's severity."},"expiration_date":{"type":"integer","description":"Integer representing the indicator's expiration timestamp. This is a Unix epoch timestamp value, in milliseconds. If this indicator has no expiration, use `Never`. If this value is `NULL`, the indicator\nreceives the indicator's type value with the default expirationdate. Valid values are:\n- 7 days\n- 30 days\n- 90 days\n- 180 days"},"comment":{"type":"string","description":"A descriptive comment."},"reputation":{"type":"string","enum":["GOOD","BAD","SUSPICIOUS","UNKNOWN","NO_REPUTATION"],"description":"Keyword representing the indicator's reputation."},"reliability":{"type":"string","enum":["A","B","C","D","E","F","G"],"description":"Character representing the indicator's reliability rating. Valid values are A - F. A is the most reliable, F is the least."},"vendors":{"type":"array","description":"A list of vendors including vendor name, reliability, and reputation.","items":{"type":"object","properties":{"vendor_name":{"type":"string","description":"Vendor name."},"reliability":{"type":"string","description":"Vendor reliability."},"reputation":{"type":"string","description":"Vendor reputation."}}}},"class":{"type":"string"}},"required":["indicator","type","severity"]}},"validate":{"type":"boolean","description":"Whether to return an array of errors in the case of an unsuccessful update indicator API request."}},"required":["request_data"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"reply":{"type":"object","description":"JSON object containing a query result.","properties":{"success":{"type":"boolean","description":"Indicates if any of the IOCs were upload successfully."},"validation_errors":{"type":"array","description":"Array of the IOCs that did not upload.","items":{"type":"object","properties":{"indicator":{"type":"string","description":"Name of the indicator that failed to upload."},"error":{"type":"string","description":"Description of the error that caused the indicator to fail upload."}}}}}}}}}}},"400":{"description":"Bad Request. Got an invalid JSON.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"401":{"description":"Unauthorized access. An issue occurred during authentication. This can indicate an incorrect key, id, or other invalid authentication parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"402":{"description":"Unauthorized access. User does not have the required license type to run this API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"403":{"description":"Forbidden access. The provided API Key does not have the required RBAC permissions to run this API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"500":{"description":"Internal server error. A unified status for API communication type errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}}}}}},"components":{"schemas":{"reply":{"type":"object","title":"reply","description":"The query result upon error.","properties":{"err_code":{"type":"string","description":"HTTP response code."},"err_msg":{"type":"string","description":"Error message."},"err_extra":{"type":"string","description":"Additional information describing the error."}}}}}}
```

## Get Indicators (IOCs)

> Get a list of IOCs. You can return all IOCs or filter results. You can also return extended results with all details included.> \
> \- The response is concatenated using AND condition (OR is not supported).> \
> \- The maximum result set size is >100.> \
> \- Offset is the zero-based number of incidents from the start of the result set.> \\
>
> \
> UI navigation: \*\*CORTEX\*\* > \*\*Threat Management\*\* > \*\*Detection Rules\*\* > \*\*IOC\*\*.> \\
>
> \
> You must have \*\*Rules Edit\*\* permissions to run this endpoint. <br>

```json
{"openapi":"3.0.0","info":{"title":"Cortex XSIAM Platform APIs","version":"Cortex XSIAM 3.6"},"tags":[{"name":"IOCs","description":"APIs for managing IOCs"}],"servers":[{"url":"https://api-yourfqdn"}],"paths":{"/public_api/v1/indicators/get":{"post":{"tags":["IOCs"],"summary":"Get Indicators (IOCs)","description":"Get a list of IOCs. You can return all IOCs or filter results. You can also return extended results with all details included.\r\n- The response is concatenated using AND condition (OR is not supported).\r\n- The maximum result set size is >100.\r\n- Offset is the zero-based number of incidents from the start of the result set.\r\n\r\nUI navigation: **CORTEX** > **Threat Management** > **Detection Rules** > **IOC**.\r\n\r\nYou must have **Rules Edit** permissions to run this endpoint.\r\n","parameters":[{"schema":{"type":"string"},"in":"header","name":"Authorization","description":"{api_key}","required":true},{"schema":{"type":"string"},"in":"header","name":"x-xdr-auth-id","description":"{api_key_id}","required":true}],"operationId":"post-public_api-v1-indicators-get","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["request_data"],"properties":{"request_data":{"type":"object","properties":{"extended_view":{"type":"boolean"},"filters":{"type":"array","description":"An array of filter fields.","items":{"type":"object","properties":{"field":{"type":"string","enum":["indicator","type","severity","expiration_date","default_expiration_enabled","comment","reputation","reliability"],"description":"Identifies the IOC field the filter is matching. Filters are based on the following keywords:\r\n- `indicator`: Indicator.\r\n- `type`: Indicator type.\r\n- `severity`: Indicator severity.\r\n- `expiration_date`: Expiration date in epoch milliseconds.\r\n- `default_expiration_enabled`: Whether the default expiration is enabled.\r\n- `comment`: Comment.\r\n- `reputation`: Reputation level.\r\n- `reliability`: Reliability level."},"operator":{"type":"string","enum":["EQ","NEQ","IN","GTE","LTE"],"description":"Identifies the comparison operator you want to use for this filter. Valid keywords are:\r\n`gte` / `lte`\r\n- `expiration_date`: Integer in timestamp epoch milliseconds\r\n`EQ` / `NEQ`\r\n- `indicator`: String\r\n- `type`: String\r\n- `severity`: String\r\n- `default_expiration_enabled`: Boolean\r\n- `comment`: String\r\n- `reputation`: String\r\n- `reliability`: String"},"value":{"oneOf":[{"type":"array","items":{}},{"type":"integer"},{"type":"string"},{"type":"boolean"}],"description":"Value that this filter must match. The contents of this field will differ depending on the IOC field that you specified for this filter:\r\n- `indicator`, `comment`: String.\r\n- `type`: String, can be one of the following: `hash`, `ip`, `path`, `domain_name`, `filename`, `mixed`.\r\n- `severity`: String, can be one of the following: `SEV_010_INFO`, `SEV_020_LOW`, `SEV_030_MEDIUM`, `SEV_040_HIGH`\r\n- `expiration_date`: Integer representing the number of milliseconds after the Unix epoch, UTC timezone.\r\n- `default_expiration_enabled`: Boolean value: `true` or `false`.\r\n- `comment`: String.\r\n- `reputation`: String, can be one of the following: `good`, `bad`, `suspicious`, `unknown`, `no_reputation`.\r\n- `reliability`: String, can be one of the following: `A`, `B`, `C`, `D`, `E`, `F`, `G`.","items":{}}}}},"search_from":{"type":"integer","description":"Integer representing the starting offset within the query result set from which you want indicators returned.\r\nIndicators are returned as a zero-based list. Any indicator indexed less than this value is not returned in the final result set and defaults to zero."},"search_to":{"type":"integer","description":"Integer representing the end offset within the result set after which you do not want indicators returned.\r\nIndicators in the indicator list that are indexed higher than this value are not returned in the final results set. Defaults to >100, which returns all indicators to the end of the list."}}}}}}},"required":false},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"objects_count":{"type":"integer"},"objects":{"type":"array","items":{"type":"object","properties":{"rule_id":{"type":"integer"},"indicator":{"type":"string"},"type":{"type":"string"},"severity":{"type":"string"},"expiration_date":{"type":"integer"},"comment":{"type":"string"}}}},"objects_type":{"type":"string"}}}}}},"400":{"description":"Bad Request. Got invalid JSON.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"401":{"description":"Unauthorized access. An issue occurred during authentication. This can indicate an incorrect key, id, or other invalid authentication parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"402":{"description":"Unauthorized access. User does not have the required license type to run this API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"403":{"description":"Forbidden access. The provided API Key does not have the required RBAC permissions to run this API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"500":{"description":"Internal server error. A unified status for API communication type errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}}}}}},"components":{"schemas":{"reply":{"type":"object","title":"reply","description":"The query result upon error.","properties":{"err_code":{"type":"string","description":"HTTP response code."},"err_msg":{"type":"string","description":"Error message."},"err_extra":{"type":"string","description":"Additional information describing the error."}}}}}}
```

## Insert or update IOCs

> Insert new IOCs or update existing IOCs.\
> \
> \*\*Note:\*\* The IOC \`rule\_id\` is tenant specific and can't be used across tenants. Inserting IOCs with the same \`rule\_id\` as an existing IOC on that tenant will overwrite the existing IOC.\
> \
> Requires the granular RBAC permission for this feature.

```json
{"openapi":"3.0.0","info":{"title":"Cortex XSIAM Platform APIs","version":"Cortex XSIAM 3.6"},"tags":[{"name":"IOCs","description":"APIs for managing IOCs"}],"servers":[{"url":"https://api-yourfqdn"}],"paths":{"/public_api/v1/indicators/insert":{"post":{"tags":["IOCs"],"summary":"Insert or update IOCs","description":"Insert new IOCs or update existing IOCs.\n\n**Note:** The IOC `rule_id` is tenant specific and can't be used across tenants. Inserting IOCs with the same `rule_id` as an existing IOC on that tenant will overwrite the existing IOC.\n\nRequires the granular RBAC permission for this feature.","parameters":[{"schema":{"type":"string"},"in":"header","name":"Authorization","description":"{api_key}","required":true},{"schema":{"type":"string"},"in":"header","name":"x-xdr-auth-id","description":"{api_key_id}","required":true}],"operationId":"post-public_api-v1-indicators-insert","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["request_data"],"properties":{"request_data":{"type":"array","items":{"type":"object","properties":{"rule_id":{"type":"number"},"indicator":{"type":"string"},"type":{"enum":["HASH","IP","PATH","DOMAIN_NAME","FILENAME","MIXED"]},"severity":{"enum":["SEV_010_INFO","SEV_020_LOW","SEV_030_MEDIUM","SEV_040_HIGH"]},"expiration_date":{"type":"integer"},"default_expiration_enabled":{"type":"boolean"},"comment":{"type":"string"},"reputation":{"enum":["GOOD","BAD","SUSPICIOUS","UNKNOWN","NO_REPUTATION"]},"reliability":{"enum":["A","B","C","D","E","F","G"]}}}}}}}},"required":false},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"added_objects":{"type":"array","description":"List of IOC objects added.","items":{"type":"object","properties":{"id":{"type":"integer"},"status":{"type":"string"}}}},"updated_objects":{"type":"array","description":"List of IOC objects updated.","items":{"type":"object","properties":{"id":{"type":"integer"},"status":{"type":"string"}}}},"errors":{"type":"array","description":"List of errors, if any.","items":{"type":"string"}}}}}}},"400":{"description":"Bad Request. Got invalid JSON.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"401":{"description":"Unauthorized access. An issue occurred during authentication. This can indicate an incorrect key, id, or other invalid authentication parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"402":{"description":"Unauthorized access. User does not have the required license type to run this API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"403":{"description":"Forbidden access. The provided API Key does not have the required RBAC permissions to run this API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"500":{"description":"Internal server error. A unified status for API communication type errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}}}}}},"components":{"schemas":{"reply":{"type":"object","title":"reply","description":"The query result upon error.","properties":{"err_code":{"type":"string","description":"HTTP response code."},"err_msg":{"type":"string","description":"Error message."},"err_extra":{"type":"string","description":"Additional information describing the error."}}}}}}
```

## Delete Indicators (IOCs)

> Delete IOCs selected by filter.\
> \
> Requires the granular RBAC permission for this feature.

```json
{"openapi":"3.0.0","info":{"title":"Cortex XSIAM Platform APIs","version":"Cortex XSIAM 3.6"},"tags":[{"name":"IOCs","description":"APIs for managing IOCs"}],"servers":[{"url":"https://api-yourfqdn"}],"paths":{"/public_api/v1/indicators/delete":{"post":{"tags":["IOCs"],"summary":"Delete Indicators (IOCs)","description":"Delete IOCs selected by filter.\n\nRequires the granular RBAC permission for this feature.","parameters":[{"schema":{"type":"string"},"in":"header","name":"Authorization","description":"{api_key}","required":true},{"schema":{"type":"string"},"in":"header","name":"x-xdr-auth-id","description":"{api_key_id}","required":true}],"operationId":"post-public_api-v1-indicators-delete","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["request_data"],"properties":{"request_data":{"type":"object","properties":{"filters":{"type":"array","description":"An array of filter fields.","items":{"type":"object","properties":{"field":{"enum":["indicator","type","severity","expiration_date","default_expiration_enabled","comment","reputation","reliability"],"description":"Identifies the IOC field the filter is matching. Filters are based on the following keywords:\r\n- `indicator`: Indicator.\r\n- `type`: Indicator type.\r\n- `severity`: Indicator severity.\r\n- `expiration_date`: Expiration date in epoch milliseconds.\r\n- `default_expiration_enabled`: Whether the default expiration is enabled.\r\n- `comment`: Comment.\r\n- `reputation`: Reputation level.\r\n- `reliability`: Reliability level."},"operator":{"type":"string","enum":["EQ","NEQ","IN","GTE","LTE"],"description":"Identifies the comparison operator you want to use for this filter. Valid keywords are:\r\n`gte` / `lte`\r\n- `expiration_date`: Integer in timestamp epoch milliseconds\r\n`EQ` / `NEQ`\r\n- `indicator`: String\r\n- `type`: String\r\n- `severity`: String\r\n- `default_expiration_enabled`: Boolean\r\n- `comment`: String\r\n- `reputation`: String\r\n- `reliability`: String"},"value":{"oneOf":[{"type":"integer"},{"type":"boolean"},{"type":"string"},{"type":"array","items":{}}],"description":"Value that this filter must match. The contents of this field will differ depending on the IOC field that you specified for this filter:\r\n- `indicator`, `comment`: String.\r\n- `type`: String, can be one of the following: `hash`, `ip`, `path`, `domain_name`, `filename`, `mixed`.\r\n- `severity`: String, can be one of the following: `SEV_010_INFO`, `SEV_020_LOW`, `SEV_030_MEDIUM`, `SEV_040_HIGH`\r\n- `expiration_date`: Integer representing the number of milliseconds after the Unix epoch, UTC timezone.\r\n- `default_expiration_enabled`: Boolean value: `true` or `false`.\r\n- `comment`: String.\r\n- `reputation`: String, can be one of the following: `good`, `bad`, `suspicious`, `unknown`, `no_reputation`.\r\n- `reliability`: String, can be one of the following: `A`, `B`, `C`, `D`, `E`, `F`, `G`.","items":{}}}}}}}}}}},"required":false},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"objects_count":{"type":"integer"},"objects":{"type":"array","items":{"type":"integer"}}}}}}},"400":{"description":"Bad Request. Got invalid JSON.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"401":{"description":"Unauthorized access. An issue occurred during authentication. This can indicate an incorrect key, id, or other invalid authentication parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"402":{"description":"Unauthorized access. User does not have the required license type to run this API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"403":{"description":"Forbidden access. The provided API Key does not have the required RBAC permissions to run this API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}},"500":{"description":"Internal server error. A unified status for API communication type errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/reply"}}}}}}}},"components":{"schemas":{"reply":{"type":"object","title":"reply","description":"The query result upon error.","properties":{"err_code":{"type":"string","description":"HTTP response code."},"err_msg":{"type":"string","description":"Error message."},"err_extra":{"type":"string","description":"Additional information describing the error."}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://cortex-docs.paloaltonetworks.com/xsiam-api/cortex-platform/iocs.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
