Base URL & Documentation
Table
| Resource | URL |
|---|---|
| Swagger UI | https://<PowerStore_MGMT_IP>/swaggerui |
| OpenAPI JSON | https://<PowerStore_MGMT_IP>/api/rest/openapi.json |
| REST API Base | https://<PowerStore_MGMT_IP>:443/api/rest/ |
The PowerStore REST API is API-first โ all functionality exposed externally is available through the API, and the GUI/CLI are consumers of it.
Authentication
Step 1: Login Session (Get Token)
bash
curl -k -s -X GET \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-u admin:YourPassword \
-c mycookie.txt \
-L https://10.20.30.40:443/api/rest/login_sessionResponse includes:
JSON
[{"id":"fd406a0e-a82c-46d6-b31b-5bfa31a543ef"}]Headers returned:
DELL-EMC-TOKEN: <token_value>โ Required for all subsequent requests- Session cookie (
mycookie.txt) โ Reuse for the session
Step 2: Use Token in Subsequent Calls
bash
curl -k -s -X GET \
-H "DELL-EMC-TOKEN: <your_token>" \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-b mycookie.txt \
-L https://10.20.30.40:443/api/rest/<endpoint>Common REST API Endpoints
System & Appliance
Table
| Operation | Method | Endpoint | Example |
|---|---|---|---|
| List Appliances | GET | /api/rest/appliance | ?select=* |
| List Nodes | GET | /api/rest/node | ?select=* |
| List Alerts | GET | /api/rest/alert | ?select=id,severity,resource_type |
| List Audit Events | GET | /api/rest/audit_event | ?select=* |
| List IP Pool Addresses | GET | /api/rest/ip_pool_address | ?select=* |
Volumes
Table
| Operation | Method | Endpoint | Body/Params |
|---|---|---|---|
| List Volumes | GET | /api/rest/volume | ?select=id,name,size,logical_used |
| Get Volume by ID | GET | /api/rest/volume/{id} | โ |
| Create Volume | POST | /api/rest/volume | {"name":"vol1","size":1073741824} |
| Modify Volume | PATCH | /api/rest/volume/{id} | {"name":"vol1_renamed"} |
| Delete Volume | DELETE | /api/rest/volume/{id} | โ |
Hosts
Table
| Operation | Method | Endpoint | Body/Params |
|---|---|---|---|
| List Hosts | GET | /api/rest/host | ?select=id,name,os_type |
| Create Host | POST | /api/rest/host | {"name":"host1","os_type":"Linux"} |
| Get Host | GET | /api/rest/host/{id} | โ |
| Delete Host | DELETE | /api/rest/host/{id} | โ |
Volume-Host Mapping
Table
| Operation | Method | Endpoint | Body |
|---|---|---|---|
| Map Volume to Host | POST | /api/rest/volume/{id}/attach | {"host_id":"host-uuid","logical_unit_number":99} |
| Unmap Volume | POST | /api/rest/volume/{id}/detach | {"host_id":"host-uuid"} |
Snapshots
Table
| Operation | Method | Endpoint | Body |
|---|---|---|---|
| List Snapshots | GET | /api/rest/volume/{id}/snapshot | โ |
| Create Snapshot | POST | /api/rest/volume/{id}/snapshot | {"name":"snap1"} |
| Delete Snapshot | DELETE | /api/rest/snapshot/{id} | โ |
| Restore from Snapshot | POST | /api/rest/snapshot/{id}/restore | โ |
Replication
Table
| Operation | Method | Endpoint | Body |
|---|---|---|---|
| List Replication Sessions | GET | /api/rest/replication_session | โ |
| Create Replication Rule | POST | /api/rest/replication_rule | {"name":"rule1","rpo":"One_Hour"} |
Metrics
Table
| Operation | Method | Endpoint | Body |
|---|---|---|---|
| Generate Performance Metrics | POST | /api/rest/metrics/generate | {"entity":"performance_metrics_by_appliance","entity_id":"A1","interval":"Twenty_Sec"} |
REST API Query Parameters
Table
| Parameter | Description | Example |
|---|---|---|
select | Choose fields to return | ?select=id,name,size or ?select=* |
order | Sort results | ?order=name or ?order=-name (desc) |
limit | Pagination (default 100) | ?limit=5 |
| Filters | 13 operators (gt, lt, eq, etc.) | ?resource_type=eq.volume |
Tip: By default, GET returns only
idfor collection queries. Useselect=*when exploring, then narrow down for production scripts.
REST API curl Examples
List All Volumes with Size & Used Space
bash
curl -k -s -X GET \
-H "DELL-EMC-TOKEN: <token>" \
-H "Accept: application/json" \
-b mycookie.txt \
"https://10.20.30.40/api/rest/volume?select=id,name,size,logical_used" | jqCreate a 1 GB Volume
bash
curl -k -s -X POST \
-H "DELL-EMC-TOKEN: <token>" \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-b mycookie.txt \
-d '{"name":"test_vol","size":1073741824}' \
https://10.20.30.40/api/rest/volumeMap Volume to Host (LUN 99)
bash
curl -k -s -X POST \
-H "DELL-EMC-TOKEN: <token>" \
-H "Content-type: application/json" \
-b mycookie.txt \
-d '{"host_id":"host-uuid","logical_unit_number":99}' \
https://10.20.30.40/api/rest/volume/{vol_id}/attachUnmap Volume from Host
bash
curl -k -s -X POST \
-H "DELL-EMC-TOKEN: <token>" \
-H "Content-type: application/json" \
-b mycookie.txt \
-d '{"host_id":"host-uuid"}' \
https://10.20.30.40/api/rest/volume/{vol_id}/detachDelete a Volume
bash
curl -k -s -X DELETE \
-H "DELL-EMC-TOKEN: <token>" \
-H "Accept: application/json" \
-b mycookie.txt \
https://10.20.30.40/api/rest/volume/{vol_id}Generate Performance Metrics
bash
curl -k -s -X POST \
-H "DELL-EMC-TOKEN: <token>" \
-H "Content-type: application/json" \
-b mycookie.txt \
-d '{"entity":"performance_metrics_by_appliance","entity_id":"A1","interval":"Twenty_Sec"}' \
https://10.20.30.40/api/rest/metrics/generateDell EMC PowerStore PSTCLI Reference
Installation & Connection
Download pstcli from Dell Support and install it on your Linux/Windows management host.
Basic Syntax
bash
pstcli [-d <address>] [-port <number>] [-u <user_name>] [-p <password>] [-ssl {interactive|reject|accept|store}] [-header] <object> <action> [<qualifiers>]Common Switches
Table
| Switch | Description |
|---|---|
-d <IP> | Destination PowerStore management IP |
-u <user> | Username |
-p <password> | Password |
-ssl accept | Auto-accept SSL certificate |
-ssl store | Accept and store certificate permanently |
-header | Display header in output |
-async | Perform operation asynchronously |
First Connection (Accept Certificate)
bash
pstcli -d 10.0.0.1 -u admin -p MyPassword456! -ssl interactiveSelect option
3to accept and store the certificate permanently. Future calls won’t prompt.
PSTCLI Object Types & Actions
Volume Operations
Table
| Action | Command | Example |
|---|---|---|
| List volumes | volume show | pstcli -d 10.0.0.1 -u admin -p Pass volume show |
| Create volume | volume create | pstcli -d 10.0.0.1 -u admin -p Pass volume create -name testvol -size 1073741824 |
| Get volume details | volume -id <id> show | pstcli -d 10.0.0.1 -u admin -p Pass volume -id 12345 show |
| Rename volume | volume set | pstcli -d 10.0.0.1 -u admin -p Pass volume -name oldvol set -name newvol |
| Expand volume | volume set | pstcli -d 10.0.0.1 -u admin -p Pass volume -id 12345 set -size 2147483648 |
| Delete volume | volume delete | pstcli -d 10.0.0.1 -u admin -p Pass volume -id 12345 delete |
| Map to host | volume attach | pstcli -d 10.0.0.1 -u admin -p Pass volume -name testvol attach -host_name host1 -lun 99 |
| Unmap from host | volume detach | pstcli -d 10.0.0.1 -u admin -p Pass volume -name testvol detach -host_name host1 |
Volume size must be a multiple of 8192 bytes. Maximum volume size is 256TB.
Host Operations
Table
| Action | Command | Example |
|---|---|---|
| List hosts | host show | pstcli -d 10.0.0.1 -u admin -p Pass host show |
| Create host | host create | pstcli -d 10.0.0.1 -u admin -p Pass host create -name host1 -os_type Linux |
| Delete host | host delete | pstcli -d 10.0.0.1 -u admin -p Pass host -name host1 delete |
Host Group Operations
Table
| Action | Command | Example |
|---|---|---|
| List host groups | host_group show | pstcli -d 10.0.0.1 -u admin -p Pass host_group show |
| Create host group | host_group create | pstcli -d 10.0.0.1 -u admin -p Pass host_group create -name hg1 |
| Add host to group | host_group set | pstcli -d 10.0.0.1 -u admin -p Pass host_group -name hg1 set -add_host host1 |
Snapshot Operations
Table
| Action | Command | Example |
|---|---|---|
| List snapshots | snapshot show | pstcli -d 10.0.0.1 -u admin -p Pass snapshot show |
| Create snapshot | snapshot create | pstcli -d 10.0.0.1 -u admin -p Pass snapshot create -volume_id 12345 -name snap1 |
| Delete snapshot | snapshot delete | pstcli -d 10.0.0.1 -u admin -p Pass snapshot -id snap-id delete |
| Restore snapshot | snapshot restore | pstcli -d 10.0.0.1 -u admin -p Pass snapshot -id snap-id restore |
Volume Group Operations
Table
| Action | Command | Example |
|---|---|---|
| List volume groups | volume_group show | pstcli -d 10.0.0.1 -u admin -p Pass volume_group show |
| Create volume group | volume_group create | pstcli -d 10.0.0.1 -u admin -p Pass volume_group create -name vg1 |
| Add volume to group | volume_group set | pstcli -d 10.0.0.1 -u admin -p Pass volume_group -name vg1 set -add_volume vol1 |
Replication Operations
Table
| Action | Command | Example |
|---|---|---|
| List replication sessions | replication_session show | pstcli -d 10.0.0.1 -u admin -p Pass replication_session show |
| Failover | replication_session failover | pstcli -d 10.0.0.1 -u admin -p Pass replication_session -id sess-id failover |
| Failback | replication_session failback | pstcli -d 10.0.0.1 -u admin -p Pass replication_session -id sess-id failback |
User Management
Table
| Action | Command | Example |
|---|---|---|
| List local users | local_user show | pstcli -d 10.0.0.1 -u admin -p Pass local_user show |
| Change password | local_user set | pstcli -d 10.0.0.1 -u admin -p Pass local_user -name operator set -password NewPass -current_password OldPass |
System & Monitoring
Table
| Action | Command | Example |
|---|---|---|
| List appliances | appliance show | pstcli -d 10.0.0.1 -u admin -p Pass appliance show |
| List nodes | node show | pstcli -d 10.0.0.1 -u admin -p Pass node show |
| List alerts | alert show | pstcli -d 10.0.0.1 -u admin -p Pass alert show |
| List hardware | hardware show | pstcli -d 10.0.0.1 -u admin -p Pass hardware show |
PSTCLI Complete Provisioning Workflow
1. Create a Volume
bash
pstcli -d 10.0.0.1 -u admin -p MyPassword456! -header volume create -name oracle_data -size 1073741824Output:
plain
PowerStore system: 10.0.0.1
Timezone: Eastern Daylight Time (UTC-04:00)
User: admin
Created
1: id = 123452. Map Volume to Host (LUN 99)
bash
pstcli -d 10.0.0.1 -u admin -p MyPassword456! volume -name oracle_data attach -host_name r730xd-2 -lun 993. Verify Mapping
bash
pstcli -d 10.0.0.1 -u admin -p MyPassword456! host -name r730xd-2 show4. Unmap Volume
bash
pstcli -d 10.0.0.1 -u admin -p MyPassword456! volume -name oracle_data detach -host_name r730xd-25. Delete Volume
bash
pstcli -d 10.0.0.1 -u admin -p MyPassword456! volume -name oracle_data deletePrerequisites before deleting: Volume must not be mapped to any host, not be a member of a volume group, not have an associated protection policy, and not have secure snapshots.
Getting Help in PSTCLI
bash
# General help
pstcli -?
# Help on a specific object
pstcli -d 10.0.0.1 -u admin -p Pass volume -?
# Help on a specific action
pstcli -d 10.0.0.1 -u admin -p Pass volume set -?
# Interactive session
pstcli -d 10.0.0.1 -u admin -p Pass -sessionUseful Tips
Table
| Tip | Command/Method |
|---|---|
| Avoid password prompts | export PSTPASS=YourPassword then use -p $PSTPASS |
| curl alias for headers | alias pstcurl='curl -k -s -H "Accept: application/json" -H "Content-type: application/json" -H "DELL-EMC-TOKEN: <token>" -b mycookie.txt' |
| Format JSON output | Pipe curl to jq or json_reformat |
| Explore all endpoints | Visit https://<IP>/swaggerui in a browser |
| API-first design | Every GUI/CLI action maps to a REST API call โ use browser DevTools or Swagger to discover endpoints |
