Search Knowledge Base by Keyword
Everpure
Overview
Pure Storage FlashArray is an all-flash block and file storage array. Each array runs the Purity//FA operating environment and presents a REST API on its management endpoint. The 2.x REST interface is token based: you hold a long-lived API token tied to a Purity user account, POST it to the login endpoint, and receive a short-lived session token that is then sent on every subsequent request. The collections underneath describe the array itself, its controllers and drives, the physical hardware tree, the volumes it serves and the host groups those volumes are presented to.
The ReadyWorks connector implements exactly that exchange. Both authentication methods post to an API token endpoint (the default is /api/2.26/login) with an api-token header, read the x-auth-token value out of the response headers, and replay it as x-auth-token on every data call. Each shipped job is a GET against a versioned resource path under /api/2.26/, and the JSON lands in a pure_get_* staging table.
In the estate this gives you the block storage layer. Array, controller, drive and hardware inventory carries the serial numbers and component detail needed for support entitlement and refresh planning. Volume and host-group data shows which hosts are presented which storage, so before you move, rebuild or retire a server you can see what it depends on and what else shares the same group. The alerts job gives a near real-time view of array health alongside the rest of the estate rather than only inside the Purity UI.
The connector is declared bidirectional and the outbound job form is enabled, but no outbound templates ship. As delivered it reads from FlashArray and writes nothing back.
NOTE: The connector id is PURE STORAGE and the help link, template names and staging tables all say Pure Storage, but the display name shown in the connector picker is Everpure and the description reads “Connect to the Everpure (formerly Pure Storage) FlashArray REST API”. Pure Storage has not been renamed to Everpure. Look for Everpure in the picker if you cannot find Pure Storage.
NOTE: Every template pins the REST version into the path as /api/2.26/. Confirm your Purity release serves that version before enabling jobs, and edit the API End Point on each job if it does not.
Connector Properties
| Property | Value |
|---|---|
| Identifier | PURE STORAGE |
| Name | Everpure |
| Description | Connect to the Everpure (formerly Pure Storage) FlashArray REST API |
| Job Types | Both Inbound and Outbound |
| Order | 160 |
| Enabled | Yes |
| Locked | Yes |
| Block Update | No |
| Single Authentication | No |
| Windows Only | No |
| Connector Version | 2025-11-18 |
| Hooks | None |
| Additional Job Fields | None |
| Image | ![]() |
Authentication Methods
Two authentication methods ship, both of them API token exchanges handled by the same driver. They differ only in where the API token comes from.
| Method | Identifier | Base Method | Script | Order | Enabled | Config Fields |
|---|---|---|---|---|---|---|
| API Token Header Authentication From Enumeration | PURE STORAGE_92efee2bcd |
PURE STORAGE_92efee2bcd |
json_rest_api.php |
30 | Yes | 3 |
| API Token Header Authentication | PURE STORAGE_token_head |
JSON Rest API_token_head |
json_rest_api.php |
30 | Yes | 6 |
NOTE: Both methods are flagged as the default and both sit at display order 30, so which one a new connection pre-selects is not determined by the metadata. Check which method is selected before saving a new connection.
NOTE: In both recipes the >GetHeader entry is a directive to the driver rather than a header sent to the array. It names the response header (x-auth-token) whose value is captured and then made available as %auth_data% on the data calls.
Method 1: API Token Header Authentication From Enumeration (PURE STORAGE_92efee2bcd)
API Token Header Authentication From Enumeration
A variant intended to take the array’s API token from an enumeration value at run time (%enum_auth_token%) rather than from a field stored on the connection, so that one connection could walk several arrays in turn. Nothing in the shipped metadata supplies that value: the method exposes no API Token field, and none of the nine templates configures an enumeration. Do not select this method unless you have built the enumeration that feeds it.
Connection Configuration Fields (3)
| Order | Label | Type | Required | Default | Max Len | Tooltip |
|---|---|---|---|---|---|---|
| 10 | Server Temporary Working Path | text | Yes | storage/etl5 |
255 | Enter path where temporary files are stored during data processing (exclude starting and ending backslash) |
| 10 | API Domain | text | Yes | 255 | Enter API domain of the Connection | |
| 190 | API Token Post End Point | text | No | 500 | Tooltip for Authentication End Point |
Authentication Configuration
Headers sent on the authentication call:
| Header | Value | Base64 |
|---|---|---|
Content-Type: |
application/json |
Off |
>GetHeader |
x-auth-token |
Off |
api-token: |
%enum_auth_token% |
Off |
Headers sent on the data calls:
| Header | Value | Base64 |
|---|---|---|
Content-Type: |
application/json |
Off |
x-auth-token: |
%auth_data% |
Off |
cURL options:
| Option | Authentication Call | Data Calls |
|---|---|---|
USERAGENT |
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 |
Same |
SSL_VERIFYHOST |
false |
Same |
SSL_VERIFYPEER |
false |
Same |
RETURNTRANSFER |
true |
Same |
FOLLOWLOCATION |
true |
Same |
FAILONERROR |
true |
Same |
POST |
true |
Same |
NOTE: This method sets the cURL POST option on the data calls as well as the authentication call, while every shipped template uses method type GET.
Method 2: API Token Header Authentication (PURE STORAGE_token_head)
API Token Header Authentication
The method to use. You store the FlashArray API token on the connection, and the connector posts it in an api-token header to the API Token Post End Point (default /api/2.26/login), captures the returned x-auth-token session token and sends that on every data call. Generate the API token against a dedicated Purity user with a read-only role. This method also exposes the Single Authentication switch, which controls whether the login is repeated on each pagination or enumeration loop.
Connection Configuration Fields (6)
| Order | Label | Type | Required | Default | Max Len | Tooltip |
|---|---|---|---|---|---|---|
| 10 | API Domain | text | Yes | 255 | Enter API domain of the Connection | |
| 30 | Server Temporary Working Path | text | Yes | storage/etl5 |
255 | Enter path where temporary files are stored during data processing (exclude starting and ending backslash) |
| 60 | API Token | password | No | 64000 | Enter API token of the Connection | |
| 190 | API Token Post End Point | text | No | /api/2.26/login |
500 | Enter API end point to request an auth-token |
| 240 | Single Authentication | radio | Yes | 0 |
Choose if authentication is only to be done once and not on each enumeration or pagination loop | |
| 250 | Additional Job Fields | fields_list | No | Enter list of additional fields to add to staging data for all jobs |
Authentication Configuration
Headers sent on the authentication call:
| Header | Value | Base64 |
|---|---|---|
Content-Type: |
application/json |
Off |
>GetHeader |
x-auth-token |
Off |
api-token: |
%auth_value_1% |
Off |
Headers sent on the data calls:
| Header | Value | Base64 |
|---|---|---|
Content-Type: |
application/json |
Off |
x-auth-token: |
%auth_data% |
Off |
cURL options:
| Option | Authentication Call | Data Calls |
|---|---|---|
USERAGENT |
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 |
Same |
SSL_VERIFYHOST |
false |
Same |
SSL_VERIFYPEER |
false |
Same |
RETURNTRANSFER |
true |
Same |
FOLLOWLOCATION |
true |
Same |
FAILONERROR |
true |
Same |
POST |
true |
Not set |
Inbound Job Fields Enabled (44)
The inbound job form exposes the standard REST job fields: endpoint, return data node, pagination, three levels of enumeration, and the staging table the response lands in.
| Order | Label | Type | Required | Default | Tooltip |
|---|---|---|---|---|---|
| 10 | Job Description | text | Yes | Enter description of the Job | |
| 20 | Job Schedule | lookup | Yes | Daily | Select frequency Job should run |
| 30 | Enabled | radio | Yes | Yes | Choose if Job is enabled |
| 40 | Use Unparsed Data | radio | No | No | Choose if you wish to parse the incoming data, or leave it in its raw format |
| 50 | Log Raw API Calls | radio | Yes | No | Choose if raw API calls are logged |
| 70 | Destination Table | text | Yes | Enter name of the destination table | |
| 80 | Data Identity | text | No | Enter identity of the Job | |
| 120 | Append New Data to Existing Tables | radio | No | No | Choose if new data will append to the existing destination table, or will create a new destination table |
| 130 | Fields to Index | text | No | Enter fields to index | |
| 170 | Method Type | select | Yes | GET |
Select method type of the Job |
| 190 | API End Point | text | No | Enter API end point of the Job | |
| 200 | API Data Parameters | fields_list | No | Enter API data parameters of the Job | |
| 210 | Body Data Sending Method | select | Yes | JSON Encoded Data | Select method for sending the body data |
| 220 | Raw JSON Body Data | textarea | No | Enter the raw JSON body to send. Do not use body selections in the API Parameters if this is used. | |
| 230 | API Return Data Node | text | No | Enter API return data node of the Job | |
| 250 | Pagination Type | select | No | None | Select request paging type of the Job |
| 270 | API Pagination Node | text | No | Enter API pagination node of the Job | |
| 280 | Pagination Offset Start | text | No | Enter request paging offset start of the Job | |
| 290 | Request Limit | text | No | Enter request limit of the Job | |
| 300 | Pagination Termination Node | text | No | Enter request paging termination node and value of the Job | |
| 310 | Maximum API Calls | text | No | Enter maximum number of API calls for the Job to make | |
| 320 | Enumeration 1 Type | select | No | None | Enter enumeration level 1 type |
| 330 | Enumeration 1 ETL Job | lookup | No | Select ETL job for the enumeration values | |
| 340 | Enumeration 1 Data Type | data_type | No | Select the data type and fields for enumeration 1 values | |
| 350 | Enumeration 1 Keys End Point | text | No | Enter enumeration 1 keys end point of the Job | |
| 360 | Enumeration 1 Node | text | No | Enter enumeration 1 node of the Job | |
| 370 | Enumeration 1 Fields | fields_list | No | Enter enumeration 1 fields of the Job | |
| 380 | Enumeration 2 Type | select | No | None | Enter enumeration level 2 type |
| 390 | Enumeration 2 ETL Job | lookup | No | Select ETL job for the enumeration 2 values | |
| 400 | Enumeration 2 Data Type | data_type | No | Select the data type and fields for enumeration 2 values | |
| 410 | Enumeration 2 Keys End Point | text | No | Enter enumeration 2 keys end point of the Job | |
| 420 | Enumeration 2 Node | text | No | Enter enumeration 2 node of the Job | |
| 430 | Enumeration 2 Fields | fields_list | No | Enter enumeration 2 fields of the Job | |
| 440 | Enumeration 3 Type | select | No | None | Enter enumeration level 3 type |
| 450 | Enumeration 3 ETL Job | lookup | No | Select ETL job for the enumeration 3 values | |
| 460 | Enumeration 3 Data Type | data_type | No | Select the data type and fields for enumeration 3 values | |
| 470 | Enumeration 3 Keys End Point | text | No | Enter enumeration 3 keys end point of the Job | |
| 480 | Enumeration 3 Node | text | No | Enter enumeration 3 node of the Job | |
| 490 | Enumeration 3 Fields | fields_list | No | Enter enumeration 3 fields of the Job | |
| 500 | Pause Enumeration | text | No | Enter values for pausing enumeration every X calls for Y seconds | |
| 510 | Kill Enumeration on Error | radio | No | No | Choose to stop the enumeration loop on an error or continue processing the loop |
| 520 | Additional Fields | fields_list | No | Enter list of additional fields to add to staging data | |
| 550 | Retry Pause | text | No | Enter values for retrying a failed API connection. Retry X times, waiting Y seconds between each try, with an API timeout of Z seconds. | |
| 560 | Order | text | Yes | Enter order of the Job |
Outbound Job Fields Enabled (13)
| Order | Label | Type | Required | Default | Tooltip |
|---|---|---|---|---|---|
| 10 | Job Description | text | Yes | Enter description of the Job | |
| 30 | Enabled | radio | Yes | Yes | Choose if Job is enabled |
| 50 | Log Raw API Calls | radio | Yes | No | Choose if raw API calls are logged |
| 170 | Method Type | select | Yes | GET |
Select method type of the Job |
| 180 | Data Sending Method | select | Yes | JSON Encoded Data | Select method for sending the outbound data |
| 190 | API End Point | text | No | Enter API end point of the Job | |
| 200 | API Data Parameters | fields_list | No | Enter API data parameters of the Job | |
| 210 | Body Data Sending Method | select | Yes | JSON Encoded Data | Select method for sending the body data |
| 260 | Return Data Fields List | fields_list | Yes | Enter return data fields of the Job | |
| 530 | Outbound Fields List | fields_list | Yes | Enter outbound fields of the Job | |
| 540 | Ignore Empty Outbound Fields | radio | No | Yes | Ignore, and do not include, any outbound fields that are empty and have no data |
| 550 | Raw JSON Outbound Template | textarea | No | Enter the raw JSON outbound template to send. This will replace any automated structures defined in the outbound fields. | |
| 560 | Order | text | Yes | Enter order of the Job |
Inbound Job Templates (9)
Nine inbound templates ship, eight of them mapped to FlashArray REST collections and one blank scaffold. Two are active by default (GET Pure Arrays hourly and GET Pure Alerts every five minutes); the rest ship disabled on a Daily schedule. None sets a return data node and none sets pagination.
| # | Job Description | Destination Table | API End Point | Enabled | What It Pulls |
|---|---|---|---|---|---|
| 1 | GET Pure Arrays | pure_get_arrays |
/api/2.26/arrays |
Yes | The array’s own record: array name and id, the Purity release it is running, model, total capacity and current space consumption. One row per array, and the anchor every other table joins back to. |
| 2 | GET Pure Alerts | pure_get_array_alerts |
/api/2.26/alerts |
Yes | Alerts raised by the array, with severity, the component that raised them, current state and the timestamps for when they opened and closed. Scheduled every five minutes so array health surfaces quickly. |
| 3 | GET Pure Controllers | pure_get_controllers |
/api/2.26/controllers |
No | The controllers in the array chassis, with model, the mode each is running in (primary or secondary), status and Purity version. Use it to confirm both controllers are healthy and on matching code before any maintenance. |
| 4 | GET Pure Drives | pure_get_drives |
/api/2.26/drives |
No | Every flash module and NVRAM device by bay position, with device type, capacity and status. This is the drive-level view behind the array’s capacity figures and the source for tracking individual module failures. |
| 5 | GET Pure Hardware | pure_get_hardware |
/api/2.26/hardware |
No | The physical component tree: chassis, expansion shelves, bays, ports, temperature and power components, each with its slot identifier and health. Broader than the drives job and the right place to look for a named physical component. |
| 6 | GET Pure Host Groups | pure_get_host_groups |
/api/2.26/host-groups |
No | Host groups, the named sets of hosts that volumes are presented to, with their membership and connection counts. This is the link between a server in the estate and the storage it is entitled to see. |
| 7 | GET Pure Port Initiators | pure_get_port_initiators |
/api/2.26/arrays |
No | Named for the array’s port and initiator relationships, but the endpoint configured on this template is /api/2.26/arrays, the same call GET Pure Arrays makes. As shipped it stages the array record into pure_get_port_initiators, not port or initiator data. |
| 8 | GET Pure Volumes | pure_get_volumes |
/api/2.26/volumes |
No | Every provisioned volume on the array, with name, serial, provisioned size, space actually consumed, and whether the volume has been destroyed and is pending eradication. |
| 9 | Pure Storage API Call | pure |
Not set |
No | A blank scaffold with no endpoint set, writing to a generic pure table. Copy it when you need a FlashArray collection that has no shipped template of its own. |
Job Template Configuration
Settings Common to All Nine Templates
| Setting | Value |
|---|---|
| Order | 10 |
| Allow Empty Table | Yes |
| Append Files to Same Destination Table | No |
| Use Unparsed Data | No |
| Convert UUID-Keyed Objects to Rows | No |
| Ignore XML Attributes | No |
| Log Raw API Calls | No |
| Method Type | GET |
| Body Data Sending Method | JSON Encoded Data |
Settings That Vary by Template
| Template | ID | Enabled | Job Schedule | Destination Table | Data Identity | API End Point | Append New Data to Existing Tables |
|---|---|---|---|---|---|---|---|
| GET Pure Arrays | 157 | Yes | Hourly (0 * * * *) | pure_get_arrays |
pure_get_arrays |
/api/2.26/arrays |
Yes |
| GET Pure Alerts | 158 | Yes | Every 5 Minutes (*/5 * * * *) | pure_get_array_alerts |
pure_get_array_alerts |
/api/2.26/alerts |
Yes |
| GET Pure Controllers | 159 | No | Daily (15 1 * * *) | pure_get_controllers |
pure_get_controllers |
/api/2.26/controllers |
Yes |
| GET Pure Drives | 160 | No | Daily (15 1 * * *) | pure_get_drives |
pure_get_drives |
/api/2.26/drives |
Yes |
| GET Pure Hardware | 161 | No | Daily (15 1 * * *) | pure_get_hardware |
pure_get_hardware |
/api/2.26/hardware |
Yes |
| GET Pure Host Groups | 162 | No | Daily (15 1 * * *) | pure_get_host_groups |
pure_get_host_groups |
/api/2.26/host-groups |
Yes |
| GET Pure Port Initiators | 163 | No | Daily (15 1 * * *) | pure_get_port_initiators |
pure_get_port_initiators |
/api/2.26/arrays |
Yes |
| GET Pure Volumes | 164 | No | Daily (15 1 * * *) | pure_get_volumes |
pure_get_volumes |
/api/2.26/volumes |
Yes |
| Pure Storage API Call | 165 | No | Daily (15 1 * * *) | pure |
pure |
Not set | No |
Job Parameters and Enumeration
GET Pure Arrays
Additional staging fields:
| Key | Value |
|---|---|
Array Name |
gso-e3-px90-p01 |
GET Pure Alerts
Additional staging fields:
| Key | Value |
|---|---|
Array Name |
gso-e3-px90-p01 |
GET Pure Controllers
Additional staging fields:
| Key | Value |
|---|---|
Array Name |
gso-e3-px90-p01 |
GET Pure Drives
Additional staging fields:
| Key | Value |
|---|---|
Array Name |
gso-e3-px90-p01 |
GET Pure Hardware
Additional staging fields:
| Key | Value |
|---|---|
Array Name |
gso-e3-px90-p01 |
GET Pure Host Groups
Additional staging fields:
| Key | Value |
|---|---|
Array Name |
gso-e3-px90-p01 |
GET Pure Port Initiators
Additional staging fields:
| Key | Value |
|---|---|
Array Name |
gso-e3-px90-p01 |
GET Pure Volumes
Additional staging fields:
| Key | Value |
|---|---|
Array Name |
gso-e3-px90-p01 |
NOTE: All eight resource templates carry an Additional Fields entry that stamps a literal Array Name of gso-e3-px90-p01 onto every staged row. That is a value left in the shipped metadata, not your array. Change or remove it on every job before you enable it.
Outbound Job Templates (0)
No outbound templates ship with this connector. The outbound job form is enabled, so you can author your own, but nothing is written back to the array by default.

