window.API = {
"sections": [
{
"name": "Consistency Groups",
"description": "Operations involving Consistency Groups.",
"methods": [
{
"uri": "/consistency_groups/suspend_cgs_for_snapshot_set",
"method": "POST",
"description": "Suspend consistency groups for a snapshot set.",
"parameters": [
{
"name": "snapsetid",
"type": "string",
"required": true,
"description": "The snapshot set id",
"example": "snapshot set id"
},
{
"name": "cg",
"type": "string",
"required": true,
"description": "The consistency group name",
"example": "cg name"
}
],
"response": "\n\n snapshot set id \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_set_name\": \"snapshot set id\",\n \"status\": 0\n }\n}"
},
{
"uri": "/consistency_groups/create_snapshot_set_and_resume",
"method": "POST",
"description": "Create a snapshot set and resumes.",
"parameters": [
{
"name": "snapsetid",
"type": "string",
"required": true,
"description": "The snapshot set id",
"example": "snapshot set id"
}
],
"response": "\n\n snapshot set id \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_set_name\": \"snapshot set id\",\n \"status\": 0\n }\n}"
},
{
"uri": "/consistency_groups/clone_snapshot_set",
"method": "POST",
"description": "Clone a snapshot set.",
"parameters": [
{
"name": "snapsetid",
"type": "string",
"required": true,
"description": "The snapshot set id",
"example": "snapshot set id"
}
],
"response": "\n\n snapshot set id \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_set_name\": \"snapshot set id\",\n \"status\": 0\n }\n}"
},
{
"uri": "/consistency_groups/delete_clone_of_snapshot_set",
"method": "POST",
"description": "Delete a clone of a snapshot set.",
"parameters": [
{
"name": "snapsetid",
"type": "string",
"required": true,
"description": "The snapshot set id",
"example": "snapshot set id"
}
],
"response": "\n\n snapshot set id \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_set_name\": \"snapshot set id\",\n \"status\": 0\n }\n}"
},
{
"uri": "/consistency_groups/delete_snapshot_set",
"method": "POST",
"description": "Delete a snapshot set.",
"parameters": [
{
"name": "snapsetid",
"type": "string",
"required": true,
"description": "The snapshot set id",
"example": "snapshot set id"
}
],
"response": "\n\n snapshot set id \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_set_name\": \"snapshot set id\",\n \"status\": 0\n }\n}"
},
{
"uri": "/consistency_groups/cancel_suspend_for_snapshot_set",
"method": "POST",
"description": "Cancel suspend for a snapshot set.",
"parameters": [
{
"name": "snapsetid",
"type": "string",
"required": true,
"description": "The snapshot set id",
"example": "snapshot set id"
}
],
"response": "\n\n snapshot set id \n 0 \n ",
"response_json": "{\n \"response\": {\n \"snapshot_set_name\": \"snapshot set id\",\n \"status\": 0\n }\n}"
}
]
},
{
"name": "Drives",
"description": "Operations involving Drives.",
"methods": [
{
"uri": "/drives",
"method": "GET",
"description": "Returns a list of all drives.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 4 \n \n \n volume-00002575 \n drive-000 \n SATA_465GB_7200RPM \n 50014EE057E2B026 \n ubuntu-sata-51 \n 0 \n \n Available \n Available \n 465 \n 1e881a0c-97f5-4e1c-8c48-0975e23b \n NO \n \n \n 2013-09-25 09:22:25 \n 2013-09-25 09:22:25 \n \n \n volume-00002576 \n drive-001 \n SATA_465GB_7200RPM \n 6000000000BC614E187D90340A867A8F \n ubuntu-sata-31 \n 0 \n \n Available \n Available \n 465 \n 1e881a0c-97f5-4e1c-8c48-0975e23b \n NO \n \n \n 2013-09-25 09:22:25 \n 2013-09-25 09:22:25 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"disks\": [\n {\n \"name\": \"volume-00002575\",\n \"display_name\": \"drive-000\",\n \"disk_type\": \"SATA_465GB_7200RPM\",\n \"disk_uuid\": \"50014EE057E2B026\",\n \"storage_node\": \"ubuntu-sata-51\",\n \"vpartition_id\": 0,\n \"raid_group_name\": null,\n \"usage\": \"Available\",\n \"status\": \"Available\",\n \"capacity\": 465,\n \"allocation_group\": \"1e881a0c-97f5-4e1c-8c48-0975e23b\",\n \"cache\": \"NO\",\n \"allocation_zone\": null,\n \"allocation_zone_display_name\": null,\n \"created_at\": \"2013-09-25 09:22:25 UTC\",\n \"modified_at\": \"2013-09-25 09:22:25 UTC\"\n },\n {\n \"name\": \"volume-00002576\",\n \"display_name\": \"drive-001\",\n \"disk_type\": \"SATA_465GB_7200RPM\",\n \"disk_uuid\": \"6000000000BC614E187D90340A867A8F\",\n \"storage_node\": \"ubuntu-sata-31\",\n \"vpartition_id\": 0,\n \"raid_group_name\": null,\n \"usage\": \"Available\",\n \"status\": \"Available\",\n \"capacity\": 465,\n \"allocation_group\": \"1e881a0c-97f5-4e1c-8c48-0975e23b\",\n \"cache\": \"NO\",\n \"allocation_zone\": null,\n \"allocation_zone_display_name\": null,\n \"created_at\": \"2013-09-25 09:22:25 UTC\",\n \"modified_at\": \"2013-09-25 09:22:25 UTC\"\n }\n ],\n \"count\": 4\n }\n}"
},
{
"uri": "/drives/{id}",
"method": "GET",
"description": "Returns the details for a single drive.",
"response": "\n\n 0 \n \n volume-00002575 \n drive-000 \n SATA_465GB_7200RPM \n 50014EE057E2B026 \n ubuntu-sata-51 \n 0 \n \n Available \n Available \n 465 \n 1e881a0c-97f5-4e1c-8c48-0975e23b \n NO \n \n \n 2013-09-25 09:22:25 \n 2013-09-25 09:22:25 \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"disk\": {\n \"name\": \"volume-00002575\",\n \"display_name\": \"drive-000\",\n \"disk_type\": \"SATA_465GB_7200RPM\",\n \"disk_uuid\": \"50014EE057E2B026\",\n \"storage_node\": \"ubuntu-sata-51\",\n \"vpartition_id\": 0,\n \"raid_group_name\": null,\n \"usage\": \"Available\",\n \"status\": \"Available\",\n \"capacity\": 465,\n \"allocation_group\": \"1e881a0c-97f5-4e1c-8c48-0975e23b\",\n \"cache\": \"NO\",\n \"allocation_zone\": null,\n \"allocation_zone_display_name\": null,\n \"created_at\": \"2013-09-25 09:22:25 UTC\",\n \"modified_at\": \"2013-09-25 09:22:25 UTC\"\n }\n }\n}"
},
{
"uri": "/drives/free",
"method": "GET",
"description": "Returns a list of free drives which are not part of any Raid Group.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 4 \n \n \n volume-00002575 \n drive-000 \n SATA_465GB_7200RPM \n 50014EE057E2B026 \n ubuntu-sata-51 \n 0 \n \n Available \n Available \n 465 \n 1e881a0c-97f5-4e1c-8c48-0975e23b \n NO \n 2013-09-25 09:22:25 \n 2013-09-25 09:22:25 \n \n \n volume-00002576 \n drive-001 \n SATA_465GB_7200RPM \n 6000000000BC614E187D90340A867A8F \n ubuntu-sata-31 \n 0 \n \n Available \n Available \n 465 \n 1e881a0c-97f5-4e1c-8c48-0975e23b \n NO \n 2013-09-25 09:22:25 \n 2013-09-25 09:22:25 \n \n \n volume-00002577 \n drive-002 \n SATA_465GB_7200RPM \n 6D4AE520B6107B00187D6EFA4CF102DA \n ubuntu-71 \n 0 \n \n Available \n Available \n 465 \n 1e881a0c-97f5-4e1c-8c48-0975e23b \n NO \n 2013-09-25 09:22:25 \n 2013-09-25 09:22:25 \n \n \n volume-00002578 \n drive-003 \n SATA_465GB_7200RPM \n 6782BCB033086100188691950EF698FF \n ubuntu-61 \n 0 \n \n Available \n Available \n 465 \n 1e881a0c-97f5-4e1c-8c48-0975e23b \n NO \n 2013-09-25 09:22:25 \n 2013-09-25 09:22:25 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"disks\": [\n {\n \"name\": \"volume-00002575\",\n \"display_name\": \"drive-000\",\n \"disk_type\": \"SATA_465GB_7200RPM\",\n \"disk_uuid\": \"50014EE057E2B026\",\n \"storage_node\": \"ubuntu-sata-51\",\n \"vpartition_id\": 0,\n \"raid_group_name\": null,\n \"usage\": \"Available\",\n \"status\": \"Available\",\n \"capacity\": 465,\n \"allocation_group\": \"1e881a0c-97f5-4e1c-8c48-0975e23b\",\n \"cache\": \"NO\",\n \"created_at\": \"2013-09-25 09:22:25 UTC\",\n \"modified_at\": \"2013-09-25 09:22:25 UTC\"\n },\n {\n \"name\": \"volume-00002576\",\n \"display_name\": \"drive-001\",\n \"disk_type\": \"SATA_465GB_7200RPM\",\n \"disk_uuid\": \"6000000000BC614E187D90340A867A8F\",\n \"storage_node\": \"ubuntu-sata-31\",\n \"vpartition_id\": 0,\n \"raid_group_name\": null,\n \"usage\": \"Available\",\n \"status\": \"Available\",\n \"capacity\": 465,\n \"allocation_group\": \"1e881a0c-97f5-4e1c-8c48-0975e23b\",\n \"cache\": \"NO\",\n \"created_at\": \"2013-09-25 09:22:25 UTC\",\n \"modified_at\": \"2013-09-25 09:22:25 UTC\"\n },\n {\n \"name\": \"volume-00002577\",\n \"display_name\": \"drive-002\",\n \"disk_type\": \"SATA_465GB_7200RPM\",\n \"disk_uuid\": \"6D4AE520B6107B00187D6EFA4CF102DA\",\n \"storage_node\": \"ubuntu-71\",\n \"vpartition_id\": 0,\n \"raid_group_name\": null,\n \"usage\": \"Available\",\n \"status\": \"Available\",\n \"capacity\": 465,\n \"allocation_group\": \"1e881a0c-97f5-4e1c-8c48-0975e23b\",\n \"cache\": \"NO\",\n \"created_at\": \"2013-09-25 09:22:25 UTC\",\n \"modified_at\": \"2013-09-25 09:22:25 UTC\"\n },\n {\n \"name\": \"volume-00002578\",\n \"display_name\": \"drive-003\",\n \"disk_type\": \"SATA_465GB_7200RPM\",\n \"disk_uuid\": \"6782BCB033086100188691950EF698FF\",\n \"storage_node\": \"ubuntu-61\",\n \"vpartition_id\": 0,\n \"raid_group_name\": null,\n \"usage\": \"Available\",\n \"status\": \"Available\",\n \"capacity\": 465,\n \"allocation_group\": \"1e881a0c-97f5-4e1c-8c48-0975e23b\",\n \"cache\": \"NO\",\n \"created_at\": \"2013-09-25 09:22:25 UTC\",\n \"modified_at\": \"2013-09-25 09:22:25 UTC\"\n }\n ],\n \"count\": 4\n }\n}"
},
{
"uri": "/drives/{id}/rename",
"method": "POST",
"description": "Rename a drive.",
"parameters": [
{
"name": "newname",
"type": "string",
"required": true,
"description": "The drive's new name",
"example": "new-drive-name"
}
],
"response": "\n\n volume-00002575 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"disk_name\": \"volume-00002575\",\n \"status\": 0\n }\n}"
},
{
"uri": "/drives/{id}/remove",
"method": "POST",
"description": "Remove a drive from the VPSA. Only drives which are not part of a Raid Group can be removed",
"response": "\n\n volume-00002575 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"disk_name\": \"volume-00002575\",\n \"status\": 0\n }\n}"
},
{
"uri": "/drives/{id}/replace",
"method": "POST",
"description": "Replace a drive in a Raid Group with a different free drive.",
"parameters": [
{
"name": "toname",
"description": "The ID of the replacement drive.",
"type": "string",
"required": true,
"example": "drive-001"
},
{
"name": "force",
"type": "string",
"options": "YES, NO",
"required": false
}
],
"response": "\n\n volume-00002578 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"disk_name\": \"volume-00002578\",\n \"status\": 0\n }\n}"
},
{
"uri": "/drives/{id}/shred",
"method": "POST",
"description": "Shred a drive. The operation can be done only on free drives which are not in a Raid Group. The data in the drive will be lost. This operation is irreversible.",
"parameters": [
{
"name": "force",
"type": "string",
"options": "YES, NO",
"required": false
}
],
"response": "\n\n volume-0000257b \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"disk_name\": \"volume-0000257b\",\n \"status\": 0\n }\n}"
},
{
"uri": "/drives/{id}/cancel_shred",
"method": "POST",
"description": "Cancel and abort the drive shredding process.",
"response": "\n\n volume-0000257b \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"disk_name\": \"volume-0000257b\",\n \"status\": 0\n }\n}"
},
{
"uri": "/drives/{id}/performance",
"method": "GET",
"description": "Returns the last 60 data points of performance data for the specified interval.",
"parameters": [
{
"name": "interval",
"type": "integer",
"description": "The interval between data points, in seconds.",
"example": 1
}
],
"response": "\n\n volume-00002c4e \n 0 \n 20 \n \n \n 0 \n 0.000000 \n 0.000000 \n 0 \n 0 \n 0.000000 \n 0.000000 \n 0 \n 1386984996 \n \n \n 0 \n 0.000000 \n 0.000000 \n 0 \n 0 \n 0.000000 \n 0.000000 \n 0 \n 1386984997 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"disk_name\": \"volume-00002c4e\",\n \"status\": 0,\n \"usages\": [\n {\n \"rd_iops\": 0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"point\": 1386984996\n },\n {\n \"rd_iops\": 0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"point\": 1386984997\n }\n ],\n \"count\": 20\n }\n}"
}
]
},
{
"name": "RAID Groups",
"description": "Operations involving RAID Groups.",
"methods": [
{
"uri": "/raid_groups",
"method": "GET",
"description": "Return a list of RAID Groups.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n RaidGroup-4 \n raid_group \n RAID1 \n 3 \n 0 \n 3 \n 462 \n 462 \n Normal \n NO \n 0 \n 0 \n 0 \n 0 \n 2013-09-25 23:12:26 \n 2013-09-25 23:12:26 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"raid_groups\": [\n {\n \"name\": \"RaidGroup-4\",\n \"display_name\": \"raid_group\",\n \"protection\": \"RAID1\",\n \"mirror_num\": 3,\n \"stripe_size\": 0,\n \"protection_width\": 3,\n \"capacity\": 462,\n \"available\": 462,\n \"status\": \"Normal\",\n \"ssd\": \"NO\",\n \"mismatch_count\": 0,\n \"resync_speed\": 0,\n \"min_resync_speed\": 0,\n \"max_resync_speed\": 0,\n \"created_at\": \"2013-09-25 23:12:26 UTC\",\n \"modified_at\": \"2013-09-25 23:12:26 UTC\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/raid_groups/{id}",
"method": "GET",
"description": "Return information for one RAID Group.",
"response": "\n\n 10009 \n 'SSD' \n \n",
"response_json": "{\n \"response\": {\n \"status\": 10009,\n \"message\": \"'SSD'\"\n }\n}"
},
{
"uri": "/raid_groups/free",
"method": "GET",
"description": "Return a list of free RAID Groups which are not part of any Pool.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n RaidGroup-4 \n raid_group \n RAID1 \n 3 \n 0 \n 3 \n 462 \n 462 \n Normal \n NO \n 0 \n 0 \n 0 \n 0 \n 2013-09-25 23:12:26 \n 2013-09-25 23:12:26 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"raid_groups\": [\n {\n \"name\": \"RaidGroup-4\",\n \"display_name\": \"raid_group\",\n \"protection\": \"RAID1\",\n \"mirror_num\": 3,\n \"stripe_size\": 0,\n \"protection_width\": 3,\n \"capacity\": 462,\n \"available\": 462,\n \"status\": \"Normal\",\n \"ssd\": \"NO\",\n \"mismatch_count\": 0,\n \"resync_speed\": 0,\n \"min_resync_speed\": 0,\n \"max_resync_speed\": 0,\n \"created_at\": \"2013-09-25 23:12:26 UTC\",\n \"modified_at\": \"2013-09-25 23:12:26 UTC\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/raid_groups",
"method": "POST",
"description": "Create a RAID Group.\nOperation will fail if drives are not from the same capacity (override with force option)\n",
"parameters": [
{
"name": "display_name",
"type": "string",
"required": true,
"description": "The RAID group display name",
"example": "my-raid-group"
},
{
"name": "protection",
"type": "string",
"required": true,
"options": "RAID1, RAID6",
"example": "RAID1",
"description": "protection type"
},
{
"name": "disk",
"type": "string",
"required": true,
"example": "volume-000002fe,volume-000002ff",
"description": "A comma-separated list of Drive IDs."
},
{
"name": "protection_width",
"type": "integer",
"description": "Number of drives in the RAID protection, not including hot spare."
},
{
"name": "stripe_size",
"type": "integer",
"description": "Size of the stripe per Disk. Required for RAID6."
},
{
"name": "hot_spare",
"type": "string",
"options": "YES, NO"
},
{
"name": "force",
"type": "string",
"options": "YES, NO"
}
],
"response": "\n\n RaidGroup-4 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"raidgroup_name\": \"RaidGroup-4\",\n \"status\": 0\n }\n}"
},
{
"uri": "/raid_groups/{id}",
"method": "DELETE",
"description": "Delete a RAID Group. The RAID Group must be part of any Pool.",
"response": "\n\n RaidGroup-4 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"raidgroup_name\": \"RaidGroup-4\",\n \"status\": 0\n }\n}"
},
{
"uri": "/raid_groups/{id}/disks",
"method": "GET",
"description": "Return the list of drives in a RAID Group.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 3 \n \n \n volume-00002576 \n drive-001 \n SATA_465GB_7200RPM \n 6000000000BC614E187D90340A867A8F \n ubuntu-sata-31 \n 4 \n RaidGroup-4 \n In-use \n Normal \n 465 \n 1e881a0c-97f5-4e1c-8c48-0975e23b \n NO \n 2013-09-25 09:22:25 \n 2013-09-25 23:12:27 \n \n \n volume-00002577 \n drive-002 \n SATA_465GB_7200RPM \n 6D4AE520B6107B00187D6EFA4CF102DA \n ubuntu-71 \n 4 \n RaidGroup-4 \n In-use \n Normal \n 465 \n 1e881a0c-97f5-4e1c-8c48-0975e23b \n NO \n 2013-09-25 09:22:25 \n 2013-09-25 23:12:27 \n \n \n volume-0000257b \n drive-006 \n SATA_465GB_7200RPM \n 50014EE057E2B026 \n ubuntu-sata-51 \n 4 \n RaidGroup-4 \n In-use \n Rebuild \n 465 \n 30a32989-5522-4c77-bdb0-caf2c760 \n NO \n 2013-09-25 11:24:25 \n 2013-09-25 23:30:56 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"disks\": [\n {\n \"name\": \"volume-00002576\",\n \"display_name\": \"drive-001\",\n \"disk_type\": \"SATA_465GB_7200RPM\",\n \"disk_uuid\": \"6000000000BC614E187D90340A867A8F\",\n \"storage_node\": \"ubuntu-sata-31\",\n \"vpartition_id\": 4,\n \"raid_group_name\": \"RaidGroup-4\",\n \"usage\": \"In-use\",\n \"status\": \"Normal\",\n \"capacity\": 465,\n \"allocation_group\": \"1e881a0c-97f5-4e1c-8c48-0975e23b\",\n \"cache\": \"NO\",\n \"created_at\": \"2013-09-25 09:22:25 UTC\",\n \"modified_at\": \"2013-09-25 23:12:27 UTC\"\n },\n {\n \"name\": \"volume-00002577\",\n \"display_name\": \"drive-002\",\n \"disk_type\": \"SATA_465GB_7200RPM\",\n \"disk_uuid\": \"6D4AE520B6107B00187D6EFA4CF102DA\",\n \"storage_node\": \"ubuntu-71\",\n \"vpartition_id\": 4,\n \"raid_group_name\": \"RaidGroup-4\",\n \"usage\": \"In-use\",\n \"status\": \"Normal\",\n \"capacity\": 465,\n \"allocation_group\": \"1e881a0c-97f5-4e1c-8c48-0975e23b\",\n \"cache\": \"NO\",\n \"created_at\": \"2013-09-25 09:22:25 UTC\",\n \"modified_at\": \"2013-09-25 23:12:27 UTC\"\n },\n {\n \"name\": \"volume-0000257b\",\n \"display_name\": \"drive-006\",\n \"disk_type\": \"SATA_465GB_7200RPM\",\n \"disk_uuid\": \"50014EE057E2B026\",\n \"storage_node\": \"ubuntu-sata-51\",\n \"vpartition_id\": 4,\n \"raid_group_name\": \"RaidGroup-4\",\n \"usage\": \"In-use\",\n \"status\": \"Rebuild\",\n \"capacity\": 465,\n \"allocation_group\": \"30a32989-5522-4c77-bdb0-caf2c760\",\n \"cache\": \"NO\",\n \"created_at\": \"2013-09-25 11:24:25 UTC\",\n \"modified_at\": \"2013-09-25 23:30:56 UTC\"\n }\n ],\n \"count\": 3\n }\n}"
},
{
"uri": "/raid_groups/{id}/rename",
"method": "POST",
"description": "Update a RAID Group's name.",
"parameters": [
{
"name": "newname",
"type": "string",
"description": "Raid group new name",
"required": true,
"example": "new-raid-group-name"
}
],
"response": "\n\n RaidGroup-4 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"raidgroup_name\": \"RaidGroup-4\",\n \"status\": 0\n }\n}"
},
{
"uri": "/raid_groups/{id}/resync_speed",
"method": "POST",
"description": "Update a RAID Group's resync speed.",
"parameters": [
{
"name": "min",
"description": "Minimum speed in MB per second. Resync is done at minimum speed while there are Server IOs",
"type": "integer",
"required": true,
"example": 10
},
{
"name": "max",
"description": "Maximum speed in MB per second. Resync is done at maximum speed when there are no Server IOs",
"type": "integer",
"required": true,
"example": 100
}
],
"response": "\n\n RaidGroup-4 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"raidgroup_name\": \"RaidGroup-4\",\n \"status\": 0\n }\n}"
},
{
"uri": "/raid_groups/{id}/scrub",
"method": "POST",
"description": "Trigger a Media Scan of the RAID Group. Parity inconsistency will be fixed. The result of the process will be logged in the VPSA Event-Log.",
"response": "\n\n RaidGroup-4 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"raidgroup_name\": \"RaidGroup-4\",\n \"status\": 0\n }\n}"
},
{
"uri": "/raid_groups/{id}/pause_scrub",
"method": "POST",
"description": "Pause the Media Scan of a RAID Group.",
"response": "\n\n RaidGroup-4 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"raidgroup_name\": \"RaidGroup-4\",\n \"status\": 0\n }\n}"
},
{
"uri": "/raid_groups/{id}/hot_spares",
"method": "POST",
"description": "Add a hot spare to a RAID Group.",
"parameters": [
{
"name": "disk",
"description": "ID of the Drive to add as a Hot Spare.",
"required": true,
"type": "string",
"example": "drive-002"
},
{
"name": "force",
"type": "string",
"options": "YES, NO",
"required": false
}
],
"response": "\n\n RaidGroup-4 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"raidgroup_name\": \"RaidGroup-4\",\n \"status\": 0\n }\n}"
},
{
"uri": "/raid_groups/{id}/hot_spares/remove",
"method": "POST",
"description": "Remove the hot spare from a RAID Group.",
"response": "\n\n RaidGroup-4 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"raidgroup_name\": \"RaidGroup-4\",\n \"status\": 0\n }\n}"
},
{
"uri": "/raid_groups/{id}/performance",
"method": "GET",
"description": "Returns the last 60 data points of performance data for the specified interval.",
"parameters": [
{
"name": "interval",
"type": "integer",
"example": 1,
"description": "The interval between data points, in seconds."
}
],
"response": "\n\n RaidGroup-4 \n 0 \n 20 \n \n \n 0 \n 0.000000 \n 0.000000 \n 0 \n 0 \n 0.000000 \n 0.000000 \n 0 \n 1386985241 \n \n \n 0 \n 0.000000 \n 0.000000 \n 0 \n 0 \n 0.000000 \n 0.000000 \n 0 \n 1386985242 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"raid_group_name\": \"RaidGroup-4\",\n \"status\": 0,\n \"usages\": [\n {\n \"rd_iops\": 0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"point\": 1386985241\n },\n {\n \"rd_iops\": 0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"point\": 1386985242\n }\n ],\n \"count\": 20\n }\n}"
}
]
},
{
"name": "Pools",
"description": "Operations involving Pools.",
"methods": [
{
"uri": "/pools",
"method": "GET",
"description": "Show all Pools.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n pool-00000001 \n poolrenamed \n normal \n 462 \n 451.875 \n 2 \n \n \n \n raid_group_renamed \n simple \n 64 \n NO \n NO \n normal \n 10 \n 360 \n 60 \n 100 \n 256 \n OLTP \n 2013-09-25 23:53:52 \n 2013-09-26 00:05:16 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"pools\": [\n {\n \"name\": \"pool-00000001\",\n \"display_name\": \"poolrenamed\",\n \"status\": \"normal\",\n \"capacity\": 462,\n \"available_capacity\": 451.875,\n \"version\": 2,\n \"data_type\": null,\n \"mount_sync\": null,\n \"access_time_update\": null,\n \"raid_group_name\": \"raid_group_renamed\",\n \"mode\": \"simple\",\n \"stripe_size\": 64,\n \"cache\": \"NO\",\n \"cow_cache\": \"NO\",\n \"capacity_mode\": \"normal\",\n \"capacity_history\": 10,\n \"alert_mode\": 360,\n \"protected_mode\": 60,\n \"emergency_mode\": 100,\n \"chunk_size\": 256,\n \"type\": \"OLTP\",\n \"created_at\": \"2013-09-25 23:53:52 UTC\",\n \"modified_at\": \"2013-09-26 00:05:16 UTC\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/pools/{id}",
"method": "GET",
"description": "Show one Pool details.",
"response": "\n\n 0 \n \n pool-00000001 \n poolrenamed \n normal \n 462 \n 451.875 \n 2 \n \n \n \n raid_group_renamed \n simple \n 64 \n NO \n NO \n normal \n 10 \n 360 \n 60 \n 100 \n 256 \n OLTP \n 2013-09-25 23:53:52 \n 2013-09-26 00:05:16 \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"pool\": {\n \"name\": \"pool-00000001\",\n \"display_name\": \"poolrenamed\",\n \"status\": \"normal\",\n \"capacity\": 462,\n \"available_capacity\": 451.875,\n \"version\": 2,\n \"data_type\": null,\n \"mount_sync\": null,\n \"access_time_update\": null,\n \"raid_group_name\": \"raid_group_renamed\",\n \"mode\": \"simple\",\n \"stripe_size\": 64,\n \"cache\": \"NO\",\n \"cow_cache\": \"NO\",\n \"capacity_mode\": \"normal\",\n \"capacity_history\": 10,\n \"alert_mode\": 360,\n \"protected_mode\": 60,\n \"emergency_mode\": 100,\n \"chunk_size\": 256,\n \"type\": \"OLTP\",\n \"created_at\": \"2013-09-25 23:53:52 UTC\",\n \"modified_at\": \"2013-09-26 00:05:16 UTC\"\n }\n }\n}"
},
{
"uri": "/pools",
"method": "POST",
"description": "Create a Pool.",
"parameters": [
{
"name": "display_name",
"type": "string",
"required": true,
"description": "The new pool display name",
"example": "new-pool"
},
{
"name": "capacity",
"type": "string",
"required": true,
"productType": "hybrid",
"description": "The new pool capacity followed by the letter G",
"example": "30G"
},
{
"name": "cache",
"type": "string",
"options": "YES, NO",
"required": false,
"productType": "hybrid",
"default": false,
"description": "Indicate whether the Pool will utilize the VPSA SSD cache. All Pools marked YES share the same cache capacity."
},
{
"name": "cowcache",
"type": "boolean",
"productType": "hybrid",
"required": false,
"default": true,
"description": "Indicate whether snapshot Copy-On-Write operations are Cached. Default: YES"
},
{
"name": "mode",
"type": "string",
"options": "stripe, simple",
"default": "simple",
"required": false,
"productType": "hybrid",
"description": "Indicate whether RAID groups are concatinated or striped inside the Pool."
},
{
"name": "raid_groups",
"type": "string",
"required": true,
"description": "Comma separated list of RAID Group IDs.",
"example": "raid-00000001"
},
{
"name": "pooltype",
"type": "string",
"ignoreOptionsSeperator": 1,
"options": "VPSA Storage Array Repository Storage, Transactional Workloads, Archival Storage, Depot Storage VPSA Flash Array IOPs-Optimized, Balanced, Throughput-Optimized",
"description": "The new pool type",
"example": "Repository Storage"
}
],
"response": "\n\n pool-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"pool_name\": \"pool-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/pools/{id}",
"method": "DELETE",
"description": "Delete a Pool. The Pool must be empty.",
"response": "\n\n pool-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"pool_name\": \"pool-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/pools/{id}/rename",
"method": "POST",
"description": "Rename a Pool.",
"parameters": [
{
"name": "new_name",
"type": "string",
"required": true,
"description": "The pool new name",
"example": "new-pool-name"
}
],
"response": "\n\n pool-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"pool_name\": \"pool-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/pools/{id}/raid_groups",
"method": "GET",
"description": "Return the list of RAID Groups in a Pool.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n RaidGroup-4 \n raid_group_renamed \n RAID1 \n 3 \n 0 \n 3 \n 462 \n 0 \n Recovering 37% \n NO \n 0 \n 74 \n 28 \n 75 \n 2013-09-25 23:12:26 \n 2013-09-25 23:12:26 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"raid_groups\": [\n {\n \"name\": \"RaidGroup-4\",\n \"display_name\": \"raid_group_renamed\",\n \"protection\": \"RAID1\",\n \"mirror_num\": 3,\n \"stripe_size\": 0,\n \"protection_width\": 3,\n \"capacity\": 462,\n \"available\": 0,\n \"status\": \"Recovering 37%\",\n \"ssd\": \"NO\",\n \"mismatch_count\": 0,\n \"resync_speed\": 74,\n \"min_resync_speed\": 28,\n \"max_resync_speed\": 75,\n \"created_at\": \"2013-09-25 23:12:26 UTC\",\n \"modified_at\": \"2013-09-25 23:12:26 UTC\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/pools/{id}/volumes",
"method": "GET",
"description": "Return the list of Volumes in a Pool.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 5 \n \n \n volume-00000004 \n Example_Volume \n Example_Volume \n cg-0000003c \n NO \n Pool_0 \n pool-00000002 \n In-use \n 600 \n Multiple(2) \n File-System \n NO \n NO \n 0 \n 570.895507812 \n 14.6979980469 \n NFS \n NO \n 172.31.224.103:/export/Example_Volume \n \\\\172.31.224.103\\Example_Volume \n YES \n NO \n 512 \n NO \n NO \n NO \n NO \n NO \n NO \n YES \n 0744 \n 0755 \n 1 \n YES \n \n off \n NO \n NO \n NO \n NO \n YES \n 60 \n 360 \n off \n off \n off \n \n \n \n 11 \n NO \n NO \n YES \n NO \n NO \n 0 \n 0 \n 0 \n 0 \n \n \n srv-00000001,srv-00000002 \n 2018-02-23T22:54:25+0000 \n 2018-10-27T02:45:20+0000 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"volumes\": [\n {\n \"name\": \"volume-00000004\",\n \"display_name\": \"Example_Volume\",\n \"cg_display_name\": \"Example_Volume\",\n \"cg_name\": \"cg-0000003c\",\n \"cg_user_created\": \"NO\",\n \"pool_display_name\": \"Pool_0\",\n \"pool_name\": \"pool-00000002\",\n \"status\": \"In-use \",\n \"virtual_capacity\": 600,\n \"server_name\": \"Multiple(2)\",\n \"data_type\": \"File-System\",\n \"thin\": \"NO\",\n \"encryption\": \"NO\",\n \"encryption_key_size\": \"0\",\n \"allocated_capacity\": 570.895507812,\n \"data_copies_capacity\": 14.6979980469,\n \"access_type\": \"NFS\",\n \"read_only\": \"NO\",\n \"nfs_export_path\": \"172.31.224.103:/export/Example_Volume\",\n \"smb_export_path\": \"\\\\\\\\172.31.224.103\\\\Example_Volume\",\n \"mount_sync\": \"YES\",\n \"atime_update\": \"NO\",\n \"read_ahead_kb\": 512,\n \"ext_metering\": \"NO\",\n \"images_repo\": \"NO\",\n \"nfs_root_squash\": \"NO\",\n \"smb_only\": \"NO\",\n \"smb_guest\": \"NO\",\n \"smb_windows_acl\": \"NO\",\n \"smb_map_archive\": \"YES\",\n \"smb_file_create_mask\": \"0744\",\n \"smb_dir_create_mask\": \"0755\",\n \"smb_aio_size\": 1,\n \"smb_browseable\": \"YES\",\n \"smb_hidden_files\": null,\n \"smb_encryption_mode\": \"off\",\n \"smb_hide_unreadable\": \"NO\",\n \"smb_hide_unwriteable\": \"NO\",\n \"smb_hide_dot_files\": \"NO\",\n \"smb_store_dos_attributes\": \"NO\",\n \"smb_enable_oplocks\": \"YES\",\n \"capacity_history\": 60,\n \"alert_mode\": 360,\n \"uquota_state\": \"off\",\n \"gquota_state\": \"off\",\n \"pquota_state\": \"off\",\n \"target\": null,\n \"lun\": null,\n \"cache\": null,\n \"tenant_id\": 11,\n \"has_mirror\": \"NO\",\n \"has_backup\": \"NO\",\n \"has_snapshots\": \"YES\",\n \"shadow_copy_enabled\": \"NO\",\n \"is_shadow_copy_clone\": \"NO\",\n \"read_iops_limit\": \"0\",\n \"read_mbps_limit\": \"0\",\n \"write_iops_limit\": \"0\",\n \"write_mbps_limit\": \"0\",\n \"thresholds\": null,\n \"comment\": null,\n \"server_ext_names\": \"srv-00000001,srv-00000002\",\n \"created_at\": \"2018-02-23 22:54:25 UTC\",\n \"modified_at\": \"2018-10-27 02:45:20 UTC\"\n }\n ],\n \"count\": 5\n }\n}"
},
{
"uri": "/pools/{id}/expand",
"method": "POST",
"description": "Add additional RAID Groups Or OBS Tier to a Pool.",
"parameters": [
{
"name": "raid_groups.",
"type": "string",
"description": "Cannot be used with `obsdestname`. Comma separated list of RAID Group IDs.",
"example": "raid-00000001"
},
{
"name": "capacity",
"type": "string",
"description": "Capacity in GB followed by the letter G.",
"example": "30G"
},
{
"name": "obsdestname",
"type": "string",
"description": "Object storage destination name. Cannot be used with `raid_groups`",
"example": "obsdst-00000001"
},
{
"name": "cloud_size",
"type": "string",
"description": "Object storage size (multiple of 20).",
"example": "40"
},
{
"name": "sse",
"type": "string",
"description": "Encryption type.",
"example": "AES256"
}
],
"response": "\n\n pool-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"pool_name\": \"pool-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/pools/{id}/shrink",
"method": "POST",
"description": "Remove a RAID Group / Shrink OBS from a Pool.",
"parameters": [
{
"name": "raid_group",
"type": "string",
"description": "RAID Group ID.",
"example": "RaidGroup-4"
},
{
"name": "obsshrinksize",
"type": "integer",
"description": "OBS size to shrink. (Multiples of 20)",
"example": 40
}
],
"response": "\n\n pool-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"pool_name\": \"pool-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/pools/{id}/cancel_shrink",
"method": "POST",
"description": "Cancel a Pool Shrink.",
"response": "\n\n pool-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"pool_name\": \"pool-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/pools/{id}/update_ssd_cool_off",
"method": "POST",
"description": "Update ssd cool off.",
"parameters": [
{
"name": "cool_off_hours",
"required": true,
"type": "integer",
"example": 2
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/pools/{id}/update_protection",
"method": "POST",
"description": "Update free capacity alert notification settings for a Pool.",
"parameters": [
{
"name": "capacityhistory",
"type": "integer",
"description": "Window size in minutes which is used to calculate the rate of which free Pool capacity is consumed. This rate is used to calculate the estimated time until a Pool is full."
},
{
"name": "effectivecapacityhistory",
"productType": "AFA",
"type": "integer",
"description": "Window size in minutes which is used to calculate the rate of which free Pool effective capacity is consumed. This rate is used to calculate the estimated time until a Pool is full."
},
{
"name": "alertmode",
"type": "integer",
"description": "Send an alert when it is estimated that the Pool will be at full capacity in this many minutes."
},
{
"name": "effectivealertmode",
"productType": "AFA",
"type": "integer",
"description": "Send an alert when it is estimated that the Pool will be at full effective capacity in this many minutes."
},
{
"name": "protectedmode",
"type": "integer",
"description": "Block Volume/Share/Pool creation when it's estimated that the Pool will be full in this many minutes."
},
{
"name": "effectiveprotectedmode",
"productType": "AFA",
"type": "integer",
"description": "Block Volume/Share/Pool creation when it's estimated that the Pool effective capacity will be full in this many minutes."
},
{
"name": "emergencymode",
"type": "integer",
"description": "Delete snapshots, starting with the oldest, when the Pool has less than this number of GB left."
},
{
"name": "effectiveemergencymode",
"productType": "AFA",
"type": "integer",
"description": "Delete snapshots, starting with the oldest, when the Pool effective capacity has less than this number of GB left."
}
],
"reponse": "\n\n pool-00000001 \n 0 \n \n"
},
{
"uri": "/pools/{id}/destination_volumes",
"method": "GET",
"description": "List Remote Mirroring Destination Volumes in a Pool.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n volume-00000001 \n volume \n remotevolume \n cg-00000001 \n NO \n pool \n pool-00000001 \n 300 \n BLOCK \n YES \n 2013-09-27 02:10:21 \n 2013-09-27 02:10:21 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"volumes\": [\n {\n \"name\": \"volume-00000001\",\n \"display_name\": \"volume\",\n \"cg_display_name\": \"remotevolume\",\n \"cg_name\": \"cg-00000001\",\n \"cg_user_created\": \"NO\",\n \"pool_display_name\": \"pool\",\n \"pool_name\": \"pool-00000001\",\n \"virtual_capacity\": 300,\n \"data_type\": \"BLOCK\",\n \"thin\": \"YES\",\n \"created_at\": \"2013-09-27 02:10:21 UTC\",\n \"modified_at\": \"2013-09-27 02:10:21 UTC\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/pools/{id}/toggle_cache",
"method": "POST",
"productType": "hybrid",
"parameters": [
{
"name": "command",
"type": "string",
"required": true,
"description": "argument to set enable / disable cache",
"example": "enable",
"options": "enable|disable"
},
{
"name": "cowcache",
"type": "boolean",
"description": "argument to set COW caching",
"example": true
}
],
"description": "Toggle cache for a Pool.",
"response": "\n\n pool-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"pool_name\": \"pool-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/pools/{id}/cow_cache",
"method": "POST",
"productType": "hybrid",
"parameters": [
{
"name": "cowcache",
"type": "boolean",
"description": "argument to set COW caching",
"example": true
}
],
"description": "Toggle copy on write cache for a Pool.",
"response": "\n\n pool-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"pool_name\": \"pool-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/pools/{id}/volumes_in_recycle_bin",
"method": "GET",
"description": "Show a pool's volumes in recycle bin",
"response": "\n\n 0 \n 1 \n \n \n volume-0000000f \n test \n ...\n 2015-06-25T15:29:16+0300 \n 2015-06-25T15:29:24+0300 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"volumes\": [\n \"\\n \\n \\n ...\\n \\n \\n \"\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/pools/{id}/performance",
"method": "GET",
"description": "Returns the last 60 data points of performance data for the specified interval.",
"parameters": [
{
"name": "interval",
"type": "integer",
"example": 1,
"description": "The interval between data points, in seconds."
}
],
"response": "\n\n pool-00000001 \n 0 \n 20 \n \n \n 0 \n 0.000000 \n 0.000000 \n 0 \n 0 \n 0.000000 \n 0.000000 \n 0 \n 1386985186 \n \n \n 0 \n 0.000000 \n 0.000000 \n 0 \n 0 \n 0.000000 \n 0.000000 \n 0 \n 1386985187 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"pool_name\": \"pool-00000001\",\n \"status\": 0,\n \"usages\": [\n {\n \"rd_iops\": 0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"point\": 1386985186\n },\n {\n \"rd_iops\": 0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"point\": 1386985187\n }\n ],\n \"count\": 20\n }\n}"
},
{
"uri": "/pools/{id}/tags",
"method": "GET",
"description": "Get pool tags.",
"response": "\n\n 0 \n 2 \n \n \n tag-00000003 \n key1 \n value1 \n \n \n tag-00000005 \n key2 \n value2 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"tags\": [\n {\n \"name\": \"tag-00000003\",\n \"key\": \"key1\",\n \"value\": \"value1\"\n },\n {\n \"name\": \"tag-00000005\",\n \"key\": \"key2\",\n \"value\": \"value2\"\n }\n ],\n \"count\": 2\n }\n}"
},
{
"uri": "/pools/{id}/tags",
"method": "POST",
"description": "Create a tag for pool.",
"parameters": [
{
"name": "key",
"type": "string",
"description": "The tag name.",
"required": true,
"example": "tag_key"
},
{
"name": "value",
"type": "string",
"description": "The tag value.",
"required": true,
"example": "tag_value"
}
],
"response": "\n\n tag-00000019 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"tag_name\": \"tag-00000019\",\n \"status\": 0\n }\n}"
},
{
"uri": "/pools/{id}/tags/{tag_key}",
"method": "PUT",
"description": "Update a tag for pool.",
"parameters": [
{
"name": "value",
"type": "string",
"description": "The tag new value.",
"required": true,
"example": "tag_value"
}
],
"response": "\n\n tag-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"tag_name\": \"tag-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/pools/{id}/tags/{tag_key}",
"method": "DELETE",
"description": "Deletes a tag from pool.",
"response": "\n\n tag-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"tag_name\": \"tag-00000003\",\n \"status\": 0\n }\n}"
}
]
},
{
"name": "Volumes",
"description": "Operations involving Volumes.",
"methods": [
{
"uri": "/volumes",
"method": "GET",
"description": "Show all Volumes.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
},
{
"name": "showonlyblock",
"type": "string",
"required": false,
"description": "Show only block volumes.",
"options": "YES, NO",
"example": "YES"
},
{
"name": "showonlyfile",
"type": "string",
"required": false,
"description": "Show only NAS shares.",
"options": "YES, NO",
"example": "YES"
},
{
"name": "display_name",
"type": "string",
"required": false,
"description": "Filter volumes by name.",
"example": "vol000"
}
],
"response": "\n\n 0 \n 2 \n \n \n volume-00000001 \n smb1 \n smb1 \n cg-00000001 \n NO \n RAID-10-Pool-1 \n pool-00010001 \n 2 \n In-use \n 500 \n VM110 \n 500 \n srv-00000001 \n \n \n File-System \n NO \n NO \n 0 \n 499.51171875 \n 485.34765625 \n 13876 \n normal \n 21.025390625 \n 52.0400390625 \n SMB \n NO \n 10.2.4.157:/export/smb1 \n \\\\10.2.4.157\\smb1 \n 0 \n YES \n YES \n 512 \n NO \n NO \n NO \n NO \n NO \n NO \n \n \n NO \n NO \n YES \n YES \n 0744 \n 0755 \n 1 \n YES \n \n off \n AUTO \n YES \n NO \n NO \n NO \n NO \n YES \n YES \n 60 \n 360 \n 51200 \n NO \n 0 \n 102400 \n off \n off \n off \n \n \n \n 10 \n NO \n NO \n NO \n NO \n YES \n NO \n 0 \n 0 \n 0 \n 0 \n 0 \n 0 \n 0 \n 0 \n NO/Globally disabled \n NO/Globally disabled \n NO \n FLC_NONE \n FLC_SCAN_NONE \n 0.0 \n 0 \n \n \n 2021-09-09T16:31:28+0300 \n 2021-09-14T14:49:53+0300 \n \n \n \n volume-00000002 \n smb2 \n smb2 \n cg-00000002 \n NO \n RAID-10-Pool-1 \n pool-00010001 \n 2 \n In-use \n 500 \n VM110 \n srv-00000001 \n \n \n File-System \n NO \n NO \n 0 \n 499.51171875 \n 492.411132812 \n 6199 \n normal \n 21.234375 \n 61.953125 \n SMB \n NO \n 10.2.4.157:/export/smb2 \n \\\\10.2.4.157\\smb2 \n 0 \n YES \n YES \n 512 \n NO \n NO \n NO \n NO \n NO \n NO \n \n \n NO \n NO \n YES \n YES \n 0744 \n 0755 \n 1 \n YES \n \n off \n AUTO \n YES \n NO \n NO \n NO \n NO \n YES \n YES \n 60 \n 360 \n 51200 \n NO \n 0 \n 102400 \n off \n off \n off \n \n \n \n 11 \n NO \n NO \n NO \n NO \n YES \n NO \n 0 \n 0 \n 0 \n 0 \n 0 \n 0 \n 0 \n 0 \n NO/Globally disabled \n NO/Globally disabled \n NO \n FLC_NONE \n FLC_SCAN_NONE \n 0.0 \n 0 \n \n \n 2021-09-09T16:31:51+0300 \n 2021-09-14T15:22:38+0300 \n 500 \n \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"volumes\": [\n {\n \"name\": \"volume-00000001\",\n \"display_name\": \"smb1\",\n \"cg_display_name\": \"smb1\",\n \"cg_name\": \"cg-00000001\",\n \"cg_user_created\": \"NO\",\n \"pool_display_name\": \"RAID-10-Pool-1\",\n \"pool_name\": \"pool-00010001\",\n \"pool_version\": 2,\n \"status\": \"In-use\",\n \"virtual_capacity\": 500,\n \"server_name\": \"VM110\",\n \"provisioned_capacity\": 500,\n \"server_ext_names\": \"srv-00000001\",\n \"life_cycle_policy_display_name\": null,\n \"life_cycle_policy_ext_name\": null,\n \"data_type\": \"File-System\",\n \"thin\": \"NO\",\n \"encryption\": \"NO\",\n \"encryption_key_size\": \"0\",\n \"total_capacity\": 499.51171875,\n \"available_capacity\": 485.34765625,\n \"num_of_filesystem_objects\": 13876,\n \"capacity_mode\": \"normal\",\n \"allocated_capacity\": 21.025390625,\n \"data_copies_capacity\": 52.0400390625,\n \"access_type\": \"SMB\",\n \"read_only\": \"NO\",\n \"nfs_export_path\": \"10.2.4.157:/export/smb1\",\n \"smb_export_path\": \"\\\\\\\\10.2.4.157\\\\smb1\",\n \"additional_smb_export_paths_count\": 0,\n \"mount_sync\": \"YES\",\n \"atime_update\": \"YES\",\n \"read_ahead_kb\": 512,\n \"ext_metering\": \"NO\",\n \"images_repo\": \"NO\",\n \"flc_db\": \"NO\",\n \"audit_repo\": \"NO\",\n \"nfs_root_squash\": \"NO\",\n \"nfs_all_squash\": \"NO\",\n \"nfs_anon_uid\": null,\n \"nfs_anon_gid\": null,\n \"smb_only\": \"NO\",\n \"smb_guest\": \"NO\",\n \"smb_windows_acl\": \"YES\",\n \"smb_map_archive\": \"YES\",\n \"smb_file_create_mask\": \"0744\",\n \"smb_dir_create_mask\": \"0755\",\n \"smb_aio_size\": 1,\n \"smb_browseable\": \"YES\",\n \"smb_hidden_files\": null,\n \"smb_encryption_mode\": \"off\",\n \"smb_case_sensitive\": \"AUTO\",\n \"smb_mangled_names\": \"YES\",\n \"smb_hide_unreadable\": \"NO\",\n \"smb_hide_unwriteable\": \"NO\",\n \"smb_hide_dot_files\": \"NO\",\n \"smb_store_dos_attributes\": \"NO\",\n \"smb_enable_oplocks\": \"YES\",\n \"audit_enable\": \"YES\",\n \"capacity_history\": 60,\n \"alert_mode\": 360,\n \"emergency_mode_mb\": 51200,\n \"auto_expand_on_emergency\": \"NO\",\n \"auto_expand_by\": 0,\n \"max_capacity\": 102400,\n \"uquota_state\": \"off\",\n \"gquota_state\": \"off\",\n \"pquota_state\": \"off\",\n \"target\": null,\n \"lun\": null,\n \"cache\": null,\n \"tenant_id\": 10,\n \"has_mirror\": \"NO\",\n \"has_backup\": \"NO\",\n \"is_remote_clone_source\": \"NO\",\n \"has_snapshots\": \"NO\",\n \"shadow_copy_enabled\": \"YES\",\n \"is_shadow_copy_clone\": \"NO\",\n \"read_iops_limit\": \"0\",\n \"read_mbps_limit\": \"0\",\n \"write_iops_limit\": \"0\",\n \"write_mbps_limit\": \"0\",\n \"read_iops_capping\": \"0\",\n \"read_mbps_capping\": \"0\",\n \"write_iops_capping\": \"0\",\n \"write_mbps_capping\": \"0\",\n \"compress\": \"NO/Globally disabled\",\n \"dedupe\": \"NO/Globally disabled\",\n \"mtr_histograms\": \"NO\",\n \"flc_state\": \"FLC_NONE\",\n \"flc_scan_state\": \"FLC_SCAN_NONE\",\n \"flc_scan_progress\": 0.0,\n \"flc_scan_remaining_time_seconds\": 0,\n \"thresholds\": null,\n \"comment\": null,\n \"created_at\": \"2021-09-09T16:31:28+0300\",\n \"modified_at\": \"2021-09-14T14:49:53+0300\",\n \"flc_policy_name\": null\n },\n {\n \"name\": \"volume-00000002\",\n \"display_name\": \"smb2\",\n \"cg_display_name\": \"smb2\",\n \"cg_name\": \"cg-00000002\",\n \"cg_user_created\": \"NO\",\n \"pool_display_name\": \"RAID-10-Pool-1\",\n \"pool_name\": \"pool-00010001\",\n \"pool_version\": 2,\n \"status\": \"In-use\",\n \"provisioned_capacity\": 500,\n \"server_name\": \"VM110\",\n \"server_ext_names\": \"srv-00000001\",\n \"life_cycle_policy_display_name\": null,\n \"life_cycle_policy_ext_name\": null,\n \"data_type\": \"File-System\",\n \"thin\": \"NO\",\n \"encryption\": \"NO\",\n \"encryption_key_size\": \"0\",\n \"total_capacity\": 499.51171875,\n \"available_capacity\": 492.411132812,\n \"num_of_filesystem_objects\": 6199,\n \"capacity_mode\": \"normal\",\n \"allocated_capacity\": 21.234375,\n \"data_copies_capacity\": 61.953125,\n \"access_type\": \"SMB\",\n \"read_only\": \"NO\",\n \"nfs_export_path\": \"10.2.4.157:/export/smb2\",\n \"smb_export_path\": \"\\\\\\\\10.2.4.157\\\\smb2\",\n \"additional_smb_export_paths_count\": 0,\n \"mount_sync\": \"YES\",\n \"atime_update\": \"YES\",\n \"read_ahead_kb\": 512,\n \"ext_metering\": \"NO\",\n \"images_repo\": \"NO\",\n \"flc_db\": \"NO\",\n \"audit_repo\": \"NO\",\n \"nfs_root_squash\": \"NO\",\n \"nfs_all_squash\": \"NO\",\n \"nfs_anon_uid\": null,\n \"nfs_anon_gid\": null,\n \"smb_only\": \"NO\",\n \"smb_guest\": \"NO\",\n \"smb_windows_acl\": \"YES\",\n \"smb_map_archive\": \"YES\",\n \"smb_file_create_mask\": \"0744\",\n \"smb_dir_create_mask\": \"0755\",\n \"smb_aio_size\": 1,\n \"smb_browseable\": \"YES\",\n \"smb_hidden_files\": null,\n \"smb_encryption_mode\": \"off\",\n \"smb_case_sensitive\": \"AUTO\",\n \"smb_mangled_names\": \"YES\",\n \"smb_hide_unreadable\": \"NO\",\n \"smb_hide_unwriteable\": \"NO\",\n \"smb_hide_dot_files\": \"NO\",\n \"smb_store_dos_attributes\": \"NO\",\n \"smb_enable_oplocks\": \"YES\",\n \"audit_enable\": \"YES\",\n \"capacity_history\": 60,\n \"alert_mode\": 360,\n \"emergency_mode_mb\": 51200,\n \"auto_expand_on_emergency\": \"NO\",\n \"auto_expand_by\": 0,\n \"max_capacity\": 102400,\n \"uquota_state\": \"off\",\n \"gquota_state\": \"off\",\n \"pquota_state\": \"off\",\n \"target\": null,\n \"lun\": null,\n \"cache\": null,\n \"tenant_id\": 11,\n \"has_mirror\": \"NO\",\n \"has_backup\": \"NO\",\n \"is_remote_clone_source\": \"NO\",\n \"has_snapshots\": \"NO\",\n \"shadow_copy_enabled\": \"YES\",\n \"is_shadow_copy_clone\": \"NO\",\n \"read_iops_limit\": \"0\",\n \"read_mbps_limit\": \"0\",\n \"write_iops_limit\": \"0\",\n \"write_mbps_limit\": \"0\",\n \"read_iops_capping\": \"0\",\n \"read_mbps_capping\": \"0\",\n \"write_iops_capping\": \"0\",\n \"write_mbps_capping\": \"0\",\n \"compress\": \"NO/Globally disabled\",\n \"dedupe\": \"NO/Globally disabled\",\n \"mtr_histograms\": \"NO\",\n \"flc_state\": \"FLC_NONE\",\n \"flc_scan_state\": \"FLC_SCAN_NONE\",\n \"flc_scan_progress\": 0.0,\n \"flc_scan_remaining_time_seconds\": 0,\n \"thresholds\": null,\n \"comment\": null,\n \"created_at\": \"2021-09-09T16:31:51+0300\",\n \"modified_at\": \"2021-09-14T15:22:38+0300\",\n \"virtual_capacity\": 500,\n \"flc_policy_name\": null\n }\n ],\n \"count\": 2\n }\n}"
},
{
"uri": "/volumes/{id}",
"method": "GET",
"description": "Show a single Volume details.",
"response": "\n\n 0 \n \n volume-00000001 \n smb1 \n smb1 \n cg-00000001 \n NO \n RAID-10-Pool-1 \n pool-00010001 \n 2 \n In-use \n 500 \n VM110 \n 500 \n srv-00000001 \n \n \n File-System \n NO \n NO \n 0 \n 499.51171875 \n 485.34765625 \n 13876 \n normal \n 21.025390625 \n 52.0400390625 \n SMB \n NO \n 10.2.4.157:/export/smb1 \n \\\\10.2.4.157\\smb1 \n 0 \n YES \n YES \n 512 \n NO \n NO \n NO \n NO \n NO \n NO \n \n \n NO \n NO \n YES \n YES \n 0744 \n 0755 \n 1 \n YES \n \n off \n AUTO \n YES \n NO \n NO \n NO \n NO \n YES \n YES \n 60 \n 360 \n 51200 \n NO \n 0 \n 102400 \n off \n off \n off \n \n \n \n 10 \n NO \n NO \n NO \n NO \n YES \n NO \n 0 \n 0 \n 0 \n 0 \n 0 \n 0 \n 0 \n 0 \n NO/Globally disabled \n NO/Globally disabled \n NO \n FLC_NONE \n FLC_SCAN_NONE \n 0.0 \n 0 \n \n \n 2021-09-09T16:31:28+0300 \n 2021-09-14T14:49:53+0300 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"volume\": {\n \"name\": \"volume-00000001\",\n \"display_name\": \"smb1\",\n \"cg_display_name\": \"smb1\",\n \"cg_name\": \"cg-00000001\",\n \"cg_user_created\": \"NO\",\n \"pool_display_name\": \"RAID-10-Pool-1\",\n \"pool_name\": \"pool-00010001\",\n \"pool_version\": 2,\n \"status\": \"In-use\",\n \"virtual_capacity\": 500,\n \"server_name\": \"VM110\",\n \"provisioned_capacity\": 500,\n \"server_ext_names\": \"srv-00000001\",\n \"life_cycle_policy_display_name\": null,\n \"life_cycle_policy_ext_name\": null,\n \"data_type\": \"File-System\",\n \"thin\": \"NO\",\n \"encryption\": \"NO\",\n \"encryption_key_size\": \"0\",\n \"total_capacity\": 499.51171875,\n \"available_capacity\": 485.34765625,\n \"num_of_filesystem_objects\": 13876,\n \"capacity_mode\": \"normal\",\n \"allocated_capacity\": 21.025390625,\n \"data_copies_capacity\": 52.0400390625,\n \"access_type\": \"SMB\",\n \"read_only\": \"NO\",\n \"nfs_export_path\": \"10.2.4.157:/export/smb1\",\n \"smb_export_path\": \"\\\\\\\\10.2.4.157\\\\smb1\",\n \"additional_smb_export_paths_count\": 0,\n \"mount_sync\": \"YES\",\n \"atime_update\": \"YES\",\n \"read_ahead_kb\": 512,\n \"ext_metering\": \"NO\",\n \"images_repo\": \"NO\",\n \"flc_db\": \"NO\",\n \"audit_repo\": \"NO\",\n \"nfs_root_squash\": \"NO\",\n \"nfs_all_squash\": \"NO\",\n \"nfs_anon_uid\": null,\n \"nfs_anon_gid\": null,\n \"smb_only\": \"NO\",\n \"smb_guest\": \"NO\",\n \"smb_windows_acl\": \"YES\",\n \"smb_map_archive\": \"YES\",\n \"smb_file_create_mask\": \"0744\",\n \"smb_dir_create_mask\": \"0755\",\n \"smb_aio_size\": 1,\n \"smb_browseable\": \"YES\",\n \"smb_hidden_files\": null,\n \"smb_encryption_mode\": \"off\",\n \"smb_case_sensitive\": \"AUTO\",\n \"smb_mangled_names\": \"YES\",\n \"smb_hide_unreadable\": \"NO\",\n \"smb_hide_unwriteable\": \"NO\",\n \"smb_hide_dot_files\": \"NO\",\n \"smb_store_dos_attributes\": \"NO\",\n \"smb_enable_oplocks\": \"YES\",\n \"audit_enable\": \"YES\",\n \"capacity_history\": 60,\n \"alert_mode\": 360,\n \"emergency_mode_mb\": 51200,\n \"auto_expand_on_emergency\": \"NO\",\n \"auto_expand_by\": 0,\n \"max_capacity\": 102400,\n \"uquota_state\": \"off\",\n \"gquota_state\": \"off\",\n \"pquota_state\": \"off\",\n \"target\": null,\n \"lun\": null,\n \"cache\": null,\n \"tenant_id\": 10,\n \"has_mirror\": \"NO\",\n \"has_backup\": \"NO\",\n \"is_remote_clone_source\": \"NO\",\n \"has_snapshots\": \"NO\",\n \"shadow_copy_enabled\": \"YES\",\n \"is_shadow_copy_clone\": \"NO\",\n \"read_iops_limit\": \"0\",\n \"read_mbps_limit\": \"0\",\n \"write_iops_limit\": \"0\",\n \"write_mbps_limit\": \"0\",\n \"read_iops_capping\": \"0\",\n \"read_mbps_capping\": \"0\",\n \"write_iops_capping\": \"0\",\n \"write_mbps_capping\": \"0\",\n \"compress\": \"NO/Globally disabled\",\n \"dedupe\": \"NO/Globally disabled\",\n \"mtr_histograms\": \"NO\",\n \"flc_state\": \"FLC_NONE\",\n \"flc_scan_state\": \"FLC_SCAN_NONE\",\n \"flc_scan_progress\": 0.0,\n \"flc_scan_remaining_time_seconds\": 0,\n \"thresholds\": null,\n \"comment\": null,\n \"created_at\": \"2021-09-09T16:31:28+0300\",\n \"modified_at\": \"2021-09-14T14:49:53+0300\",\n \"flc_policy_name\": null\n }\n }\n}"
},
{
"uri": "/volumes",
"method": "POST",
"description": "Create a Volume.",
"parameters": [
{
"name": "name",
"type": "string",
"required": true,
"description": "The new volume name",
"example": "my-volume"
},
{
"name": "capacity",
"type": "string",
"example": "10G",
"description": "Capacity in GB followed by the letter G.",
"required": true
},
{
"name": "block",
"type": "string",
"example": "YES",
"options": "YES, NO",
"description": "YES for a Block Volume, NO for a File Share."
},
{
"name": "pool",
"type": "string",
"required": true,
"example": "pool-00000001",
"description": "The Pool ID to create the Volume/Share on."
},
{
"name": "dedupe",
"type": "string",
"options": "YES, NO",
"productType": "AFA",
"example": "YES",
"description": "Enable Dedupe For Volume. Default: YES."
},
{
"name": "compress",
"type": "string",
"productType": "AFA",
"options": "YES, NO",
"example": "YES",
"description": "Enable compress For Volume. Default: YES."
},
{
"name": "crypt",
"type": "string",
"options": "YES, NO",
"description": "Enable encryption for this Volume."
},
{
"name": "attachpolicies",
"type": "string",
"options": "YES, NO",
"required": false,
"description": "Attach default policies."
},
{
"name": "mountsync",
"type": "string",
"options": "YES (Synchronous Writing), NO (Asynchronous Writing)",
"example": "YES",
"description": "Filesystem write policy."
},
{
"name": "export_name",
"type": "string",
"description": "Export Name, required for a Share."
},
{
"name": "atimeupdate",
"type": "string",
"options": "YES, NO",
"description": "Enable/disable atime updates for a Share."
},
{
"name": "smbguest",
"type": "string",
"options": "YES, NO",
"description": "Allow/disallow SMB guest access for a Share."
},
{
"name": "smbonly",
"type": "string",
"options": "YES, NO",
"description": "Allow/disallow SMB access only for a share."
},
{
"name": "smbwindowsacl",
"type": "string",
"options": "YES, NO",
"description": "Enable/disabled enhanced Windows ACL for a Share."
},
{
"name": "smbfilecreatemask",
"type": "string",
"description": "Set file creation permission for a Share."
},
{
"name": "smbbrowseable",
"type": "string",
"options": "YES, NO",
"description": "Allow/disallow SMB to be browseable."
},
{
"name": "smbhiddenfiles",
"type": "string",
"description": "SMB files to hide."
},
{
"name": "smbhideunreadable",
"type": "string",
"options": "YES, NO",
"description": "hide/show SMB unreadable files."
},
{
"name": "smbhideunwriteable",
"type": "string",
"options": "YES, NO"
},
{
"name": "smbhidedotfiles",
"type": "string",
"options": "YES, NO",
"description": "hide/show SMB unwriteable files."
},
{
"name": "smbstoredosattributes",
"type": "string",
"options": "YES, NO",
"description": "enable/disable SMB store dos attributes."
},
{
"name": "smbdircreatemask",
"type": "string",
"description": "Set directory creation permission for a Share."
},
{
"name": "smbmaparchive",
"type": "string",
"options": "YES, NO",
"description": "Set map archive for smb Share."
},
{
"name": "smbencryptionmode",
"type": "string",
"options": "off, desired, required",
"description": "Set encryption mode for smb Share."
},
{
"name": "smbenableoplocks",
"type": "string",
"options": "YES, NO",
"description": "Set if smb oplocks enabled."
},
{
"name": "smbmanglednames",
"type": "string",
"options": "YES, NO, ILLEGAL",
"description": "Set mangling unsupported filenames handling."
},
{
"name": "smbcasesensitive",
"type": "string",
"options": "YES, NO, AUTO",
"description": "Set file names case sensitivity."
},
{
"name": "nfsrootsquash",
"type": "string",
"options": "YES, NO",
"description": "Set root squash for nfs mount"
},
{
"name": "nfsallsquash",
"type": "string",
"options": "YES, NO",
"description": "Set all squash for nfs mount"
},
{
"name": "nfsanongid",
"type": "integer",
"description": "Set anonymous GID for nfs mount (0 is reserved for default)"
},
{
"name": "nfsanonuid",
"type": "integer",
"description": "Set anonymous UID for nfs mount (0 is reserved for default)"
},
{
"name": "readaheadkb",
"type": "string",
"options": "16, 64, 128, 256, 512",
"description": "Set Read Ahead Value (KB)"
},
{
"name": "autoexpand",
"type": "string",
"options": "YES, NO",
"description": "Enable capacity auto expand",
"example": "YES"
},
{
"name": "maxcapacity",
"type": "string",
"example": "300G",
"description": "Max Capacity to expand in GB followed by the letter G."
},
{
"name": "autoexpandby",
"type": "string",
"example": "300G",
"description": "Capacity to expand by in GB followed by the letter G."
},
{
"name": "auditenable",
"type": "string",
"options": "YES, NO",
"example": "YES",
"description": "Enable file access auditing on the volume."
},
{
"name": "flcenabled",
"type": "string",
"options": "YES, NO",
"example": "YES",
"description": "Enable file lifecycle indexing on the volume."
},
{
"name": "write_mbps_capping",
"type": "integer",
"example": 300,
"description": "Block only."
},
{
"name": "read_mbps_capping",
"type": "integer",
"example": 1300,
"description": "Block only."
},
{
"name": "write_iops_capping",
"type": "integer",
"description": "Block only.",
"example": 2300
},
{
"name": "read_iops_capping",
"type": "integer",
"example": 1500,
"description": "Block only."
}
],
"response": "\n\n volume-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}",
"method": "PUT",
"description": "Update Volume's options.",
"parameters": [
{
"name": "dedupe",
"type": "string",
"options": "YES, NO",
"example": "YES",
"productType": "AFA",
"description": "Enable Dedupe For Volume."
},
{
"name": "compress",
"type": "string",
"options": "YES, NO",
"example": "YES",
"productType": "AFA",
"description": "Enable compress For Volume."
},
{
"name": "atimeupdate",
"type": "string",
"options": "YES, NO",
"example": true,
"description": "Enable/disable update access times."
},
{
"name": "mountsync",
"type": "string",
"options": "YES (Synchronous Writing), NO (Asynchronous Writing)",
"example": "YES",
"description": "Filesystem write policy."
},
{
"name": "smbguest",
"type": "string",
"options": "YES, NO",
"description": "Allow/disallow SMB guest access for a Share."
},
{
"name": "smbonly",
"type": "string",
"options": "YES, NO",
"description": "Allow/disallow SMB access only for a share."
},
{
"name": "smbwindowsacl",
"type": "string",
"options": "YES, NO",
"description": "Enable/disabled enhanced Windows ACL for a Share."
},
{
"name": "smbfilecreatemask",
"type": "string",
"description": "Updates file creation permission for a Share."
},
{
"name": "smbdircreatemask",
"type": "string",
"example": "0600",
"description": "Updates directory creation permission for a Share."
},
{
"name": "smbbrowseable",
"type": "string",
"options": "YES, NO",
"description": "Allow/disallow SMB to be browseable."
},
{
"name": "smbhiddenfiles",
"type": "string",
"description": "SMB files to hide."
},
{
"name": "smbhideunreadable",
"type": "string",
"options": "YES, NO",
"description": "hide/show SMB unreadable files."
},
{
"name": "smbhidedotfiles",
"type": "string",
"options": "YES, NO",
"description": "hide/show SMB dot files."
},
{
"name": "smbhideunwriteable",
"type": "string",
"options": "YES, NO",
"description": "hide/show SMB unwriteable files."
},
{
"name": "smbmaparchive",
"type": "string",
"options": "YES, NO",
"example": false,
"description": "Allow/disallow map archive for smb Share."
},
{
"name": "smbencryptionmode",
"type": "string",
"options": "off, desired, required",
"description": "Set encryption mode for smb Share."
},
{
"name": "smbenableoplocks",
"type": "string",
"options": "YES, NO",
"description": "Set if smb oplocks enabled."
},
{
"name": "smbmanglednames",
"type": "string",
"options": "YES, NO, ILLEGAL",
"description": "Set mangling unsupported filenames handling."
},
{
"name": "smbcasesensitive",
"type": "string",
"options": "YES, NO, AUTO",
"description": "Set file names case sensitivity."
},
{
"name": "nfsrootsquash",
"type": "string",
"options": "YES, NO",
"description": "Set root squash for nfs mount"
},
{
"name": "nfsallsquash",
"type": "string",
"options": "YES, NO",
"description": "Set all squash for nfs mount"
},
{
"name": "nfsanongid",
"type": "integer",
"description": "Set anonymous GID for nfs mount (0 is reserved for default)"
},
{
"name": "nfsanonuid",
"type": "integer",
"description": "Set anonymous UID for nfs mount (0 is reserved for default)"
},
{
"name": "readaheadkb",
"type": "string",
"options": "16, 64, 128, 256, 512",
"description": "Update Read Ahead Value (KB)"
},
{
"name": "force",
"type": "string",
"options": "YES, NO",
"example": "YES",
"description": "Update volume parameters even if volume is attached to a server. Default: NO:"
},
{
"name": "auditenable",
"type": "string",
"options": "YES, NO",
"example": "YES",
"description": "Enable file access auditing on the volume."
},
{
"name": "flcenabled",
"type": "string",
"options": "enable, disable, resume, pause",
"example": "enable",
"description": "Required FLC indexing state."
},
{
"name": "mtr_histograms",
"type": "string",
"options": "YES, NO",
"example": "YES",
"description": "Configure IO distribution by size analysis on the volume."
},
{
"name": "write_mbps_capping",
"type": "integer",
"example": 300,
"description": "Block only."
},
{
"name": "read_mbps_capping",
"type": "integer",
"example": 1300,
"description": "Block only."
},
{
"name": "write_iops_capping",
"type": "integer",
"example": 2300,
"description": "Block only."
},
{
"name": "read_iops_capping",
"type": "integer",
"example": 1500,
"description": "Block only."
}
],
"response": "\n\n volume-00000002 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000002\",\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}",
"method": "DELETE",
"description": "Delete a Volume.",
"parameters": [
{
"name": "force",
"type": "string",
"options": "YES, NO",
"example": "YES",
"description": "Delete the volume even if snapshots exist. Default: NO:"
}
],
"response": "\n\n volume-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/free",
"method": "GET",
"description": "Show all Volumes which are not attached to any Server.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 2 \n \n \n volume-00000001 \n volume \n volume \n cg-00000001 \n NO \n poolrenamed \n pool-00000001 \n Available \n 200 \n \n BLOCK \n YES \n NO \n \n \n \n NO \n NO \n \n \n \n 0 \n 0 \n 0 \n 0 \n 2013-09-26 00:42:30 \n 2013-09-26 00:42:31 \n \n \n volume-00000002 \n share \n share \n cg-00000002 \n NO \n poolrenamed \n pool-00000001 \n Available \n 200 \n \n File-System \n NO \n NO \n \n \n /export/share \n NO \n NO \n \n \n \n 0 \n 0 \n 0 \n 0 \n 2013-09-26 00:52:00 \n 2013-09-27 00:21:28 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"volumes\": [\n {\n \"name\": \"volume-00000001\",\n \"display_name\": \"volume\",\n \"cg_display_name\": \"volume\",\n \"cg_name\": \"cg-00000001\",\n \"cg_user_created\": \"NO\",\n \"pool_display_name\": \"poolrenamed\",\n \"pool_name\": \"pool-00000001\",\n \"status\": \"Available\",\n \"virtual_capacity\": 200,\n \"server_name\": null,\n \"data_type\": \"BLOCK\",\n \"thin\": \"YES\",\n \"encryption\": \"NO\",\n \"access_type\": null,\n \"read_only\": null,\n \"export_name\": null,\n \"mount_sync\": \"NO\",\n \"atime_update\": \"NO\",\n \"target\": null,\n \"lun\": null,\n \"cache\": null,\n \"read_iops_limit\": \"0\",\n \"read_mbps_limit\": \"0\",\n \"write_iops_limit\": \"0\",\n \"write_mbps_limit\": \"0\",\n \"created_at\": \"2013-09-26 00:42:30 UTC\",\n \"modified_at\": \"2013-09-26 00:42:31 UTC\"\n },\n {\n \"name\": \"volume-00000002\",\n \"display_name\": \"share\",\n \"cg_display_name\": \"share\",\n \"cg_name\": \"cg-00000002\",\n \"cg_user_created\": \"NO\",\n \"pool_display_name\": \"poolrenamed\",\n \"pool_name\": \"pool-00000001\",\n \"status\": \"Available\",\n \"virtual_capacity\": 200,\n \"server_name\": null,\n \"data_type\": \"File-System\",\n \"thin\": \"NO\",\n \"encryption\": \"NO\",\n \"access_type\": null,\n \"read_only\": null,\n \"export_name\": \"/export/share\",\n \"mount_sync\": \"NO\",\n \"atime_update\": \"NO\",\n \"target\": null,\n \"lun\": null,\n \"cache\": null,\n \"read_iops_limit\": \"0\",\n \"read_mbps_limit\": \"0\",\n \"write_iops_limit\": \"0\",\n \"write_mbps_limit\": \"0\",\n \"created_at\": \"2013-09-26 00:52:00 UTC\",\n \"modified_at\": \"2013-09-27 00:21:28 UTC\"\n }\n ],\n \"count\": 2\n }\n}"
},
{
"uri": "/volumes/{id}/rename",
"method": "POST",
"description": "Rename a Volume.",
"parameters": [
{
"name": "new_name",
"type": "string"
}
],
"response": "\n\n volume-00000002 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000002\",\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/expand",
"method": "POST",
"description": "Expand a Volume.",
"parameters": [
{
"name": "capacity",
"type": "string",
"required": true,
"description": "Capacity in GB followed by the letter G.",
"example": "30G"
}
],
"response": "\n\n volume-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/servers",
"method": "GET",
"description": "Show the Servers to which the Volume is attached",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n srv-00000001 \n server \n 127.0.0.1 \n 127.0.0.1 \n 1 \n Active \n \n no \n 2013-09-26 11:51:40 \n 2013-09-27 00:38:43 \n In-use \n iqn.2011-04.com.zadarastorage:vsa-000007bb:1 \n ISCSI \n NO \n 0 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"servers\": [\n {\n \"name\": \"srv-00000001\",\n \"display_name\": \"server\",\n \"iqn\": \"127.0.0.1\",\n \"iscsi_ip\": \"127.0.0.1\",\n \"ipsec\": \"1\",\n \"status\": \"Active\",\n \"os\": null,\n \"registered\": \"no\",\n \"created_at\": \"2013-09-26 11:51:40 UTC\",\n \"modified_at\": \"2013-09-27 00:38:43 UTC\",\n \"pm_status\": \"In-use\",\n \"target\": \"iqn.2011-04.com.zadarastorage:vsa-000007bb:1\",\n \"access_type\": \"ISCSI\",\n \"read_only\": \"NO\",\n \"lun\": \"0\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/volumes/{id}/detach",
"method": "POST",
"description": "Detach a Volume from one or more servers",
"parameters": [
{
"name": "servers",
"type": "string",
"required": true,
"description": "Comma-separated list of Server IDs.",
"example": "srv-00000001"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/export_name",
"method": "PUT",
"description": "Change a Share's export name.",
"parameters": [
{
"name": "exportname",
"description": "The new export name for the Share.",
"required": true,
"type": "string",
"example": "new-export-name"
}
],
"response": "\n\n volume-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/add_export_name",
"method": "PUT",
"description": "Add a secondary export name to Share.",
"parameters": [
{
"name": "exportname",
"description": "The new secondary export name for the Share.",
"required": true,
"type": "string",
"example": "secondary-export-name"
}
],
"response": "\n\n volume-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/export_name",
"method": "DELETE",
"description": "Delete a secondary export name from Share.",
"parameters": [
{
"name": "exportname",
"description": "The export name to delete.",
"required": true,
"type": "string",
"example": "secondary-export-name"
}
],
"response": "\n\n volume-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/delete_volume_from_recycle_bin",
"method": "DELETE",
"description": "Deletes a volume(s) from recycle bin",
"response": "\n\n 0 \n volume-00000034 \n \n",
"response_json": "{\n \"delete_volume_from_recycle_bin\": {\n \"status\": 0,\n \"volname\": \"volume-00000034\"\n }\n}"
},
{
"uri": "/volumes/{id}/export_name",
"method": "PUT",
"description": "Change a Share's export name.",
"parameters": [
{
"name": "exportname",
"description": "The new export name for the Share.",
"required": true,
"type": "string",
"example": "share-export-name"
}
],
"response": "\n\n volume-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/consistency_groups/{volume_cg_id}/snapshot_policies",
"method": "GET",
"description": "Get the Snapshot Policies attached to a Volume.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n policy-00000002 \n Hourly Snapshots for a Day \n 0 * * * * \n N24 \n N24 \n NO \n NO \n NO \n NO \n \n rule-000000d6 \n 2013-09-25 09:22:25 \n 2013-09-25 09:22:25 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"snapshot_policies\": [\n {\n \"name\": \"policy-00000002\",\n \"display_name\": \"Hourly Snapshots for a Day\",\n \"create_policy\": \"0 * * * *\",\n \"delete_policy\": \"N24\",\n \"destination_delete_policy\": \"N24\",\n \"paused\": \"NO\",\n \"create_empty\": \"NO\",\n \"attach\": \"NO\",\n \"destination\": \"NO\",\n \"type\": null,\n \"snapshot_rule\": \"rule-000000d6\",\n \"created_at\": \"2013-09-25 09:22:25 UTC\",\n \"modified_at\": \"2013-09-25 09:22:25 UTC\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/volumes/{id}/file_history",
"method": "GET",
"description": "Get the volume file history.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 5 \n \n \n volume-0000000e \n h-r8-1459428261852 \n normal \n 2016-03-31T15:44:21+0300 \n pool1 \n pool-00000001 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"file_histories\": [\n {\n \"name\": \"volume-0000000e\",\n \"display_name\": \"h-r8-1459428261852\",\n \"status\": \"normal\",\n \"created_at\": \"2016-03-31T15:44:21+0300\",\n \"pool_display_name\": \"pool1\",\n \"pool_name\": \"pool-00000001\"\n }\n ],\n \"count\": 5\n }\n}"
},
{
"uri": "/volumes/{id}/attach_snapshot_policy",
"method": "POST",
"description": "Attach a Snapshot Policy to a Volume.",
"parameters": [
{
"name": "id",
"type": "string",
"description": "A volume ID.",
"required": true
},
{
"name": "policy",
"type": "string",
"description": "A policy ID.",
"required": true,
"example": "policy-00000001"
},
{
"name": "application",
"type": "string",
"description": "Policy Application.",
"options": "user|file_history",
"required": true,
"example": "user"
}
],
"response": "\n\n snaprule-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_rule_name\": \"snaprule-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/detach_snapshot_policy",
"method": "POST",
"description": "Detach a Snapshot Policy from a Volume.",
"parameters": [
{
"name": "id",
"type": "string",
"description": "A volume ID.",
"required": true,
"example": "volume-00000001"
},
{
"name": "snaprule",
"type": "string",
"description": "A snap rule ID. (found in /consistency_groups/{volume_cg_id}/snapshot_policies API)",
"required": true,
"example": "snaprule-00000001"
},
{
"name": "delete_snapshots",
"type": "string",
"description": "Delete Snapshots associated with the Policy.",
"options": "YES, NO"
},
{
"name": "force",
"type": "string",
"options": "YES, NO",
"example": "YES",
"description": "Force Detach a Snapshot Policy from a Volume."
}
],
"response": "\n\n snaprule-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_rule_name\": \"snaprule-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/snapshot_policies/{snaprule}/pause",
"method": "POST",
"description": "Pause a volume's snapshot policy.",
"parameters": [
{
"name": "id",
"type": "string",
"description": "A snap rule ID. (found in /consistency_groups/{volume_cg_id}/snapshot_policies API)",
"required": true,
"example": "snaprule-00000001"
}
],
"response": "\n\n snaprule-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"snaprule_name\": \"snaprule-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/consistency_groups/{volume_cg_id}/snapshots",
"method": "GET",
"description": "Get the list of Snapshots for this Volume.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
},
{
"name": "application",
"type": "string",
"description": "Policy Application.",
"options": "user|mirror|migration|obs_mirror|shadow_copy",
"example": "mirror"
},
{
"name": "jobname",
"type": "string",
"description": "Mirror Job used to create the snapshots.",
"example": "srcjvpsa-00000002"
},
{
"name": "snapshot_policy",
"type": "string",
"description": "Snapshot Policy which created the snapshots.",
"example": "policy-00000002"
},
{
"name": "start_date",
"type": "string",
"description": "Snapshots created after the provided value (DD:MM:YY:HH:MM:SS localtime)",
"example": "05:02:17:13:44:55"
},
{
"name": "end_date",
"type": "string",
"description": "Snapshots created before the provided value DD:MM:YY:HH:MM:SS localtime)",
"example": "05:02:17:14:44:55"
}
],
"response": "\n\n 0 \n 1 \n \n \n snap-00000001 \n s-r2-1380150028000 \n normal \n volume \n cg-00000001 \n pool-00000001 \n 2013-09-26 01:00:28 \n 2013-09-26 01:00:28 \n volume-00000001 \n v1 \n 102400 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"snapshots\": [\n {\n \"name\": \"snap-00000001\",\n \"display_name\": \"s-r2-1380150028000\",\n \"status\": \"normal\",\n \"cg_display_name\": \"volume\",\n \"cg_name\": \"cg-00000001\",\n \"pool_name\": \"pool-00000001\",\n \"created_at\": \"2013-09-26 01:00:28 UTC\",\n \"modified_at\": \"2013-09-26 01:00:28 UTC\",\n \"volume_ext_name\": \"volume-00000001\",\n \"volume_display_name\": \"v1\",\n \"volume_capacity_mb\": 102400\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/consistency_groups/{volume_cg_id}/snapshots",
"method": "POST",
"description": "Create a Snapshot of a Volume.",
"parameters": [
{
"name": "display_name",
"type": "string",
"required": true,
"example": "end-of-week-snapshot",
"description": "The new snapshot name"
}
],
"response": "\n\n snap-00000002 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_name\": \"snap-00000002\",\n \"status\": 0\n }\n}"
},
{
"uri": "/snapshots/{snapshot_id}",
"method": "DELETE",
"description": "Delete a Snapshot of a Volume.",
"response": "\n\n snap-00000002 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_name\": \"snap-00000002\",\n \"status\": 0\n }\n}"
},
{
"uri": "/file_histories/{volume_id}",
"method": "DELETE",
"description": "Delete the file history of a Volume.",
"response": "\n\n volume-00000002 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000002\",\n \"status\": 0\n }\n}"
},
{
"uri": "/consistency_groups/{migration_cg_id}/show_migration",
"method": "GET",
"description": "Shows a migration job",
"response": "\n\n 0 \n \n mgrjob-00000003 \n vol-example \n vol-iscsi \n cg-00000005 \n pool1 \n cg-00000006 \n pool1 \n ... \n Paused \n 0 \n 0 \n 1000 \n 500 \n \n 2014-01-01 11:41:29 \n 2014-01-01 11:41:55 \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"migration_job\": {\n \"name\": \"mgrjob-00000003\",\n \"display_name\": \"vol-example\",\n \"src_cg_display_name\": \"vol-iscsi\",\n \"src_cg_name\": \"cg-00000005\",\n \"src_pool_display_name\": \"pool1\",\n \"dst_cg_name\": \"cg-00000006\",\n \"dst_pool_display_name\": \"pool1\",\n \"shipping_display_name\": \"...\",\n \"status\": \"Paused\",\n \"cur_sync_rate_kb_sec\": 0,\n \"shipping_position_mb\": 0,\n \"total_capacity_to_migrate_mb\": 1000,\n \"already_migrated_mb\": 500,\n \"remaining_time_seconds\": null,\n \"created_at\": \"2014-01-01 11:41:29 UTC\",\n \"modified_at\": \"2014-01-01 11:41:55 UTC\"\n }\n }\n}"
},
{
"uri": "/consistency_groups/{volume_cg_id}/migrate",
"method": "POST",
"description": "Migrate a volume to a different pool",
"response": "\n \n mgrjob-00000001 \n 0 \n \n",
"parameters": [
{
"name": "poolname",
"type": "string",
"required": true,
"description": "Pool id of migrated volume.",
"example": "volume1-clone"
},
{
"name": "migratesnap",
"type": "string",
"options": "YES, NO",
"description": "Migrate snapshots"
}
],
"response_json": "{\n \"response\": {\n \"migration_job_name\": \"mgrjob-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/migration_jobs/{migration_cg_id}/pause",
"method": "POST",
"description": "Pause a migration job",
"response": "\n\n cg-00000005 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"cg_name\": \"cg-00000005\",\n \"status\": 0\n }\n}"
},
{
"uri": "/migration_jobs/{migration_cg_id}/continue",
"method": "POST",
"description": "Continue a migration job",
"response": "\n\n cg-00000005 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"cg_name\": \"cg-00000005\",\n \"status\": 0\n }\n}"
},
{
"uri": "/migration_jobs/{migration_cg_id}/abort",
"method": "POST",
"description": "Abort a migration job",
"response": "\n\n cg-00000005 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"cg_name\": \"cg-00000005\",\n \"status\": 0\n }\n}"
},
{
"uri": "/consistency_groups/{volume_cg_id}/clone",
"method": "POST",
"description": "Clones a Volume. If a snapshot ID is provided the new cloned Volume will have the data set of that Snapshot. Otherwise, the dataset of the Volume at the moment the Clone is created",
"parameters": [
{
"name": "name",
"type": "string",
"required": true,
"description": "The name for the new Cloned volume.",
"example": "volume1-clone"
},
{
"name": "snapshot",
"type": "string",
"description": "An optional Snapshot ID.",
"example": "snap-00000002"
}
],
"response": "\n\n cg-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"cg_name\": \"cg-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/consistency_groups/{volume_cg_id}/mirror",
"method": "POST",
"description": "Create a new Asynchronous snapshot-based Remote Mirror relationship with a remote VPSA for this Volume",
"parameters": [
{
"name": "display_name",
"type": "string",
"required": true,
"description": "The name for the Mirror Job.",
"example": "new-mirror"
},
{
"name": "remote_pool",
"description": "Pool ID on the remote VPSA where the Mirrored Volume will be created",
"type": "string",
"required": true,
"example": "pool-00000001"
},
{
"name": "dedupe",
"type": "string",
"options": "YES, NO",
"example": "YES",
"productType": "AFA",
"description": "Enable Dedupe For Mirror."
},
{
"name": "compress",
"type": "string",
"options": "YES, NO",
"productType": "AFA",
"example": "YES",
"description": "Enable compress For Mirror."
},
{
"name": "policy",
"type": "string",
"description": "Snapshot Policy ID for Remote Mirroring.",
"required": true,
"example": [
"policy-00000001",
"policy-00000002"
]
},
{
"name": "new_cg_name",
"description": "Name for the mirrored Volume on the Remote VPSA.",
"required": true,
"type": "string",
"example": "mirrored-volume"
}
],
"response": "\n\n srcjvpsa-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vpsa_mirror_job_name\": \"srcjvpsa-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/quotas",
"method": "GET",
"extension": "json",
"no_header_extension": true,
"description": "fetch volume quotas.",
"parameters": [
{
"name": "scope",
"type": "string",
"required": true,
"description": "quota's type (user or group)",
"example": "user",
"options": "user | group | project"
}
],
"response": "\n\n 0 \n \n \n 25 \n test1 \n 14 \n 0 \n 14 \n project \n 0 \n \n \n 26 \n test77 \n 0 \n 0 \n 18 \n project \n 0 \n \n \n 2 \n 1 day \n 2017-04-23T13:42:40+03:00 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"quotas\": [\n {\n \"source_id\": \"25\",\n \"source_id_display\": \"test1\",\n \"usage\": \"14\",\n \"soft\": \"0\",\n \"hard\": \"14\",\n \"source_type\": \"project\",\n \"nas_type\": \"0\"\n },\n {\n \"source_id\": \"26\",\n \"source_id_display\": \"test77\",\n \"usage\": \"0\",\n \"soft\": \"0\",\n \"hard\": \"18\",\n \"source_type\": \"project\",\n \"nas_type\": \"0\"\n }\n ],\n \"updated\": \"1 day\",\n \"updated_iso\": \"2017-04-23 10:42:40 UTC\",\n \"count\": 2\n }\n}"
},
{
"uri": "/volumes/{id}/quotas",
"method": "POST",
"description": "Add volume quotas",
"parameters": [
{
"name": "quotas",
"type": "Array",
"required": true,
"description": "Array of quota properties",
"example_as_json_string": true,
"example": "[{\"source_id\":44, \"source_type\":\"group\", \"nas_type\":\"uid\", \"limit\":88}]"
},
{
"name": "source_id",
"type": "integer",
"isSub": true,
"required": true,
"description": "source (group/user/project) id"
},
{
"name": "source_type",
"type": "string",
"isSub": true,
"required": true,
"options": "user | group | project"
},
{
"name": "nas_type",
"type": "string",
"isSub": true,
"required": true,
"options": "ad | uid | nas",
"description": "use any value for project"
},
{
"name": "limit",
"type": "string",
"isSub": true,
"description": "quota limit (MB)",
"required": true
}
],
"response": "\n\n \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"errors\": null,\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/quotas_state",
"method": "POST",
"description": "Update quotas state (at least one of uquota/gquota/pquota required)",
"parameters": [
{
"name": "uquota",
"type": "string",
"description": "set user quota state",
"options": "on | off",
"example": "off"
},
{
"name": "gquota",
"type": "string",
"description": "set group quota state",
"example": "on",
"options": "on | off"
},
{
"name": "pquota",
"type": "string",
"description": "set group quota state",
"example": "on",
"options": "on | off"
},
{
"name": "force",
"description": "Force quota state change (skip warnings)",
"type": "string",
"options": "YES | NO"
}
],
"response": "\n\n volume-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/quota",
"method": "GET",
"description": "Get one volume quota",
"parameters": [
{
"name": "scope",
"type": "string",
"required": true,
"description": "quota's type",
"example": "user",
"options": "user | group | project"
},
{
"name": "quota_id",
"description": "NFS id / Project Id",
"type": "Integer",
"example": 100
},
{
"name": "quota_nas",
"description": "NAS name",
"type": "String",
"example": 100
},
{
"name": "quota_ad",
"description": "Active directry name",
"type": "String",
"example": 100
}
],
"response": "\n\n 0 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"value\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/import_quotas",
"method": "POST",
"file_upload": true,
"no_extension": true,
"no_content_type": true,
"description": "Import volume quotas",
"parameters": [
{
"name": "scope",
"type": "string",
"required": true,
"description": "quota's type (user or group)",
"example": "user"
},
{
"name": "file_format",
"description": "Input file format",
"type": "string",
"required": true,
"example": "csv",
"options": "csv | text"
},
{
"name": "file",
"description": "Input file",
"type": "file",
"required": true,
"example": "@/tmp/import.csv"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/quota_projects",
"method": "GET",
"description": "Get quota projects",
"response": "\n\n 0 \n 1 \n \n \n project-00000001 \n test1 \n 1 \n 1 \n False \n 2017-04-06T15:05:19+0300 \n 2017-04-06T15:05:19+0300 \n 1 \n \n \n testdir \n \n \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"projects\": [\n {\n \"name\": \"project-00000001\",\n \"display_name\": \"test1\",\n \"id\": \"1\",\n \"volume_id\": 1,\n \"was_deleted\": 0,\n \"created_at\": \"2017-04-06 12:05:19 UTC\",\n \"modified_at\": \"2017-04-06 12:05:19 UTC\",\n \"directories_count\": 1,\n \"directories\": [\n {\n \"path\": \"testdir\"\n }\n ]\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/volumes/{id}/quota_projects",
"method": "POST",
"description": "Create a quota project",
"parameters": [
{
"name": "display_name",
"type": "string",
"example": "proj1"
},
{
"name": "directories",
"type": "Array",
"description": "Array of directories",
"example_as_json_string": true,
"example": "[\"dir1\", \"dir2\"]"
}
],
"response": "\n\n 0 \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"errors\": null\n }\n}"
},
{
"uri": "/volumes/{id}/quota_projects",
"method": "DELETE",
"description": "Delete a quota project",
"parameters": [
{
"name": "project_id",
"type": "string",
"example": "proj-00000001"
},
{
"name": "force",
"description": "Force delete if project has directories",
"type": "string",
"options": "YES | NO"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/quota_project_directories",
"method": "POST",
"description": "Add directories to Quota Project",
"parameters": [
{
"name": "project_id",
"type": "string",
"example": "proj-00000001"
},
{
"name": "path",
"type": "string",
"description": "directory path",
"example": "dir1"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/quota_project_directories",
"method": "DELETE",
"description": "Remove directory from Quota Project",
"parameters": [
{
"name": "project_id",
"type": "string",
"example": "proj-00000001"
},
{
"name": "path",
"type": "string",
"description": "directory path",
"example": "dir1"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/attach_permissions",
"method": "POST",
"description": "Set volume attach permissions to a server.",
"parameters": [
{
"name": "server_name",
"description": "The attached server.",
"required": true,
"type": "string",
"example": "srv-00000001"
},
{
"name": "read_only",
"description": "Set attach permissions to Read only or Read/Write.",
"required": true,
"type": "boolean"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/performance",
"method": "GET",
"description": "Returns the last 60 data points of performance data for the specified interval.",
"parameters": [
{
"name": "interval",
"type": "integer",
"example": 1,
"description": "The interval between data points, in seconds."
}
],
"response": "\n\n volume-00000001 \n 0 \n 20 \n \n \n 0 \n 0.000000 \n 0.000000 \n 0 \n 0 \n 0.000000 \n 0.000000 \n 0 \n 1386985186 \n \n \n 0 \n 0.000000 \n 0.000000 \n 0 \n 0 \n 0.000000 \n 0.000000 \n 0 \n 1386985187 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"volume_name\": \"volume-00000001\",\n \"status\": 0,\n \"usages\": [\n {\n \"rd_iops\": 0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"point\": 1386985186\n },\n {\n \"rd_iops\": 0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"point\": 1386985187\n }\n ],\n \"count\": 20\n }\n}"
},
{
"uri": "/volumes/{id}/update_protection",
"method": "POST",
"description": "Sets capacity thresholds. A support ticket will be created when your Volume reaches specified capacity thresholds.",
"parameters": [
{
"name": "alertmode",
"type": "integer",
"example": 360,
"description": "Alert me when it is estimated that the Volume will be at full capacity in X minutes."
},
{
"name": "emergencymode",
"type": "integer",
"example": 360,
"description": "When the Volume has less than this number of GB left, the volume will start deleting snapshots, starting with the oldest, and trigger auto expand."
},
{
"name": "capacityhistory",
"type": "integer",
"example": 60,
"description": "Window size in minutes which is used to calculate the rate of which free Volume capacity is consumed. This rate is used to calculate the estimated time until a Volume is full"
},
{
"name": "autoexpand",
"type": "string",
"options": "YES, NO",
"description": "Enable capacity auto expand",
"example": "YES"
},
{
"name": "maxcapacity",
"type": "string",
"example": "300G",
"description": "Max Capacity to expand in GB followed by the letter G."
},
{
"name": "autoexpandby",
"type": "string",
"example": "300G",
"description": "Capacity to expand by in GB followed by the letter G."
}
],
"response": "\n\n volume-00000002 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000002\",\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/update_performance_thresholds",
"method": "POST",
"description": "Sets performance thresholds. A support ticket will be created when your volume reaches specified performance thresholds.",
"parameters": [
{
"name": "read_iops_limit",
"type": "integer",
"example": 5000,
"description": "Alert me when the average read IOPS for this volume exceeds this number of IOPS."
},
{
"name": "read_mbps_limit",
"type": "integer",
"example": 100,
"description": "Alert me when the average read throughput for this volume exceeds this number of MB/s."
},
{
"name": "read_latency_limit",
"type": "integer",
"example": 50,
"description": "Alert me when the average read latency for this volume exceeds this number of ms."
},
{
"name": "write_iops_limit",
"type": "integer",
"example": 5000,
"description": "Alert me when the average write IOPS for this volume exceeds this number of IOPS."
},
{
"name": "write_mbps_limit",
"type": "integer",
"example": 100,
"description": "Alert me when the average write throughput for this volume exceeds this number of MB/s."
},
{
"name": "write_latency_limit",
"type": "integer",
"example": 50,
"description": "Alert me when the average write latency for this volume exceeds this number of ms."
}
],
"response": "\n\n volume-00000005 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000005\",\n \"status\": 0\n }\n}"
},
{
"uri": "/audited_volumes/logs_timerange",
"method": "GET",
"description": "Get the volumes file access auditing log times range in UTC timezone.",
"parameters": [
{
"name": "readable",
"type": "string",
"description": "Include this parameter to get times in readable format like 2020-08-30 13:37:00 UTC. If not included, times are in seconds since epoch UTC.",
"required": false
}
],
"response": "\n\n 2020-08-20 18:23:00 UTC \n 2020-08-30 13:37:00 UTC \n \n",
"response_json": "{\n \"response\": {\n \"from_date_time\": \"2020-08-20 18:23:00 UTC\",\n \"to_date_time\": \"2020-08-30 13:37:00 UTC\"\n }\n}"
},
{
"uri": "/audited_volumes/download",
"method": "GET",
"description": "Get the volumes file access auditing log files, in a single zip file.",
"parameters": [
{
"name": "from",
"type": "string",
"description": "Starting date and time of audit log section to get ('year-month-day hour-minute-seconds' format).",
"required": false,
"example": "2020-08-20 18:23:00"
},
{
"name": "to",
"type": "string",
"description": "Ending date and time of audit log section to get ('year-month-day hour-minute-seconds' format).",
"required": false,
"example": "2020-08-30 13:37:00"
}
],
"redirection": "zadara_audit.zip"
},
{
"uri": "/volumes/{id}/tags",
"method": "GET",
"description": "Get volume tags.",
"response": "\n\n 0 \n 2 \n \n \n tag-00000003 \n key1 \n value1 \n \n \n tag-00000005 \n key2 \n value2 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"tags\": [\n {\n \"name\": \"tag-00000003\",\n \"key\": \"key1\",\n \"value\": \"value1\"\n },\n {\n \"name\": \"tag-00000005\",\n \"key\": \"key2\",\n \"value\": \"value2\"\n }\n ],\n \"count\": 2\n }\n}"
},
{
"uri": "/volumes/{id}/tags",
"method": "POST",
"description": "Create a tag for volume.",
"parameters": [
{
"name": "key",
"type": "string",
"description": "The tag name.",
"required": true,
"example": "tag_key"
},
{
"name": "value",
"type": "string",
"description": "The tag value.",
"required": true,
"example": "tag_value"
}
],
"response": "\n\n tag-00000019 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"tag_name\": \"tag-00000019\",\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/tags/{tag_key}",
"method": "PUT",
"description": "Update a tag for volume.",
"parameters": [
{
"name": "value",
"type": "string",
"description": "The tag new value.",
"required": true,
"example": "tag_value"
}
],
"response": "\n\n tag-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"tag_name\": \"tag-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/volumes/{id}/tags/{tag_key}",
"method": "DELETE",
"description": "Deletes a tag from volume.",
"response": "\n\n tag-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"tag_name\": \"tag-00000003\",\n \"status\": 0\n }\n}"
}
]
},
{
"name": "File Lifecycle",
"description": "Operations involving File Lifecycle.",
"methods": [
{
"uri": "/flc/categories_settings",
"method": "GET",
"description": "Show file lifecycle categories and their file extensions.",
"response": "\n\n 0 \n 12 \n \n \n 13 \n category-00000002 \n Email Data \n pst \n nsf \n ns2 \n ns3 \n ns4 \n box \n ncf \n ntf \n eml \n emlx \n ost \n vcf \n ics \n \n \n 3 \n category-00000003 \n Backup files \n bak \n bkp \n bkf \n \n \n 6 \n category-00000004 \n Disk Images \n iso \n nrg \n img \n tib \n gho \n ghs \n \n \n 9 \n category-00000005 \n Server Virtualization \n vmdk \n nvram \n vmx \n vmxf \n vmtm \n vmem \n vmsn \n vmsd \n hlog \n \n \n 8 \n category-00000006 \n Image files \n bmp \n gif \n jpg \n jpeg \n tif \n tiff \n png \n psd \n \n \n 30 \n category-00000007 \n Documents, Spreadsheets and text files \n doc \n docx \n docm \n dot \n dotx \n dotm \n xls \n xlsx \n xlsm \n xlt \n xltx \n xltm \n xlsb \n xlam \n ppt \n pptx \n pptm \n potx \n potm \n ppam \n ppsx \n ppsm \n mdb \n accdb \n accde \n accdt \n accdr \n txt \n csv \n pdf \n \n \n 11 \n category-00000008 \n Temporary files \n temp \n tmp \n cfa \n ~cr \n loaded_0 \n loaded_1 \n loaded_2 \n loaded_3 \n dmp \n csd \n aso \n \n \n 6 \n category-00000009 \n Audio files \n aiff \n au \n mp3 \n mp4 \n wav \n wma \n \n \n 6 \n category-0000000a \n Archive files \n zip \n tar \n cab \n gz \n rar \n z \n \n \n 1 \n category-0000000b \n Installers renamed \n ext1 \n \n \n 5 \n category-0000000f \n Video files \n m4v \n mov \n avi \n mpeg \n mpg \n \n \n 1 \n category-00000010 \n newCat \n ext2 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"categories\": [\n {\n \"extensions_count\": 13,\n \"category_ext_name\": \"category-00000002\",\n \"category_name\": \"Email Data\",\n \"extension\": [\n \"pst\",\n \"nsf\",\n \"ns2\",\n \"ns3\",\n \"ns4\",\n \"box\",\n \"ncf\",\n \"ntf\",\n \"eml\",\n \"emlx\",\n \"ost\",\n \"vcf\",\n \"ics\"\n ]\n },\n {\n \"extensions_count\": 3,\n \"category_ext_name\": \"category-00000003\",\n \"category_name\": \"Backup files\",\n \"extension\": [\n \"bak\",\n \"bkp\",\n \"bkf\"\n ]\n },\n {\n \"extensions_count\": 6,\n \"category_ext_name\": \"category-00000004\",\n \"category_name\": \"Disk Images\",\n \"extension\": [\n \"iso\",\n \"nrg\",\n \"img\",\n \"tib\",\n \"gho\",\n \"ghs\"\n ]\n },\n {\n \"extensions_count\": 9,\n \"category_ext_name\": \"category-00000005\",\n \"category_name\": \"Server Virtualization\",\n \"extension\": [\n \"vmdk\",\n \"nvram\",\n \"vmx\",\n \"vmxf\",\n \"vmtm\",\n \"vmem\",\n \"vmsn\",\n \"vmsd\",\n \"hlog\"\n ]\n },\n {\n \"extensions_count\": 8,\n \"category_ext_name\": \"category-00000006\",\n \"category_name\": \"Image files\",\n \"extension\": [\n \"bmp\",\n \"gif\",\n \"jpg\",\n \"jpeg\",\n \"tif\",\n \"tiff\",\n \"png\",\n \"psd\"\n ]\n },\n {\n \"extensions_count\": 30,\n \"category_ext_name\": \"category-00000007\",\n \"category_name\": \"Documents, Spreadsheets and text files\",\n \"extension\": [\n \"doc\",\n \"docx\",\n \"docm\",\n \"dot\",\n \"dotx\",\n \"dotm\",\n \"xls\",\n \"xlsx\",\n \"xlsm\",\n \"xlt\",\n \"xltx\",\n \"xltm\",\n \"xlsb\",\n \"xlam\",\n \"ppt\",\n \"pptx\",\n \"pptm\",\n \"potx\",\n \"potm\",\n \"ppam\",\n \"ppsx\",\n \"ppsm\",\n \"mdb\",\n \"accdb\",\n \"accde\",\n \"accdt\",\n \"accdr\",\n \"txt\",\n \"csv\",\n \"pdf\"\n ]\n },\n {\n \"extensions_count\": 11,\n \"category_ext_name\": \"category-00000008\",\n \"category_name\": \"Temporary files\",\n \"extension\": [\n \"temp\",\n \"tmp\",\n \"cfa\",\n \"~cr\",\n \"loaded_0\",\n \"loaded_1\",\n \"loaded_2\",\n \"loaded_3\",\n \"dmp\",\n \"csd\",\n \"aso\"\n ]\n },\n {\n \"extensions_count\": 6,\n \"category_ext_name\": \"category-00000009\",\n \"category_name\": \"Audio files\",\n \"extension\": [\n \"aiff\",\n \"au\",\n \"mp3\",\n \"mp4\",\n \"wav\",\n \"wma\"\n ]\n },\n {\n \"extensions_count\": 6,\n \"category_ext_name\": \"category-0000000a\",\n \"category_name\": \"Archive files\",\n \"extension\": [\n \"zip\",\n \"tar\",\n \"cab\",\n \"gz\",\n \"rar\",\n \"z\"\n ]\n },\n {\n \"extensions_count\": 1,\n \"category_ext_name\": \"category-0000000b\",\n \"category_name\": \"Installers renamed\",\n \"extension\": \"ext1\"\n },\n {\n \"extensions_count\": 5,\n \"category_ext_name\": \"category-0000000f\",\n \"category_name\": \"Video files\",\n \"extension\": [\n \"m4v\",\n \"mov\",\n \"avi\",\n \"mpeg\",\n \"mpg\"\n ]\n },\n {\n \"extensions_count\": 1,\n \"category_ext_name\": \"category-00000010\",\n \"category_name\": \"newCat\",\n \"extension\": \"ext2\"\n }\n ],\n \"count\": 12\n }\n}"
},
{
"uri": "/flc/create_category",
"method": "POST",
"description": "Create a new file lifecycle category with its file extensions.",
"parameters": [
{
"name": "displayname",
"type": "string",
"required": true,
"description": "Category name.",
"example": "Video Files"
},
{
"name": "file_extensions",
"type": "string",
"required": true,
"description": "File extensions list.",
"example": "avi,mpg,mpeg"
}
],
"response": "\n\n 0 \n category-00000010 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"category_ext_name\": \"category-00000010\"\n }\n}"
},
{
"uri": "/flc/update_category",
"method": "POST",
"description": "Update an existing file lifecycle category to change its file extensions.",
"parameters": [
{
"name": "category",
"type": "string",
"required": true,
"description": "Existing category ID ('category-ext-name' field).",
"example": "category-00000010"
},
{
"name": "file_extensions",
"type": "string",
"required": true,
"description": "File extensions list.",
"example": "avi,mpg,mpeg"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/flc/rename_category",
"method": "POST",
"description": "Rename an existing file lifecycle category.",
"parameters": [
{
"name": "category",
"type": "string",
"required": true,
"description": "Existing category ID ('category-ext-name' field).",
"example": "category-00000010"
},
{
"name": "displayname",
"type": "string",
"required": true,
"description": "New category name.",
"example": "Audio Files"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/flc/delete_category",
"method": "DELETE",
"description": "Delete a file lifecycle category.",
"parameters": [
{
"name": "category",
"type": "string",
"required": true,
"description": "Category ID ('category-ext-name' field).",
"example": "category-00000010"
}
],
"response": "\n\n 0 \n ",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
}
]
},
{
"name": "File Lifecycle Policies",
"description": "Operations involving File Lifecycle Policies.",
"methods": [
{
"uri": "/flc_policies",
"method": "GET",
"description": "Show file lifecycle policies.",
"parameters": [
{
"name": "first",
"type": "integer",
"required": false,
"description": "Retrieve policies starting from the given index. Can be used for pagination with the number parameter."
},
{
"name": "number",
"type": "integer",
"required": false,
"description": "Retrieve the given number of policies. Can be used for pagination with the first parameter."
},
{
"name": "order_by",
"type": "string",
"required": false,
"description": "Order policies by given attribute."
},
{
"name": "descend",
"type": "string",
"required": false,
"options": "YES | NO",
"description": "Controls order direction."
}
],
"response": "\n\n 0 \n 2 \n \n \n lc-policy-00000002 \n policy1 \n YES \n YES \n NO \n { \"$and\": [ { \"$in\": [\"$extension\", [\"log\", \"tmp\"]] }, { \"$gt\": [\"$size\", 1024] } ] } \n \n \n expire \n 2021-04-19T12:02:59+0300 \n 2021-04-20T12:12:56+0300 \n \n \n lc-policy-00000003 \n policy2 \n YES \n NO \n NO \n { \"$and\": [ { \"$in\": [\"$extension\", [\"log\", \"tmp\"]] }, { \"$gt\": [\"$size\", 1024] } ] } \n /tmp \n /var,/etc \n expire \n 2021-04-20T11:02:08+0300 \n 2021-04-20T12:43:55+0300 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"lc_policies\": [\n {\n \"name\": \"lc-policy-00000002\",\n \"display_name\": \"policy1\",\n \"enabled\": \"YES\",\n \"dry_run_mode\": \"YES\",\n \"use_recycle_bin\": \"NO\",\n \"file_selection_criteria\": \"{ \\\"$and\\\": [ { \\\"$in\\\": [\\\"$extension\\\", [\\\"log\\\", \\\"tmp\\\"]] }, { \\\"$gt\\\": [\\\"$size\\\", 1024] } ] }\",\n \"whitelist_paths\": null,\n \"blacklist_paths\": null,\n \"action\": \"expire\",\n \"created_at\": \"2021-04-19 09:02:59 UTC\",\n \"modified_at\": \"2021-04-20 09:12:56 UTC\"\n },\n {\n \"name\": \"lc-policy-00000003\",\n \"display_name\": \"policy2\",\n \"enabled\": \"YES\",\n \"dry_run_mode\": \"NO\",\n \"use_recycle_bin\": \"NO\",\n \"file_selection_criteria\": \"{ \\\"$and\\\": [ { \\\"$in\\\": [\\\"$extension\\\", [\\\"log\\\", \\\"tmp\\\"]] }, { \\\"$gt\\\": [\\\"$size\\\", 1024] } ] }\",\n \"whitelist_paths\": \"/tmp\",\n \"blacklist_paths\": \"/var,/etc\",\n \"action\": \"expire\",\n \"created_at\": \"2021-04-20 08:02:08 UTC\",\n \"modified_at\": \"2021-04-20 09:43:55 UTC\"\n }\n ],\n \"count\": 2\n }\n}"
},
{
"uri": "/flc_policies",
"method": "GET",
"description": "Show file lifecycle policies attached to a given volume.",
"parameters": [
{
"name": "volume_name",
"type": "string",
"required": false,
"description": "The volume to filter policies by."
},
{
"name": "first",
"type": "integer",
"required": false,
"description": "Retrieve policies starting from the given index. Can be used for pagination with the number parameter."
},
{
"name": "number",
"type": "integer",
"required": false,
"description": "Retrieve the given number of policies. Can be used for pagination with the first parameter."
},
{
"name": "order_by",
"type": "string",
"required": false,
"description": "Order policies by given attribute."
},
{
"name": "descend",
"type": "string",
"required": false,
"options": "YES | NO",
"description": "Controls order direction."
}
],
"response": "\n \n",
"response_json": "{\n \"TODO\": null\n}"
},
{
"uri": "/flc_policies/rules",
"method": "GET",
"description": "Show the rules attaching file lifecycle policies to volumes.",
"parameters": [
{
"name": "volume_name",
"type": "string",
"required": false,
"description": "Retrieve only rules relevant to the given volume."
},
{
"name": "policy_name",
"type": "string",
"required": false,
"description": "Retrieve only rules relevant to the given policy."
},
{
"name": "first",
"type": "integer",
"required": false,
"description": "Retrieve rules starting from the given index. Can be used for pagination with the number parameter."
},
{
"name": "number",
"type": "integer",
"required": false,
"description": "Retrieve the given number of rules. Can be used for pagination with the first parameter."
}
],
"response": "\n \n",
"response_json": "{\n \"TODO\": null\n}"
},
{
"uri": "/flc_policies",
"method": "POST",
"description": "Create a new file lifecycle policy.",
"parameters": [
{
"name": "display_name",
"type": "string",
"required": true,
"description": "Policy name.",
"example": "my_policy"
},
{
"name": "file_selection_criteria",
"type": "string",
"required": true,
"description": "The criteria by which the policy files will be selected. Should be in a MongoDB $match aggregation format.",
"example": "{ \"$and\": [ { \"$in\": [\"$extension\", [\"log\", \"tmp\"]] }, { \"$gt\": [\"$size\", 1024] } ] }"
},
{
"name": "lc_action",
"type": "string",
"required": true,
"description": "The action that the policy performs on the selected files.",
"options": "archive | expire",
"example": "expire"
},
{
"name": "enabled",
"type": "string",
"required": false,
"description": "Controls enablement of the policy after it is created.",
"options": "YES | NO"
},
{
"name": "dry_run",
"type": "string",
"required": false,
"description": "When the policy is in dry run mode, it'll only print its actions to the log instead of actually performing them.",
"options": "YES | NO"
},
{
"name": "use_recycle_bin",
"type": "string",
"required": false,
"description": "When using recycle bin, files that are handled by the policy are also copied to the recycle bin.",
"options": "YES | NO"
},
{
"name": "whitelist_paths",
"type": "string",
"required": false,
"description": "Comma delimited list of paths that the policy should only run on them."
},
{
"name": "blacklist_paths",
"type": "string",
"required": false,
"description": "Comma delimited list of paths that the policy should not run on."
},
{
"name": "dest_obs_name",
"type": "string",
"required": false,
"description": "Destination object storage to archive files to. Relevant only for archive policy."
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/flc_policies/{id}",
"method": "PUT",
"description": "Updates an existing file lifecycle policy.",
"parameters": [
{
"name": "display_name",
"type": "string",
"required": false,
"description": "Policy name.",
"example": "my_policy"
},
{
"name": "file_selection_criteria",
"type": "string",
"required": false,
"description": "The criteria by which the policy files will be selected. Should be in a MongoDB $match aggregation format.",
"example": "{ \"$and\": [ { \"$in\": [\"$extension\", [\"log\", \"tmp\"]] }, { \"$gt\": [\"$size\", 1024] } ] }"
},
{
"name": "lc_action",
"type": "string",
"required": false,
"description": "The action that the policy performs on the selected files.",
"options": "archive | expire",
"example": "expire"
},
{
"name": "enabled",
"type": "string",
"required": false,
"description": "Controls enablement of the policy after it is created.",
"options": "YES | NO"
},
{
"name": "dry_run",
"type": "string",
"required": false,
"description": "When the policy is in dry run mode, it'll only print its actions to the log instead of actually performing them.",
"options": "YES | NO"
},
{
"name": "use_recycle_bin",
"type": "string",
"required": false,
"description": "When using recycle bin, files that are handled by the policy are also copied to the recycle bin.",
"options": "YES | NO"
},
{
"name": "whitelist_paths",
"type": "string",
"required": false,
"description": "Comma delimited list of paths that the policy should only run on them."
},
{
"name": "blacklist_paths",
"type": "string",
"required": false,
"description": "Comma delimited list of paths that the policy should not run on."
},
{
"name": "dest_obs_name",
"type": "string",
"required": false,
"description": "Destination object storage to archive files to."
}
],
"response": "\n\n lc-policy-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"lc_policy_name\": \"lc-policy-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/flc_policies/{id}",
"method": "GET",
"description": "Retreive a specific file lifecycle policy.",
"response": "\n\n 0 \n \n lc-policy-00000002 \n policy2 \n YES \n YES \n NO \n { \"$and\": [ { \"$in\": [\"$extension\", [\"log\", \"tmp\"]] }, { \"$gt\": [\"$size\", 1024] } ] } \n \n \n expire \n 2021-04-19T12:02:59+0300 \n 2021-04-20T12:12:56+0300 \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"life_cycle_policy\": {\n \"name\": \"lc-policy-00000002\",\n \"display_name\": \"policy2\",\n \"enabled\": \"YES\",\n \"dry_run_mode\": \"YES\",\n \"use_recycle_bin\": \"NO\",\n \"file_selection_criteria\": \"{ \\\"$and\\\": [ { \\\"$in\\\": [\\\"$extension\\\", [\\\"log\\\", \\\"tmp\\\"]] }, { \\\"$gt\\\": [\\\"$size\\\", 1024] } ] }\",\n \"whitelist_paths\": null,\n \"blacklist_paths\": null,\n \"action\": \"expire\",\n \"created_at\": \"2021-04-19 09:02:59 UTC\",\n \"modified_at\": \"2021-04-20 09:12:56 UTC\"\n }\n }\n}"
},
{
"uri": "/flc_policies/{id}",
"method": "DELETE",
"description": "Delete a file lifecycle policy.",
"response": "\n\n lc-policy-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"lc_policy_name\": \"lc-policy-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/flc_policies/scheduling",
"method": "PUT",
"description": "Updates lifecycle policies run time scheduling.",
"parameters": [
{
"name": "policy_start_time",
"type": "string",
"required": false,
"description": "The start time in seconds from 00:00 AM.",
"example": 9700
},
{
"name": "policy_interval",
"type": "integer",
"required": false,
"description": "The interval in seconds between running policies.",
"example": 86400
}
],
"response": "\n \n",
"response_json": "{\n \"TODO\": null\n}"
},
{
"uri": "/flc_policies/recycle_bin",
"method": "PUT",
"description": "Configures the recycle bin.",
"parameters": [
{
"name": "retention_time",
"type": "string",
"required": false,
"description": "The time in seconds for retaining files in the recycle bin.",
"example": 2592000
}
],
"response": "\n \n",
"response_json": "{\n \"TODO\": null\n}"
},
{
"uri": "/flc_policies/{id}/pause",
"method": "PUT",
"description": "Pause a file lifecycle policy for a given volume.",
"parameters": [
{
"name": "volume_name",
"type": "string",
"required": true,
"description": "The volume to pause the policy for."
}
],
"response": "\n\n lc-policy-00000005 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"lc_policy_name\": \"lc-policy-00000005\",\n \"status\": 0\n }\n}"
},
{
"uri": "/flc_policies/{id}/resume",
"method": "PUT",
"description": "Resume a file lifecycle policy for a given volume.",
"parameters": [
{
"name": "volume_name",
"type": "string",
"required": true,
"description": "The volume to resume the policy for."
}
],
"response": "\n\n lc-policy-00000005 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"lc_policy_name\": \"lc-policy-00000005\",\n \"status\": 0\n }\n}"
},
{
"uri": "/flc_policies/{id}/attach",
"method": "PUT",
"description": "Attach a volume to a file lifecycle policy.",
"parameters": [
{
"name": "volume_name",
"type": "string",
"required": true,
"description": "The volume to attach the policy to."
}
],
"response": "\n \n",
"response_json": "{\n \"TODO\": null\n}"
},
{
"uri": "/flc_policies/{id}/detach",
"method": "PUT",
"description": "Detach a volume from a file lifecycle policy.",
"parameters": [
{
"name": "volume_name",
"type": "string",
"required": true,
"description": "The volume to detach the policy from."
}
],
"response": "\n \n",
"response_json": "{\n \"TODO\": null\n}"
}
]
},
{
"name": "Servers",
"description": "Operations involving Servers.",
"methods": [
{
"uri": "/servers",
"method": "GET",
"description": "Show all Servers.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n srv-00000001 \n server01 \n 127.0.0.1 \n \n 0 \n 0 \n Active \n \n no \n 2013-09-26 18:00:00 \n 2013-09-26 18:00:00 \n 2013-09-26 11:51:40 \n 2013-09-26 11:51:40 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"servers\": [\n {\n \"name\": \"srv-00000001\",\n \"display_name\": \"server01\",\n \"iqn\": \"127.0.0.1\",\n \"iscsi_ip\": null,\n \"ipsec_iscsi\": \"0\",\n \"ipsec_nfs\": \"0\",\n \"status\": \"Active\",\n \"os\": null,\n \"registered\": \"no\",\n \"last_check_time\": \"2013-09-26 18:00:00 UTC\",\n \"last_state_change_time\": \"2013-09-26 18:00:00 UTC\",\n \"created_at\": \"2013-09-26 11:51:40 UTC\",\n \"modified_at\": \"2013-09-26 11:51:40 UTC\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/servers/{id}",
"method": "GET",
"description": "Show a single Server.",
"response": "\n\n 0 \n \n srv-00000001 \n server01 \n 127.0.0.1 \n \n 0 \n 0 \n Active \n \n no \n 2013-09-26 18:00:00 \n 2013-09-26 18:00:00 \n 2013-09-26 11:51:40 \n 2013-09-26 11:51:40 \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"server\": {\n \"name\": \"srv-00000001\",\n \"display_name\": \"server01\",\n \"iqn\": \"127.0.0.1\",\n \"iscsi_ip\": null,\n \"ipsec_iscsi\": \"0\",\n \"ipsec_nfs\": \"0\",\n \"status\": \"Active\",\n \"os\": null,\n \"registered\": \"no\",\n \"last_check_time\": \"2013-09-26 18:00:00 UTC\",\n \"last_state_change_time\": \"2013-09-26 18:00:00 UTC\",\n \"created_at\": \"2013-09-26 11:51:40 UTC\",\n \"modified_at\": \"2013-09-26 11:51:40 UTC\"\n }\n }\n}"
},
{
"uri": "/servers",
"method": "POST",
"description": "Create a new Server. IQN or iSCSI ip or FC WWPN must be provided.",
"parameters": [
{
"name": "display_name",
"type": "string",
"required": true,
"example": "my-server",
"description": "The new server display name"
},
{
"name": "os",
"type": "string",
"example": "Windows",
"description": "Server's OS",
"options": "Windows | Linux | Solaris | AIX | ESXi"
},
{
"name": "vpsachapuser",
"type": "string",
"example": "johndoe",
"description": "VPSA chap user."
},
{
"name": "vpsachapsecret",
"type": "string",
"description": "VPSA chap secret. 12-16 characters.",
"example": "tgbujmedcrfv"
},
{
"name": "hostchapuser",
"type": "string",
"description": "Host chap user."
},
{
"name": "hostchapsecret",
"type": "string",
"description": "Host chap secret. 12-16 characters."
},
{
"name": "iqn",
"type": "string",
"description": "iSCSI Qualified Name"
},
{
"name": "iscsi",
"type": "string",
"description": "The server's iSCSI IP",
"example": "10.11.12.13"
},
{
"name": "ipsec_iscsi",
"type": "string",
"options": "YES, NO",
"example": "YES",
"description": "Enable ipsec for iscsi for the server"
},
{
"name": "ipsec_nfs",
"type": "string",
"options": "YES, NO",
"description": "Enable ipsec for nfs for the server"
},
{
"name": "wwpns",
"type": "Array",
"description": "Fibre channel wwpns",
"example_as_json_string": true,
"example": "[\"21000024ff7bc174\", \"21000024ff7bc175\"]"
},
{
"name": "force",
"type": "string",
"options": "YES, NO",
"required": false
}
],
"response": "\n\n srv-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"server_name\": \"srv-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/servers/{id}",
"method": "DELETE",
"description": "Delete a Server.",
"response": "\n\n srv-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"server_name\": \"srv-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/servers/{id}/sessions",
"method": "GET",
"description": "Lists server's sessions.",
"response": "\n\n 0 \n 1 \n \n \n ISCSI \n iqn.1991-05.com.microsoft:vm91-win2008r2.zadara.lab \n iqn.test.com.zadarastorage:vsa-00000000:1 \n 1 \n 0 \n YES \n srv-00000003 \n VM91_WIN2008R2 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"sessions\": [\n {\n \"access_type\": \"ISCSI\",\n \"initiator\": \"iqn.1991-05.com.microsoft:vm91-win2008r2.zadara.lab\",\n \"target\": \"iqn.test.com.zadarastorage:vsa-00000000:1\",\n \"count\": 1,\n \"vc\": 0,\n \"connected\": 0,\n \"server_name\": \"srv-00000003\",\n \"server_display_name\": \"VM91_WIN2008R2\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/servers/session",
"method": "DELETE",
"description": "Delete server's session.",
"parameters": [
{
"name": "initiator",
"type": "string",
"required": true,
"example": "2109034534",
"description": "Session's Initiator"
},
{
"name": "target",
"type": "string",
"example": "2444034534",
"required": true,
"description": "Session's Target"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/servers/{id}/rename",
"method": "POST",
"description": "Rename a Server.",
"parameters": [
{
"name": "new_name",
"type": "string",
"required": true,
"description": "The server new name",
"example": "new-server-name"
}
],
"response": "\n\n srv-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"server_name\": \"srv-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/servers/{id}/config",
"method": "POST",
"description": "Update a Server configuration.",
"parameters": [
{
"name": "display_name",
"type": "string",
"description": "The server display name"
},
{
"name": "os",
"type": "string",
"example": "Windows",
"description": "Server's OS",
"options": "Windows | Linux | Solaris | AIX | ESXi"
},
{
"name": "vpsachapuser",
"type": "string",
"description": "VPSA chap user."
},
{
"name": "vpsachapsecret",
"type": "string",
"description": "VPSA chap secret. 12-16 characters."
},
{
"name": "hostchapuser",
"type": "string",
"description": "Host chap user."
},
{
"name": "hostchapsecret",
"type": "string",
"example": "qscfthnjgfrtyu",
"description": "Host chap secret. 12-16 characters."
},
{
"name": "iqn",
"type": "string"
},
{
"name": "iscsi",
"type": "string",
"description": "The server's iSCSI IP"
},
{
"name": "ipsec_iscsi",
"type": "string",
"options": "YES, NO"
},
{
"name": "ipsec_nfs",
"type": "string",
"options": "YES, NO"
},
{
"name": "monitoring",
"type": "string",
"options": "YES, NO",
"description": "connectivity monitoring"
},
{
"name": "remove_wwpns",
"type": "Array",
"description": "wwpns to remove"
},
{
"name": "add_wwpns",
"type": "Array",
"description": "wwpns to add"
},
{
"name": "force",
"type": "string",
"options": "YES, NO",
"required": false
}
],
"response": "\n\n srv-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"server_name\": \"srv-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/servers/{id}/volumes",
"method": "GET",
"description": "Returns a list of Volumes attached to the Server.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n volume-00000001 \n volume \n volume \n cg-00000001 \n NO \n poolrenamed \n pool-00000001 \n In-use \n 300 \n server \n BLOCK \n YES \n NO \n ISCSI \n \n \n NO \n NO \n iqn.2011-04.com.zadarastorage:vsa-000007bb:1 \n 0 \n \n 0 \n 0 \n 0 \n 0 \n 2013-09-26 00:42:30 \n 2013-09-27 00:24:32 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"volumes\": [\n {\n \"name\": \"volume-00000001\",\n \"display_name\": \"volume\",\n \"cg_display_name\": \"volume\",\n \"cg_name\": \"cg-00000001\",\n \"cg_user_created\": \"NO\",\n \"pool_display_name\": \"poolrenamed\",\n \"pool_name\": \"pool-00000001\",\n \"status\": \"In-use\",\n \"virtual_capacity\": 300,\n \"server_name\": \"server\",\n \"data_type\": \"BLOCK\",\n \"thin\": \"YES\",\n \"encryption\": \"NO\",\n \"access_type\": \"ISCSI\",\n \"read_only\": null,\n \"export_name\": null,\n \"mount_sync\": \"NO\",\n \"atime_update\": \"NO\",\n \"target\": \"iqn.2011-04.com.zadarastorage:vsa-000007bb:1\",\n \"lun\": \"0\",\n \"cache\": null,\n \"read_iops_limit\": \"0\",\n \"read_mbps_limit\": \"0\",\n \"write_iops_limit\": \"0\",\n \"write_mbps_limit\": \"0\",\n \"created_at\": \"2013-09-26 00:42:30 UTC\",\n \"modified_at\": \"2013-09-27 00:24:32 UTC\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/servers/{id}/volumes",
"method": "POST",
"description": "Attach Volume to Server(s).",
"parameters": [
{
"name": "id",
"type": "string",
"description": "Comma-separated list of server IDs.",
"required": true
},
{
"name": "volume_name",
"type": "string",
"required": true,
"example": "volume-00000001",
"description": "The volume ID."
},
{
"name": "access_type",
"type": "string",
"required": true,
"options": "NFS, SMB, ISCSI",
"example": "ISCSI",
"description": "NFS/SMB for NAS, ISCSI for Block."
},
{
"name": "lun",
"type": "integer",
"required": false,
"example": 1
},
{
"name": "readonly",
"type": "string",
"required": false,
"options": "YES, NO",
"description": "Relevant only to NFS/SMB"
},
{
"name": "force",
"type": "string",
"required": false,
"options": "YES, NO",
"description": "Required only when volume is already attached to another server."
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/servers/{id}/performance",
"method": "GET",
"description": "Returns the last 60 data points of performance data for the specified interval.",
"parameters": [
{
"name": "interval",
"type": "integer",
"example": 1,
"description": "The interval between data points, in seconds."
}
],
"response": "\n\n RaidGroup-4 \n 0 \n 20 \n \n \n 0 \n 0.000000 \n 0.000000 \n 0 \n 0 \n 0.000000 \n 0.000000 \n 0 \n 1386985241 \n \n \n 0 \n 0.000000 \n 0.000000 \n 0 \n 0 \n 0.000000 \n 0.000000 \n 0 \n 1386985242 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"server_name\": \"RaidGroup-4\",\n \"status\": 0,\n \"usages\": [\n {\n \"rd_iops\": 0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"point\": 1386985241\n },\n {\n \"rd_iops\": 0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"point\": 1386985242\n }\n ],\n \"count\": 20\n }\n}"
},
{
"uri": "/servers/{id}/tags",
"method": "GET",
"description": "Get server tags.",
"response": "\n\n 0 \n 2 \n \n \n tag-00000003 \n key1 \n value1 \n \n \n tag-00000005 \n key2 \n value2 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"tags\": [\n {\n \"name\": \"tag-00000003\",\n \"key\": \"key1\",\n \"value\": \"value1\"\n },\n {\n \"name\": \"tag-00000005\",\n \"key\": \"key2\",\n \"value\": \"value2\"\n }\n ],\n \"count\": 2\n }\n}"
},
{
"uri": "/servers/{id}/tags",
"method": "POST",
"description": "Create a tag for server.",
"parameters": [
{
"name": "key",
"type": "string",
"description": "The tag name.",
"required": true,
"example": "tag_key"
},
{
"name": "value",
"type": "string",
"description": "The tag value.",
"required": true,
"example": "tag_value"
}
],
"response": "\n\n tag-00000019 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"tag_name\": \"tag-00000019\",\n \"status\": 0\n }\n}"
},
{
"uri": "/servers/{id}/tags/{tag_key}",
"method": "PUT",
"description": "Update a tag for server.",
"parameters": [
{
"name": "value",
"type": "string",
"description": "The tag new value.",
"required": true,
"example": "tag_value"
}
],
"response": "\n\n tag-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"tag_name\": \"tag-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/servers/{id}/tags/{tag_key}",
"method": "DELETE",
"description": "Deletes a tag from server.",
"response": "\n\n tag-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"tag_name\": \"tag-00000003\",\n \"status\": 0\n }\n}"
}
]
},
{
"name": "Controllers",
"description": "Operations for Controllers.",
"methods": [
{
"uri": "/vcontrollers",
"method": "GET",
"description": "Get a list of Controllers.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 2 \n \n \n vsa-00000038-vc-1 \n vsa-00000038-vc-1 \n 1 \n standby \n iqn.2011-04.com.zadarastorage:vsa-00000038:1 \n 3.112.112.2 \n 2001:db8:85a3::8a2e:370:7002 \n 10.2.10.40 \n 2001:db8:85a3::8a2e:370:7002 \n 20.01-179 \n ok \n ok \n myvpsa \n L4Jx5xidZDEH \n \n \n ABCE2144EDCD42259CF8C97D78F82BE3 \n 0 \n 0 \n qa10-sn1 \n 20 \n 95 \n 90 \n 95 \n 95 \n YES \n 1 \n YES \n round-robin \n zone_0 \n zone_0 \n UTF-8 \n CP850 \n B8A379E4051348BDA3BE4D1DC3BB24A6 \n \n 0 \n not-applicable \n YES \n \n \n vsa-00000038-vc-0 \n vsa-00000038-vc-0 \n 0 \n active \n iqn.2011-04.com.zadarastorage:vsa-00000038:1 \n 10.2.10.27 \n \n 10.2.10.27 \n \n 20.01-179 \n ok \n ok \n myvpsa \n L4Jx5xidZDEH \n \n \n ABCE2144EDCD42259CF8C97D78F82BE3 \n 0 \n 0 \n qa10-sn5 \n 20 \n 95 \n 90 \n 95 \n 95 \n YES \n 1 \n YES \n round-robin \n zone_0 \n zone_0 \n UTF-8 \n CP850 \n B8A379E4051348BDA3BE4D1DC3BB24A6 \n 2020-01-26T08:46:25+0200 \n 0 \n normal \n YES \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"vcontrollers\": [\n {\n \"name\": \"vsa-00000038-vc-1\",\n \"display_name\": \"vsa-00000038-vc-1\",\n \"index\": \"1\",\n \"state\": \"standby\",\n \"target\": \"iqn.2011-04.com.zadarastorage:vsa-00000038:1\",\n \"iscsi_ip\": \"3.112.112.2\",\n \"iscsi_ipv6\": \"2001:db8:85a3::8a2e:370:7002\",\n \"mgmt_ip\": \"10.2.10.40\",\n \"mgmt_ipv6\": \"2001:db8:85a3::8a2e:370:7002\",\n \"software_ver\": \"20.01-179\",\n \"heartbeat1\": \"ok\",\n \"heartbeat2\": \"ok\",\n \"vpsa_chap_user\": \"myvpsa\",\n \"vpsa_chap_secret\": \"L4Jx5xidZDEH\",\n \"host_chap_user\": null,\n \"host_chap_secret\": null,\n \"ike_psk\": \"ABCE2144EDCD42259CF8C97D78F82BE3\",\n \"encryption_password_set\": \"0\",\n \"is_encryption_active\": \"0\",\n \"sn_host\": \"qa10-sn1\",\n \"cache_size\": 20,\n \"cpu_usage_alert\": 95,\n \"mem_usage_alert\": 90,\n \"cpu_docker_usage_alert\": 95,\n \"mem_docker_usage_alert\": 95,\n \"recycle_bin\": \"YES\",\n \"dm_concurrency_level\": 1,\n \"nfs4_disable_idmapping\": \"YES\",\n \"raid_read_mode\": \"round-robin\",\n \"allocation_zone_name\": \"zone_0\",\n \"allocation_zone_display_name\": \"zone_0\",\n \"smb_unix_charset\": \"UTF-8\",\n \"smb_dos_charset\": \"CP850\",\n \"vpsa_uuid\": \"B8A379E4051348BDA3BE4D1DC3BB24A6\",\n \"sod_end_time\": null,\n \"wwpn_count\": 0,\n \"integrity_status\": \"not-applicable\",\n \"iser_support\": \"YES\"\n },\n {\n \"name\": \"vsa-00000038-vc-0\",\n \"display_name\": \"vsa-00000038-vc-0\",\n \"index\": \"0\",\n \"state\": \"active\",\n \"target\": \"iqn.2011-04.com.zadarastorage:vsa-00000038:1\",\n \"iscsi_ip\": \"10.2.10.27\",\n \"iscsi_ipv6\": null,\n \"mgmt_ip\": \"10.2.10.27\",\n \"mgmt_ipv6\": null,\n \"software_ver\": \"20.01-179\",\n \"heartbeat1\": \"ok\",\n \"heartbeat2\": \"ok\",\n \"vpsa_chap_user\": \"myvpsa\",\n \"vpsa_chap_secret\": \"L4Jx5xidZDEH\",\n \"host_chap_user\": null,\n \"host_chap_secret\": null,\n \"ike_psk\": \"ABCE2144EDCD42259CF8C97D78F82BE3\",\n \"encryption_password_set\": \"0\",\n \"is_encryption_active\": \"0\",\n \"sn_host\": \"qa10-sn5\",\n \"cache_size\": 20,\n \"cpu_usage_alert\": 95,\n \"mem_usage_alert\": 90,\n \"cpu_docker_usage_alert\": 95,\n \"mem_docker_usage_alert\": 95,\n \"recycle_bin\": \"YES\",\n \"dm_concurrency_level\": 1,\n \"nfs4_disable_idmapping\": \"YES\",\n \"raid_read_mode\": \"round-robin\",\n \"allocation_zone_name\": \"zone_0\",\n \"allocation_zone_display_name\": \"zone_0\",\n \"smb_unix_charset\": \"UTF-8\",\n \"smb_dos_charset\": \"CP850\",\n \"vpsa_uuid\": \"B8A379E4051348BDA3BE4D1DC3BB24A6\",\n \"sod_end_time\": \"2020-01-26T08:46:25+0200\",\n \"wwpn_count\": 0,\n \"integrity_status\": \"normal\",\n \"iser_support\": \"YES\"\n }\n ],\n \"count\": 2\n }\n}"
},
{
"uri": "/vcontrollers/virtual_networks",
"method": "GET",
"description": "Get a list of Controller Virtual Networks.",
"response": "\n\n 0 \n 1 \n \n \n 0 \n 10.213.44.2 \n \n 10.213.44.1 \n \n 255.255.255.252 \n \n 62 \n vni0 \n 13 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"vnis\": [\n {\n \"id\": 0,\n \"ip\": \"10.213.44.2\",\n \"ipv6\": null,\n \"gateway\": \"10.213.44.1\",\n \"ipv6_gateway\": null,\n \"netmask\": \"255.255.255.252\",\n \"ipv6_netmask\": null,\n \"vlan_id\": 62,\n \"interface\": \"vni0\",\n \"net_uuid\": \"13\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/vcontrollers/failover",
"method": "POST",
"description": "Failover the active Controller.",
"parameters": [
{
"name": "force",
"type": "string",
"options": "YES, NO",
"required": false
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/vcontrollers/{id}/sessions",
"method": "GET",
"description": "Lists vcontroller's sessions.",
"response": "\n\n 0 \n 1 \n \n \n ISCSI \n iqn.1991-05.com.microsoft:vm91-win2008r2.zadara.lab \n iqn.test.com.zadarastorage:vsa-00000000:1 \n 1 \n 0 \n srv-00000003 \n VM91_WIN2008R2 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"sessions\": [\n {\n \"access_type\": \"ISCSI\",\n \"initiator\": \"iqn.1991-05.com.microsoft:vm91-win2008r2.zadara.lab\",\n \"target\": \"iqn.test.com.zadarastorage:vsa-00000000:1\",\n \"count\": 1,\n \"vc\": 0,\n \"server_name\": \"srv-00000003\",\n \"server_display_name\": \"VM91_WIN2008R2\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/vcontrollers/{id}/performance",
"method": "GET",
"description": "Returns the last 60 data points of performance data for the specified interval.",
"parameters": [
{
"name": "interval",
"type": "integer",
"required": true,
"description": "The interval between data points, in seconds.",
"example": 1
}
],
"response": "\n\n vsa-00000968-vc-0 \n 0 \n 20 \n \n \n 20.000000 \n 9.000000 \n 0.000000 \n 71.000000 \n 39.000000 \n 0.000000 \n 0.000000 \n 0.000000 \n 0.000000 \n 1386985440 \n \n \n 3.061224 \n 1.020408 \n 0.000000 \n 95.918367 \n 39.000000 \n 0.000000 \n 0.000000 \n 0.000000 \n 0.000000 \n 1386985441 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"vcontroller_name\": \"vsa-00000968-vc-0\",\n \"status\": 0,\n \"usages\": [\n {\n \"cpu_user\": 20.0,\n \"cpu_system\": 9.0,\n \"cpu_iowait\": 0.0,\n \"cpu_idle\": 71.0,\n \"mem_alloc\": 39.0,\n \"gb_wrt\": 0.0,\n \"gb_rd\": 0.0,\n \"zcache_data_dirty\": 0.0,\n \"zcache_meta_dirty\": 0.0,\n \"point\": 1386985440\n },\n {\n \"cpu_user\": 3.061224,\n \"cpu_system\": 1.020408,\n \"cpu_iowait\": 0.0,\n \"cpu_idle\": 95.918367,\n \"mem_alloc\": 39.0,\n \"gb_wrt\": 0.0,\n \"gb_rd\": 0.0,\n \"zcache_data_dirty\": 0.0,\n \"zcache_meta_dirty\": 0.0,\n \"point\": 1386985441\n }\n ],\n \"count\": 20\n }\n}"
},
{
"uri": "/vcontrollers/{id}/cache_performance",
"method": "GET",
"productType": "hybrid",
"description": "Returns the last 60 data points of cache performance data for the specified interval.",
"parameters": [
{
"name": "interval",
"type": "integer",
"required": false,
"description": "The interval between data points, in seconds."
}
],
"response": "\n\n \n 0 \n 20 \n \n \n 0 \n 0.000000 \n 0.000000 \n 0 \n 0 \n 0.000000 \n 0.000000 \n 0 \n 1386985536 \n \n \n 0 \n 0.000000 \n 0.000000 \n 0 \n 0 \n 0.000000 \n 0.000000 \n 0 \n 1386985537 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"zcache_name\": null,\n \"status\": 0,\n \"zcache_usages\": [\n {\n \"rd_iops\": 0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"point\": 1386985536\n },\n {\n \"rd_iops\": 0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"point\": 1386985537\n }\n ],\n \"count\": 20\n }\n}"
},
{
"uri": "/vcontrollers/{id}/cache_stats",
"method": "GET",
"productType": "hybrid",
"description": "Returns the last 60 data points of cache stats data for the specified interval.",
"parameters": [
{
"name": "interval",
"type": "integer",
"example": 1,
"description": "The interval between data points, in seconds."
}
],
"response": "\n \n 0 \n 20 \n \n \n 0.000000 \n 0.000000 \n 0.000000 \n 0.000000 \n 0.000000 \n 96.000000 \n 0.000000 \n 0.000000 \n 0.000000 \n 0.000000 \n 1427966949 \n \n \n 0.000000 \n 0.000000 \n 0.000000 \n 0.000000 \n 0.000000 \n 96.000000 \n 0.000000 \n 0.000000 \n 0.000000 \n 0.000000 \n 1427966950 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"zcache_name\": null,\n \"status\": 0,\n \"usages\": [\n {\n \"zcache_data_dirty\": 0.0,\n \"zcache_meta_dirty\": 0.0,\n \"zcache_data_clean\": 0.0,\n \"zcache_meta_clean\": 0.0,\n \"zcache_data_cb_util\": 0.0,\n \"zcache_meta_cb_util\": 96.0,\n \"zcache_data_read_hit\": 0.0,\n \"zcache_meta_read_hit\": 0.0,\n \"zcache_data_write_hit\": 0.0,\n \"zcache_meta_write_hit\": 0.0,\n \"point\": 1427966949\n },\n {\n \"zcache_data_dirty\": 0.0,\n \"zcache_meta_dirty\": 0.0,\n \"zcache_data_clean\": 0.0,\n \"zcache_meta_clean\": 0.0,\n \"zcache_data_cb_util\": 0.0,\n \"zcache_meta_cb_util\": 96.0,\n \"zcache_data_read_hit\": 0.0,\n \"zcache_meta_read_hit\": 0.0,\n \"zcache_data_write_hit\": 0.0,\n \"zcache_meta_write_hit\": 0.0,\n \"point\": 1427966950\n }\n ],\n \"count\": 20\n }\n}"
}
]
},
{
"name": "Mirroring and Cloning",
"description": "Operations for Remote Mirroring and Cloning.",
"methods": [
{
"uri": "/mirror_jobs",
"method": "GET",
"description": "Show all Remote Mirror Jobs.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n srcjvpsa-00000001 \n mirror \n \n openstack \n myvpsa \n volume \n cg-00000001 \n poolrenamed \n \n \n openstack \n myvpsa2 \n remotevolume \n \n pool \n \n Idle \n 2013-09-27 02:10:20 \n YES \n 0 \n 2013-09-27 02:09:38 \n 2013-09-27 02:10:21 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"vpsa_mirror_jobs\": [\n {\n \"job_name\": \"srcjvpsa-00000001\",\n \"job_display_name\": \"mirror\",\n \"src\": {\n \"provider\": \"openstack\",\n \"vpsa_display_name\": \"myvpsa\",\n \"cg_display_name\": \"volume\",\n \"cg_name\": \"cg-00000001\",\n \"pool_display_name\": \"poolrenamed\"\n },\n \"dst\": {\n \"provider\": \"openstack\",\n \"vpsa_display_name\": \"myvpsa2\",\n \"cg_display_name\": \"remotevolume\",\n \"cg_name\": null,\n \"pool_display_name\": \"pool\"\n },\n \"status\": \"Idle\",\n \"rpo\": \"2013-09-27 02:10:20\",\n \"wan_optimization\": \"YES\",\n \"avg_sync_rate_kb_sec\": \"0\",\n \"created_at\": \"2013-09-27 02:09:38 UTC\",\n \"modified_at\": \"2013-09-27 02:10:21 UTC\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/mirror_jobs/{id}",
"method": "GET",
"description": "Show One Remote Mirror Jobs.",
"response": "\n\n \n srcjvpsa-00000001 \n mirror \n \n openstack \n myvpsa \n volume \n cg-00000001 \n pool1 \n \n \n openstack \n myvpsa2 \n remotevolume \n \n pool2 \n \n Idle \n 2013-09-27 02:10:20 \n YES \n 0 \n 2013-09-27 02:09:38 \n 2013-09-27 02:10:21 \n \n \n",
"response_json": "{\n \"response\": {\n \"vpsa_mirror_job\": {\n \"job_name\": \"srcjvpsa-00000001\",\n \"job_display_name\": \"mirror\",\n \"src\": {\n \"provider\": \"openstack\",\n \"vpsa_display_name\": \"myvpsa\",\n \"cg_display_name\": \"volume\",\n \"cg_name\": \"cg-00000001\",\n \"pool_display_name\": \"pool1\"\n },\n \"dst\": {\n \"provider\": \"openstack\",\n \"vpsa_display_name\": \"myvpsa2\",\n \"cg_display_name\": \"remotevolume\",\n \"cg_name\": null,\n \"pool_display_name\": \"pool2\"\n },\n \"status\": \"Idle\",\n \"rpo\": \"2013-09-27 02:10:20\",\n \"wan_optimization\": \"YES\",\n \"avg_sync_rate_kb_sec\": \"0\",\n \"created_at\": \"2013-09-27 02:09:38 UTC\",\n \"modified_at\": \"2013-09-27 02:10:21 UTC\"\n }\n }\n}"
},
{
"uri": "/mirror_jobs/{id}/pause",
"method": "POST",
"description": "Pause a Remote Mirror Job.",
"response": "\n\n srcjvpsa-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vpsa_mirror_job_name\": \"srcjvpsa-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/mirror_jobs/{id}/continue",
"method": "POST",
"description": "Continue a Paused Remote Mirror Job.",
"response": "\n\n srcjvpsa-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vpsa_mirror_job_name\": \"srcjvpsa-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/mirror_jobs/{id}/break",
"method": "POST",
"description": "Breaks a Remote Mirror Job.",
"parameters": [
{
"name": "inherited",
"type": "string",
"required": false,
"options": "YES, NO",
"description": "Assign source WWID to target volume. Relevant only for Block type volume.",
"example": "NO"
}
],
"response": "\n\n srcjvpsa-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vpsa_mirror_job_name\": \"srcjvpsa-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/mirror_jobs/{id}/rate_limit",
"method": "POST",
"description": "Update a mirror job rate limit (kb/s)",
"parameters": [
{
"name": "limit",
"type": "integer",
"description": "Rate limit in kb/s",
"example": 44
}
],
"response": "\n\n srcjvpsa-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vpsa_mirror_job_name\": \"srcjvpsa-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/remote_vpsas",
"method": "GET",
"description": "List all Remote VPSAs.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n rvpsa-00000002 \n vsa-000007bc \n myvpsa2 \n openstack \n 13.09-988-13 \n 87461016365148A6A459152BA1E28222 \n 170.70.2.109 \n NO \n vni0 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"remote_vpsas\": [\n {\n \"name\": \"rvpsa-00000002\",\n \"remote_name\": \"vsa-000007bc\",\n \"remote_display_name\": \"myvpsa2\",\n \"provider\": \"openstack\",\n \"software_version\": \"13.09-988-13\",\n \"uuid\": \"87461016365148A6A459152BA1E28222\",\n \"ip\": \"170.70.2.109\",\n \"public\": \"NO\",\n \"vni\": \"vni0\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/remote_vpsas/discover",
"method": "POST",
"description": "Discover and connect a Remote VPSA. Must supply User credentials of the remote VPSA and define if the discovery is done via a Public IP or the Management IP",
"parameters": [
{
"name": "ip",
"type": "string",
"required": true,
"description": "IP of VPSA to discover",
"example": "11.22.33.44"
},
{
"name": "user",
"type": "string",
"required": true,
"description": "username of VPSA to discover",
"example": "johndoe"
},
{
"name": "password",
"type": "string",
"required": true,
"description": "password of VPSA to discover",
"example": "mysupersecretpassword"
},
{
"name": "interface",
"type": "string",
"required": false,
"options": "public, vni0, fe",
"description": "Set interface to use for connecting the remote vpsa",
"example": "public",
"default": "fe"
},
{
"name": "proxyhost",
"type": "string",
"required": false,
"description": "If using proxy, the proxy host",
"example": "11.22.33.44"
},
{
"name": "proxyport",
"type": "string",
"required": false,
"description": "If using proxy, the proxy port",
"example": "88"
},
{
"name": "proxytype",
"type": "string",
"required": false,
"options": "http, http10, socks4_hostname, socks5, socks4, socks4a",
"description": "If using proxy, the proxy type",
"example": "http"
},
{
"name": "proxyusername",
"type": "string",
"required": false,
"description": "If using proxy with authentication, the proxy username",
"example": "johndoe"
},
{
"name": "proxypassword",
"type": "string",
"required": false,
"description": "If using proxy with authentication, the proxy user password",
"example": "mysupersecretpassword"
}
],
"response": "\n\n rvpsa-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"remote_vpsa_name\": \"rvpsa-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/remote_vpsas/{id}",
"method": "GET",
"description": "Get information about a single Remote VPSA.",
"response": "\n\n 0 \n \n rvpsa-00000002 \n vsa-000007bc \n myvpsa2 \n openstack \n 13.09-988-13 \n 87461016365148A6A459152BA1E28222 \n 170.70.2.109 \n NO \n vni0 \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"remote_vpsa\": {\n \"name\": \"rvpsa-00000002\",\n \"remote_name\": \"vsa-000007bc\",\n \"remote_display_name\": \"myvpsa2\",\n \"provider\": \"openstack\",\n \"software_version\": \"13.09-988-13\",\n \"uuid\": \"87461016365148A6A459152BA1E28222\",\n \"ip\": \"170.70.2.109\",\n \"public\": \"NO\",\n \"vni\": \"vni0\"\n }\n }\n}"
},
{
"uri": "/remote_vpsas/{id}/refresh",
"method": "POST",
"description": "Refresh discovered data about a Remote VPSA.",
"response": "\n\n rvpsa-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"remote_vpsa_name\": \"rvpsa-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/remote_vpsas/{id}",
"method": "DELETE",
"description": "Delete the local record of a Remote VPSA.",
"response": "\n\n rvpsa-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"remote_vpsa_name\": \"rvpsa-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/remote_vpsas/{id}/pools",
"method": "GET",
"description": "List the Pools in a Remote VPSA.",
"response": "\n\n rvpsa-00000002 \n 0 \n 1 \n \n \n rpool-00000002 \n pool \n 133 \n 129 \n simple \n 64 \n 2 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"remote_vpsa_name\": \"rvpsa-00000002\",\n \"status\": 0,\n \"remote_pools\": [\n {\n \"name\": \"rpool-00000002\",\n \"remote_display_name\": \"pool\",\n \"capacity\": \"133\",\n \"free_capacity\": \"129\",\n \"mode\": \"simple\",\n \"stripe_size\": \"64\",\n \"version\": \"2\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/remote_vpsas/{id}/suggested_jobs",
"method": "GET",
"description": "List Volumes on the remote VPSA which are candidates for resuming Remote Mirroring relationship. Typically, those Volumes were part of a mirror relationship in the past and still have a snapshots that correlates to an existing snapshot in the local VPSA. Those identical snapshots will be used to resume mirroring relationship",
"parameters": [
{
"name": "cgname",
"type": "string",
"required": true,
"description": "CG ID for the local Volume.",
"example": "cg-00000001"
},
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n cg-00000001 \n remotevolume \n snap-00000001 \n s-r3-1380240620852 \n snap-00000003 \n s-r3-1380240620852 \n 2013-09-27 02:10:20 \n 0 \n NO \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"sugested_jobs\": [\n {\n \"dst_cg_name\": \"cg-00000001\",\n \"dst_cg_display_name\": \"remotevolume\",\n \"dst_snap_name\": \"snap-00000001\",\n \"dst_snap_display_name\": \"s-r3-1380240620852\",\n \"src_snap_name\": \"snap-00000003\",\n \"src_snap_display_name\": \"s-r3-1380240620852\",\n \"sync_at\": \"2013-09-27 02:10:20 UTC\",\n \"snaps_todelete\": 0,\n \"dst_data_changed\": \"NO\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/remote_vpsas/{id}/resume_mirror_job",
"method": "POST",
"description": "Resume a Remote Mirroring relationship between a local Volume snapshot and an remote Volume Snapshot on the remote VPSA",
"parameters": [
{
"name": "displayname",
"type": "string",
"required": true,
"description": "Display name for resumed mirror.",
"example": "my-mirror"
},
{
"name": "policy",
"type": "string",
"required": true,
"description": "Policy ID",
"example": "policy-00000001"
},
{
"name": "dedupe",
"type": "string",
"options": "YES, NO",
"example": "YES",
"productType": "AFA",
"description": "Enable Dedupe For Mirror."
},
{
"name": "compress",
"type": "string",
"options": "YES, NO",
"productType": "AFA",
"example": "YES",
"description": "Enable Compression For Mirror."
},
{
"name": "wanoptimization",
"type": "string",
"required": true,
"description": "enable WAN optimization.",
"options": "YES, NO",
"example": "YES"
},
{
"name": "snapname",
"type": "string",
"required": true,
"description": "The local Snapshot ID.",
"example": "snap-00000001"
},
{
"name": "remote_snapname",
"type": "string",
"description": "ID of a Remote Snapshot to resume from.",
"required": true,
"example": "snap-00000003"
}
],
"response": "\n\n srcjvpsa-00000002 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vpsa_mirror_job_name\": \"srcjvpsa-00000002\",\n \"status\": 0\n }\n}"
},
{
"uri": "/remote_vpsas/{id}/rate_limit",
"method": "POST",
"description": "Update a remote vpsa rate limit (kb/s)",
"parameters": [
{
"name": "limit",
"type": "integer",
"description": "Rate limit in kb/s",
"example": 44
}
],
"response": "\n\n rvpsa-00000002 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"remote_vpsa_name\": \"rvpsa-00000002\",\n \"status\": 0\n }\n}"
},
{
"uri": "/consistency_groups/{jobname}/attach_snapshot_policy",
"method": "POST",
"description": "Attach a Snapshot Policy to a Volume.",
"parameters": [
{
"name": "policyname",
"type": "string",
"description": "A policy ID.",
"required": true,
"example": "policy-00000001"
}
],
"response": "\n\n rule-0000000f \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_rule_name\": \"rule-0000000f\",\n \"status\": 0\n }\n}"
},
{
"uri": "/mirror_jobs/{job-id}/detach_snapshot_policy",
"method": "POST",
"description": "Detach a Snapshot Policy from a Mirror job.",
"parameters": [
{
"name": "snaprule",
"type": "string",
"description": "A snaprule ID.",
"required": true,
"example": "rule-00000001"
}
],
"response": "\n\n rule-0000000d \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_rule_name\": \"rule-0000000d\",\n \"status\": 0\n }\n}"
},
{
"uri": "/mirror_jobs/{id}/set_wan_optimization",
"method": "POST",
"description": "Update a Mirror's WAN optimization.",
"parameters": [
{
"name": "wan_optimization",
"type": "string",
"options": "YES, NO",
"example": "NO"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/mirror_jobs/{id}/snapshots",
"method": "GET",
"description": "Get all snapshots created by a mirror job.",
"response": "\n\n 0 \n 1 \n \n \n snap-00000d2b \n s-ra-1505204453226 \n normal \n c \n cg-00000001 \n pool-00000001 \n 2017-09-12T11:20:53+0300 \n 2017-09-12T11:20:53+0300 \n volume-00000001 \n v1 \n 102400 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"snapshots\": [\n {\n \"name\": \"snap-00000d2b\",\n \"display_name\": \"s-ra-1505204453226\",\n \"status\": \"normal\",\n \"cg_display_name\": \"c\",\n \"cg_name\": \"cg-00000001\",\n \"pool_name\": \"pool-00000001\",\n \"created_at\": \"2017-09-12 08:20:53 UTC\",\n \"modified_at\": \"2017-09-12 08:20:53 UTC\",\n \"volume_ext_name\": \"volume-00000001\",\n \"volume_display_name\": \"v1\",\n \"volume_capacity_mb\": 102400\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/mirror_jobs/{id}/clone_snapshot",
"method": "POST",
"description": "Clone a mirror job's snapshot into a volume.",
"parameters": [
{
"name": "snapshot",
"type": "string",
"description": "A snapshot's id.",
"required": true,
"example": "snap-00000d63"
},
{
"name": "clone_name",
"type": "string",
"description": "The name for the new volume.",
"required": true,
"example": "cloned_volume"
}
],
"response": "\n\n cg-00000008 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"cg_name\": \"cg-00000008\",\n \"status\": 0\n }\n}"
},
{
"uri": "/remote_vpsas/{id}/volumes",
"method": "GET",
"description": "List the Volumes in a Remote VPSA.",
"response": "\n\n 0 \n 1 \n \n \n cg-00000001 \n blk1 \n volume-00000001 \n BLOCK \n 1111 \n NO \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"cgs\": [\n {\n \"name\": \"cg-00000001\",\n \"display_name\": \"blk1\",\n \"volume_name\": \"volume-00000001\",\n \"data_type\": \"BLOCK\",\n \"provisioned_capacity\": 1111,\n \"encryption\": \"NO\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/remote_vpsas/{id}/snapshots",
"method": "GET",
"description": "List the snapshots in a Remote VPSA volume.",
"parameters": [
{
"name": "cgname",
"type": "string",
"description": "cg name.",
"required": true,
"example": "cg-00000001"
}
],
"response": "\n\n 0 \n 3 \n \n \n snap-0000005b \n clone \n 2019-05-12T08:45:38+0000 \n volume-00000001 \n v1 \n 102400 \n \n \n snap-0000005f \n s-r2-1557670832606 \n 2019-05-12T14:20:32+0000 \n volume-00000002 \n v2 \n 102400 \n \n \n snap-00000060 \n s-r2-1557676845955 \n 2019-05-12T16:00:45+0000 \n volume-00000003 \n v3 \n 102400 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"snapshots\": [\n {\n \"name\": \"snap-0000005b\",\n \"display_name\": \"clone\",\n \"created_at_utc\": \"2019-05-12 08:45:38 UTC\",\n \"volume_ext_name\": \"volume-00000001\",\n \"volume_display_name\": \"v1\",\n \"volume_capacity_mb\": 102400\n },\n {\n \"name\": \"snap-0000005f\",\n \"display_name\": \"s-r2-1557670832606\",\n \"created_at_utc\": \"2019-05-12 14:20:32 UTC\",\n \"volume_ext_name\": \"volume-00000002\",\n \"volume_display_name\": \"v2\",\n \"volume_capacity_mb\": 102400\n },\n {\n \"name\": \"snap-00000060\",\n \"display_name\": \"s-r2-1557676845955\",\n \"created_at_utc\": \"2019-05-12 16:00:45 UTC\",\n \"volume_ext_name\": \"volume-00000003\",\n \"volume_display_name\": \"v3\",\n \"volume_capacity_mb\": 102400\n }\n ],\n \"count\": 3\n }\n}"
},
{
"uri": "/volumes/remote_clone",
"method": "POST",
"description": "Create a Remote Clone.",
"parameters": [
{
"name": "displayname",
"type": "string",
"required": true,
"description": "The new remote clone name",
"example": "my-volume"
},
{
"name": "volname",
"type": "string",
"required": true,
"description": "Destination volume name",
"example": "my-volume"
},
{
"name": "poolname",
"type": "string",
"required": true,
"description": "Pool to create remote clone",
"example": "pool-00010001"
},
{
"name": "remote_clone_mode",
"type": "string",
"required": true,
"description": "Remote Clone mode",
"options": "clone|retrieve",
"example": "clone"
},
{
"name": "vpsaname",
"type": "string",
"required": true,
"description": "The source vpsa name",
"example": "rvpsa-00000002"
},
{
"name": "snapname",
"type": "string",
"required": true,
"description": "The source snapshot name",
"example": "snap-0000005f"
},
{
"name": "dedupe",
"type": "string",
"options": "YES, NO",
"productType": "AFA",
"example": "YES",
"description": "Enable Dedupe For Remote Clone."
},
{
"name": "compress",
"type": "string",
"productType": "AFA",
"options": "YES, NO",
"example": "YES",
"description": "Enable compress For Remote Clone."
},
{
"name": "crypt",
"type": "string",
"options": "YES, NO",
"description": "Enable encryption for this Remote Clone."
}
],
"response": "\n\n volume-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/remote_clones",
"method": "GET",
"description": "List the VPSA Remote Clones.",
"response": "\n\n 0 \n 1 \n \n \n dstrclone-00000004 \n cloned \n Clone \n \n \n zadaratest1 \n testvpsa \n 81441176117A46DEB6C48253C321DD89 \n clone \n snap-0000005b \n \n \n \n \n zadaratest1 \n testvpsa2 \n 20DB8067FC5B45C79DB2C39F3CFF93F0 \n cloned \n cg-00000005 \n \n Syncing \n YES \n YES \n 2019-05-12T11:47:14+0300 \n 2019-05-12T11:50:34+0300 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"remote_clone_jobs\": [\n {\n \"job_name\": \"dstrclone-00000004\",\n \"job_display_name\": \"cloned\",\n \"mode\": \"Clone\",\n \"comment\": null,\n \"src\": {\n \"provider\": \"zadaratest1\",\n \"vpsa_display_name\": \"testvpsa\",\n \"vpsa_uuid\": \"81441176117A46DEB6C48253C321DD89\",\n \"snap_display_name\": \"clone\",\n \"snap_name\": \"snap-0000005b\",\n \"volume_name\": null,\n \"volume_display_name\": null\n },\n \"dst\": {\n \"provider\": \"zadaratest1\",\n \"vpsa_display_name\": \"testvpsa2\",\n \"vpsa_uuid\": \"20DB8067FC5B45C79DB2C39F3CFF93F0\",\n \"cg_display_name\": \"cloned\",\n \"cg_name\": \"cg-00000005\"\n },\n \"status\": \"Syncing\",\n \"compress\": \"YES\",\n \"dedupe\": \"YES\",\n \"created_at\": \"2019-05-12 08:47:14 UTC\",\n \"modified_at\": \"2019-05-12 08:50:34 UTC\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/remote_clones/{id}",
"method": "GET",
"description": "Show a Remote Clone.",
"response": "\n\n 0 \n \n dstrclone-00000004 \n cloned \n Clone \n \n \n zadaratest1 \n testvpsa \n 81441176117A46DEB6C48253C321DD89 \n clone \n snap-0000005b \n \n \n \n \n zadaratest1 \n testvpsa2 \n 20DB8067FC5B45C79DB2C39F3CFF93F0 \n cloned \n cg-00000005 \n \n Syncing \n YES \n YES \n 2019-05-12T11:47:14+0300 \n 2019-05-12T11:50:34+0300 \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"remote_clone_job\": {\n \"job_name\": \"dstrclone-00000004\",\n \"job_display_name\": \"cloned\",\n \"mode\": \"Clone\",\n \"comment\": null,\n \"src\": {\n \"provider\": \"zadaratest1\",\n \"vpsa_display_name\": \"testvpsa\",\n \"vpsa_uuid\": \"81441176117A46DEB6C48253C321DD89\",\n \"snap_display_name\": \"clone\",\n \"snap_name\": \"snap-0000005b\",\n \"volume_name\": null,\n \"volume_display_name\": null\n },\n \"dst\": {\n \"provider\": \"zadaratest1\",\n \"vpsa_display_name\": \"testvpsa2\",\n \"vpsa_uuid\": \"20DB8067FC5B45C79DB2C39F3CFF93F0\",\n \"cg_display_name\": \"cloned\",\n \"cg_name\": \"cg-00000005\"\n },\n \"status\": \"Syncing\",\n \"compress\": \"YES\",\n \"dedupe\": \"YES\",\n \"created_at\": \"2019-05-12 08:47:14 UTC\",\n \"modified_at\": \"2019-05-12 08:50:34 UTC\"\n }\n }\n}"
},
{
"uri": "/remote_clones/{id}/pause",
"method": "POST",
"description": "Pause a Remote Clone Job.",
"response": "\n\n dstrclone-00000004 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"remote_clone_job_name\": \"dstrclone-00000004\",\n \"status\": 0\n }\n}"
},
{
"uri": "/remote_clones/{id}/continue",
"method": "POST",
"description": "Continue a Paused Remote Clone Job.",
"response": "\n\n dstrclone-00000004 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"remote_clone_job_name\": \"dstrclone-00000004\",\n \"status\": 0\n }\n}"
},
{
"uri": "/remote_clones/{id}/break",
"method": "POST",
"description": "Breaks a Remote Clone Job.",
"response": "\n\n dstrclone-00000004 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"remote_clone_job_name\": \"dstrclone-00000004\",\n \"status\": 0\n }\n}"
},
{
"uri": "/remote_clones/{id}/switch_mode",
"method": "POST",
"description": "Switch a Remote Clone Job clone mode.",
"parameters": [
{
"name": "mode",
"type": "string",
"description": "Remote clone mode.",
"required": true,
"options": "clone, retrieve",
"example": "clone"
}
],
"response": "\n\n dstrclone-00000005 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"remote_clone_job_name\": \"dstrclone-00000005\",\n \"status\": 0\n }\n}"
}
]
},
{
"name": "Remote object storage",
"description": "Operations for Remote Object Storages.",
"methods": [
{
"uri": "/object_storage_destinations",
"method": "GET",
"description": "List all remote object storages.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n obsdst-00000001 \n AWS-s3.amazonaws.com-mybucket \n AWS_S3 \n s3.amazonaws.com \n us-east-1 \n V2 \n mybucket \n NO \n iSCSI IP \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_destinations\": [\n {\n \"name\": \"obsdst-00000001\",\n \"display_name\": \"AWS-s3.amazonaws.com-mybucket\",\n \"type\": \"AWS_S3\",\n \"endpoint\": \"s3.amazonaws.com\",\n \"region\": \"us-east-1\",\n \"aws_auth_method\": \"V2\",\n \"bucket\": \"mybucket\",\n \"allow_lifecycle_policies\": \"NO\",\n \"ip\": \"iSCSI IP\"\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/object_storage_destinations/{id}",
"method": "GET",
"description": "List all Remote object storages.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n \n obsdst-00000001 \n AWS-s3.amazonaws.com-zadarastorage-eyal-us \n AWS_S3 \n s3.amazonaws.com \n us-east-1 \n V2 \n zadarastorage-eyal-us \n NO \n iSCSI IP \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_destination\": {\n \"name\": \"obsdst-00000001\",\n \"display_name\": \"AWS-s3.amazonaws.com-zadarastorage-eyal-us\",\n \"type\": \"AWS_S3\",\n \"endpoint\": \"s3.amazonaws.com\",\n \"region\": \"us-east-1\",\n \"aws_auth_method\": \"V2\",\n \"bucket\": \"zadarastorage-eyal-us\",\n \"allow_lifecycle_policies\": \"NO\",\n \"ip\": \"iSCSI IP\"\n }\n }\n}"
},
{
"uri": "/object_storage_destinations",
"method": "POST",
"description": "Create a remote object storage.",
"parameters": [
{
"name": "name",
"description": "Display Name for remote object storage",
"type": "string",
"required": true,
"example": "remote object storage 1"
},
{
"name": "type",
"description": "Type for remote object storage",
"type": "string",
"options": "AWS_S3 | GCS_S3 | ZIOS_S3",
"required": true,
"example": "AWS_S3"
},
{
"name": "bucket",
"description": "remote object storage bucket name",
"type": "string",
"required": true,
"example": "my bucket"
},
{
"name": "endpoint",
"description": "Endpoint for remote object storage (use 'storage.googleapis.com' for Google cloud).",
"type": "string",
"required": true,
"example": "s3-eu-west-1.amazonaws.com"
},
{
"name": "username",
"description": "Access Key ID for remote object storage",
"type": "string",
"required": true,
"example": "mys3username"
},
{
"name": "password",
"description": "Secret Access Key for remote object storage",
"type": "string",
"required": true,
"example": "mys3password"
},
{
"name": "connectVia",
"description": "Connection method for remote object storage",
"type": "string",
"options": "be | public",
"required": true,
"example": "public"
},
{
"name": "allow_lifecycle_policies",
"description": "Allow bucket to have lifecycle policies (Valid Only for AWS)",
"type": "boolean"
},
{
"name": "proxyhost",
"description": "Proxy host",
"type": "string",
"example": "10.10.10.10"
},
{
"name": "proxyport",
"description": "Port for proxy",
"type": "string",
"example": 7878
},
{
"name": "proxyuser",
"description": "Username for proxy",
"type": "string",
"example": "user"
},
{
"name": "proxypassword",
"description": "Password for proxy",
"type": "string",
"example": "password"
}
],
"response": "\n\n 0 \n obsdst-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_destination_name\": \"obsdst-00000003\"\n }\n}"
},
{
"uri": "/object_storage_destinations",
"method": "POST",
"description": "Create a remote object storage in Azure cloud.",
"parameters": [
{
"name": "name",
"description": "Display Name for remote object storage",
"type": "string",
"required": true,
"example": "remote object storage 1"
},
{
"name": "type",
"description": "Type for remote object storage - use 'AZURE'.",
"type": "string",
"options": "AZURE",
"required": true,
"example": "AZURE"
},
{
"name": "bucket",
"description": "Azure cloud container name.",
"type": "string",
"required": true,
"example": "my container"
},
{
"name": "endpoint",
"description": "Endpoint for Azure cloud - use 'blob.core.windows.net'.",
"options": "blob.core.windows.net",
"type": "string",
"required": true,
"example": "blob.core.windows.net"
},
{
"name": "username",
"description": "Account in Azure cloud.",
"type": "string",
"required": true,
"example": "my_azure_account"
},
{
"name": "password",
"description": "Storage account key in Azure cloud.",
"type": "string",
"required": true,
"example": "my_azure_account_key"
},
{
"name": "connectVia",
"description": "Connection method to Azure cloud.",
"type": "string",
"options": "be | public",
"required": true,
"example": "public"
},
{
"name": "allow_lifecycle_policies",
"description": "Allow bucket to have lifecycle policies - use 'true'.",
"required": true,
"options": "true",
"type": "boolean"
},
{
"name": "proxyhost",
"description": "Proxy host",
"type": "string",
"example": "10.10.10.10"
},
{
"name": "proxyport",
"description": "Port for proxy",
"type": "string",
"example": 7878
},
{
"name": "proxyuser",
"description": "Username for proxy",
"type": "string",
"example": "user"
},
{
"name": "proxypassword",
"description": "Password for proxy",
"type": "string",
"example": "password"
}
],
"response": "\n\n 0 \n obsdst-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_destination_name\": \"obsdst-00000003\"\n }\n}"
},
{
"uri": "/object_storage_destinations/{id}",
"method": "PUT",
"description": "Update a remote object storage.",
"parameters": [
{
"name": "bucket",
"description": "remote object storage bucket name",
"type": "string",
"example": "my bucket"
},
{
"name": "endpoint",
"description": "Endpoint for remote object storage",
"type": "string",
"example": "s3-eu-west-1.amazonaws.com"
},
{
"name": "username",
"description": "Access Key ID for remote object storage",
"type": "string",
"example": "mys3username"
},
{
"name": "password",
"description": "Secret Access Key for remote object storage",
"type": "string",
"example": "mys3password"
},
{
"name": "connectVia",
"description": "Connection method for remote object storage",
"type": "string",
"options": "be | public",
"example": "public"
},
{
"name": "allow_lifecycle_policies",
"description": "Allow bucket to have lifecycke policies (Valid Only for AWS)",
"type": "boolean"
},
{
"name": "proxyhost",
"description": "Proxy host",
"type": "string",
"example": "10.10.10.10"
},
{
"name": "proxyport",
"description": "Port for proxy",
"type": "string",
"example": 7878
},
{
"name": "proxyuser",
"description": "Username for proxy",
"type": "string",
"example": "user"
},
{
"name": "proxypassword",
"description": "Password for proxy",
"type": "string",
"example": "password"
}
],
"response": "\n\n 0 \n obsdst-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_destination_name\": \"obsdst-00000003\"\n }\n}"
},
{
"uri": "/object_storage_destinations/{id}",
"method": "PUT",
"description": "Update an Azure cloud remote object storage.",
"parameters": [
{
"name": "bucket",
"description": "Azure cloud container name.",
"type": "string",
"example": "my container"
},
{
"name": "username",
"description": "Account in Azure cloud.",
"type": "string",
"example": "my_azure_account"
},
{
"name": "password",
"description": "Storage account key in Azure cloud.",
"type": "string",
"example": "my_azure_account_key"
},
{
"name": "connectVia",
"description": "Connection method to Azure cloud.",
"type": "string",
"options": "be | public",
"example": "public"
},
{
"name": "proxyhost",
"description": "Proxy host",
"type": "string",
"example": "10.10.10.10"
},
{
"name": "proxyport",
"description": "Port for proxy",
"type": "string",
"example": 7878
},
{
"name": "proxyuser",
"description": "Username for proxy",
"type": "string",
"example": "user"
},
{
"name": "proxypassword",
"description": "Password for proxy",
"type": "string",
"example": "password"
}
],
"response": "\n\n 0 \n obsdst-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_destination_name\": \"obsdst-00000003\"\n }\n}"
},
{
"uri": "/object_storage_destinations/{id}",
"method": "DELETE",
"description": "Delete a remote object storage.",
"response": "\n\n 0 \n obsdst-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_destination_name\": \"obsdst-00000003\"\n }\n}"
},
{
"uri": "/object_storage_destinations/{id}/backup_jobs",
"method": "GET",
"description": "Show object storage destination backup jobs.",
"response": "\n\n 0 \n 1 \n \n \n bkpjobs-00000005 \n bkpjob \n Idle \n YES \n 2015-05-25T17:22:03+0300 \n 0 \n 2015-05-25T17:21:27+0300 \n 2015-05-25T17:22:38+0300 \n \n cg-00000003 \n fdgdfg \n pool-00000001 \n pool1 \n \n \n AWS_S3 \n us-east-1 \n s3.amazonaws.com \n zadarastorage-eyal-us \n \n \n policy-00000003 \n Daily Snapshots for a Week \n 0 0 * * * \n N7 \n N7 \n NO \n NO \n YES \n \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_backup_jobs\": [\n {\n \"name\": \"bkpjobs-00000005\",\n \"display_name\": \"bkpjob\",\n \"status\": \"Idle\",\n \"compression\": \"YES\",\n \"rpo\": \"2015-05-25T17:22:03+0300\",\n \"avg_sync_rate_kb_sec\": \"0\",\n \"created_at\": \"2015-05-25 14:21:27 UTC\",\n \"modified_at\": \"2015-05-25 14:22:38 UTC\",\n \"src\": {\n \"cg_name\": \"cg-00000003\",\n \"cg_display_name\": \"fdgdfg\",\n \"pool_name\": \"pool-00000001\",\n \"pool_display_name\": \"pool1\"\n },\n \"dst\": {\n \"type\": \"AWS_S3\",\n \"region\": \"us-east-1\",\n \"endpoint\": \"s3.amazonaws.com\",\n \"bucket\": \"zadarastorage-eyal-us\"\n },\n \"snapshot_policy\": {\n \"name\": \"policy-00000003\",\n \"display_name\": \"Daily Snapshots for a Week\",\n \"create_policy\": \"0 0 * * *\",\n \"delete_policy\": \"N7\",\n \"destination_delete_policy\": \"N7\",\n \"paused\": \"NO\",\n \"create_empty\": \"NO\",\n \"attach\": \"YES\"\n }\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/object_storage_destinations/{id}/restore_jobs",
"method": "GET",
"description": "Show object storage destination restore jobs.",
"response": "\n\n 0 \n 1 \n \n \n rstjobs-00000001 \n restore_job_obssnap-00000008 \n Restore \n ... \n Creating VPSA volume \n 2015-05-25T17:22:03+0300 \n 0 \n 0 \n 0 \n 63 \n 0 \n N/A \n 2015-05-26T11:13:58+0300 \n 2015-05-26T11:13:59+0300 \n \n AWS_S3 \n us-east-1 \n s3.amazonaws.com \n ... \n \n \n cg-0000000a \n vol1 \n pool-00000001 \n pool1 \n \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_restore_jobs\": [\n {\n \"name\": \"rstjobs-00000001\",\n \"display_name\": \"restore_job_obssnap-00000008\",\n \"mode\": \"Restore\",\n \"obs_key\": \"...\",\n \"status\": \"Creating VPSA volume\",\n \"rpo\": \"2015-05-25T17:22:03+0300\",\n \"avg_sync_rate_kb_sec\": \"0\",\n \"cur_sync_rate_kb_sec\": \"0\",\n \"shipping_position_mb\": 0,\n \"total_capacity_mb\": \"63\",\n \"already_restored_mb\": 0,\n \"remaining_time_sec\": 0,\n \"created_at\": \"2015-05-26 08:13:58 UTC\",\n \"modified_at\": \"2015-05-26 08:13:59 UTC\",\n \"src\": {\n \"type\": \"AWS_S3\",\n \"region\": \"us-east-1\",\n \"endpoint\": \"s3.amazonaws.com\",\n \"bucket\": \"...\"\n },\n \"dst\": {\n \"cg_name\": \"cg-0000000a\",\n \"cg_display_name\": \"vol1\",\n \"pool_name\": \"pool-00000001\",\n \"pool_display_name\": \"pool1\"\n }\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/object_storage_backup_jobs",
"method": "GET",
"description": "List all object storage backup jobs.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n bkpjobs-00000005 \n ghfghfghfg \n Idle \n YES \n 2015-05-25T17:22:03+0300 \n 0 \n 2015-05-25T17:21:27+0300 \n 2015-05-25T17:22:38+0300 \n \n cg-00000003 \n fdgdfg \n pool-00000001 \n pool1 \n \n \n AWS_S3 \n us-east-1 \n s3.amazonaws.com \n mybucket \n \n \n policy-00000003 \n Daily Snapshots for a Week \n 0 0 * * * \n N7 \n N7 \n NO \n NO \n YES \n \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_backup_jobs\": [\n {\n \"name\": \"bkpjobs-00000005\",\n \"display_name\": \"ghfghfghfg\",\n \"status\": \"Idle\",\n \"compression\": \"YES\",\n \"rpo\": \"2015-05-25T17:22:03+0300\",\n \"avg_sync_rate_kb_sec\": \"0\",\n \"created_at\": \"2015-05-25 14:21:27 UTC\",\n \"modified_at\": \"2015-05-25 14:22:38 UTC\",\n \"src\": {\n \"cg_name\": \"cg-00000003\",\n \"cg_display_name\": \"fdgdfg\",\n \"pool_name\": \"pool-00000001\",\n \"pool_display_name\": \"pool1\"\n },\n \"dst\": {\n \"type\": \"AWS_S3\",\n \"region\": \"us-east-1\",\n \"endpoint\": \"s3.amazonaws.com\",\n \"bucket\": \"mybucket\"\n },\n \"snapshot_policy\": {\n \"name\": \"policy-00000003\",\n \"display_name\": \"Daily Snapshots for a Week\",\n \"create_policy\": \"0 0 * * *\",\n \"delete_policy\": \"N7\",\n \"destination_delete_policy\": \"N7\",\n \"paused\": \"NO\",\n \"create_empty\": \"NO\",\n \"attach\": \"YES\"\n }\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/object_storage_backup_jobs/{id}",
"method": "GET",
"description": "List one object storage backup job.",
"response": "\n\n 0 \n \n bkpjobs-00000005 \n ghfghfghfg \n Idle \n YES \n 2015-05-25T17:22:03+0300 \n 0 \n 2015-05-25T17:21:27+0300 \n 2015-05-25T17:22:38+0300 \n \n cg-00000003 \n fdgdfg \n pool-00000001 \n pool1 \n \n \n AWS_S3 \n us-east-1 \n s3.amazonaws.com \n zadarastorage-eyal-us \n \n \n policy-00000003 \n Daily Snapshots for a Week \n 0 0 * * * \n N7 \n N7 \n NO \n NO \n YES \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_backup_job\": {\n \"name\": \"bkpjobs-00000005\",\n \"display_name\": \"ghfghfghfg\",\n \"status\": \"Idle\",\n \"compression\": \"YES\",\n \"rpo\": \"2015-05-25T17:22:03+0300\",\n \"avg_sync_rate_kb_sec\": \"0\",\n \"created_at\": \"2015-05-25 14:21:27 UTC\",\n \"modified_at\": \"2015-05-25 14:22:38 UTC\",\n \"src\": {\n \"cg_name\": \"cg-00000003\",\n \"cg_display_name\": \"fdgdfg\",\n \"pool_name\": \"pool-00000001\",\n \"pool_display_name\": \"pool1\"\n },\n \"dst\": {\n \"type\": \"AWS_S3\",\n \"region\": \"us-east-1\",\n \"endpoint\": \"s3.amazonaws.com\",\n \"bucket\": \"zadarastorage-eyal-us\"\n },\n \"snapshot_policy\": {\n \"name\": \"policy-00000003\",\n \"display_name\": \"Daily Snapshots for a Week\",\n \"create_policy\": \"0 0 * * *\",\n \"delete_policy\": \"N7\",\n \"destination_delete_policy\": \"N7\",\n \"paused\": \"NO\",\n \"create_empty\": \"NO\",\n \"attach\": \"YES\"\n }\n }\n }\n}"
},
{
"uri": "/object_storage_backup_jobs",
"method": "POST",
"description": "Create object storage backup job.",
"parameters": [
{
"name": "name",
"description": "Display Name for object storage backup job",
"type": "string",
"required": true,
"example": "test"
},
{
"name": "destination",
"description": "Object storage destination for the backup",
"type": "string",
"required": true,
"example": "obsdst-00000001"
},
{
"name": "volume",
"description": "Volume to backup",
"type": "string",
"required": true,
"example": "volume-00000001"
},
{
"name": "policy",
"description": "snapshot policy for backup",
"type": "string",
"required": true,
"example": "policy-00000001"
},
{
"name": "compression",
"description": "enable compression",
"type": "string",
"required": true,
"options": "YES | NO",
"example": "YES"
},
{
"name": "sse",
"type": "string",
"required": true,
"options": "NO | AES256 | KMS | KMSKEYID",
"example": "AES256"
},
{
"name": "storage_class",
"description": "S3 storage class if the object storage destination is AWS S3. default is what configured on the bucket.",
"type": "string",
"required": false,
"options": "STANDARD | INTELLIGENT_TIERING | STANDARD_IA",
"example": "STANDARD"
}
],
"response": "\n\n 0 \n bkpjobs-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_backup_job_name\": \"bkpjobs-00000003\"\n }\n}"
},
{
"uri": "/object_storage_backup_jobs",
"method": "POST",
"description": "Create Azure cloud object storage backup job.",
"parameters": [
{
"name": "name",
"description": "Display Name for object storage backup job",
"type": "string",
"required": true,
"example": "test"
},
{
"name": "destination",
"description": "Object storage destination for the backup",
"type": "string",
"required": true,
"example": "obsdst-00000001"
},
{
"name": "volume",
"description": "Volume to backup",
"type": "string",
"required": true,
"example": "volume-00000001"
},
{
"name": "policy",
"description": "snapshot policy for backup",
"type": "string",
"required": true,
"example": "policy-00000001"
},
{
"name": "compression",
"description": "enable compression",
"type": "string",
"required": true,
"options": "YES | NO",
"example": "YES"
},
{
"name": "sse",
"description": "SSE - use 'NO'",
"type": "string",
"required": true,
"options": "NO",
"example": "NO"
},
{
"name": "storage_class",
"description": "BLOB storage tier.",
"type": "string",
"required": false,
"options": "HOT | COOL",
"example": "COOL"
}
],
"response": "\n\n 0 \n bkpjobs-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_backup_job_name\": \"bkpjobs-00000003\"\n }\n}"
},
{
"uri": "/object_storage_backup_jobs/{id}/pause",
"method": "POST",
"description": "Pause object storage backup job.",
"parameters": null,
"response": "\n\n 0 \n bkpjobs-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_backup_job_name\": \"bkpjobs-00000003\"\n }\n}"
},
{
"uri": "/object_storage_backup_jobs/{id}/update_storage_class",
"method": "POST",
"description": "Update a object storage backup job S3 storage class. only if Object storage destination is AWS S3.",
"parameters": [
{
"name": "storage_class",
"description": "new S3 storage class.",
"type": "string",
"options": "STANDARD | INTELLIGENT_TIERING | STANDARD_IA",
"example": "STANDARD"
}
],
"response": "\n\n bkpjobs-00000005 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"obs_backup_job_name\": \"bkpjobs-00000005\",\n \"status\": 0\n }\n}"
},
{
"uri": "/object_storage_backup_jobs/{id}/continue",
"method": "POST",
"description": "Continue object storage backup job.",
"parameters": null,
"response": "\n\n 0 \n bkpjobs-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_backup_job_name\": \"bkpjobs-00000003\"\n }\n}"
},
{
"uri": "/object_storage_backup_jobs/{id}/break",
"method": "POST",
"description": "Break object storage backup job.",
"parameters": [
{
"name": "purge_data",
"type": "string",
"options": "YES | NO",
"required": true,
"example": "YES"
},
{
"name": "delete_snaphots",
"type": "string",
"options": "YES | NO",
"required": true,
"example": "YES"
}
],
"response": "\n\n 0 \n bkpjobs-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_backup_job_name\": \"bkpjobs-00000003\"\n }\n}"
},
{
"uri": "/object_storage_backup_jobs/{id}/compression",
"method": "POST",
"description": "Set compression for object storage backup job.",
"parameters": [
{
"name": "compression",
"description": "enable compression",
"type": "string",
"options": "YES | NO",
"required": true,
"example": "YES"
}
],
"response": "\n\n 0 \n bkpjobs-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_backup_job_name\": \"bkpjobs-00000003\"\n }\n}"
},
{
"uri": "/object_storage_backup_jobs/{id}/rate_limit",
"method": "POST",
"description": "Update a object storage backup job rate limit (kb/s)",
"parameters": [
{
"name": "limit",
"type": "integer",
"description": "Rate limit in kb/s",
"example": 44
}
],
"response": "\n\n bkpjobs-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"obs_backup_job_name\": \"bkpjobs-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/object_storage_backup_jobs/{id}/replace_snapshot_policy",
"method": "POST",
"description": "Replace snapshot policy for object storage backup job.",
"parameters": [
{
"name": "policyname",
"description": "New policy Id",
"type": "string",
"required": true,
"example": "policy-00000003"
}
],
"response": "\n\n 0 \n bkpjobs-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_backup_job_name\": \"bkpjobs-00000003\"\n }\n}"
},
{
"uri": "/object_storage_backup_jobs/{id}/performance",
"method": "GET",
"description": "Show object storage backup job performance.",
"parameters": [
{
"name": "interval",
"description": "Interval in seconds between metered data",
"type": "string",
"example": 1
}
],
"response": "\n\n 0 \n 20 \n \n \n 0.000000 \n 0.000000 \n 0.000000 \n 0 \n 0.000000 \n 0.000000 \n 0.000000 \n 0 \n 2015-07-01T11:45:24+0300 \n \n \n 0.000000 \n 0.000000 \n 0.000000 \n 0 \n 0.000000 \n 0.000000 \n 0.000000 \n 0 \n 2015-07-01T11:45:25+0300 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"usages\": [\n {\n \"rd_iops\": 0.0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0.0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"time\": \"2015-07-01T11:45:24+0300\"\n },\n {\n \"rd_iops\": 0.0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0.0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"time\": \"2015-07-01T11:45:25+0300\"\n }\n ],\n \"count\": 20\n }\n}"
},
{
"uri": "/object_storage_restore_jobs",
"method": "GET",
"description": "List all object storage restore jobs.",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 2 \n \n \n rstjobs-00000003 \n restore_job_obssnap-00000001 \n Clone \n zadaratest.C97E9A00ADE7489BB08A9AB3B0B6484F/test1.vsa-0000015f/testvol.volume-00000002/2025-05-28T11:40:37+0000_snap-00000003 \n Normal \n 2015-05-28T14:40:37+0300 \n \n \n 0 \n 13 \n 0 \n N/A \n 2015-05-28T14:59:01+0300 \n 2015-05-28T14:59:08+0300 \n \n AWS_S3 \n us-east-1 \n s3.amazonaws.com \n zadarastorage-test \n \n \n cg-00000005 \n vol1 \n pool-00000001 \n pool1 \n \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_restore_jobs\": [\n {\n \"name\": \"rstjobs-00000003\",\n \"display_name\": \"restore_job_obssnap-00000001\",\n \"mode\": \"Clone\",\n \"obs_key\": \"zadaratest.C97E9A00ADE7489BB08A9AB3B0B6484F/test1.vsa-0000015f/testvol.volume-00000002/2025-05-28T11:40:37+0000_snap-00000003\",\n \"status\": \"Normal\",\n \"rpo\": \"2015-05-28T14:40:37+0300\",\n \"avg_sync_rate_kb_sec\": null,\n \"cur_sync_rate_kb_sec\": null,\n \"shipping_position_mb\": 0,\n \"total_capacity_mb\": \"13\",\n \"already_restored_mb\": 0,\n \"remaining_time_sec\": 0,\n \"created_at\": \"2015-05-28 11:59:01 UTC\",\n \"modified_at\": \"2015-05-28 11:59:08 UTC\",\n \"src\": {\n \"type\": \"AWS_S3\",\n \"region\": \"us-east-1\",\n \"endpoint\": \"s3.amazonaws.com\",\n \"bucket\": \"zadarastorage-test\"\n },\n \"dst\": {\n \"cg_name\": \"cg-00000005\",\n \"cg_display_name\": \"vol1\",\n \"pool_name\": \"pool-00000001\",\n \"pool_display_name\": \"pool1\"\n }\n }\n ],\n \"count\": 2\n }\n}"
},
{
"uri": "/object_storage_restore_jobs/{id}",
"method": "GET",
"description": "List one Object Storage restore job.",
"response": "\n\n 0 \n \n rstjobs-00000003 \n restore_job_obssnap-00000001 \n Clone \n zadaratest.C97E9A00ADE7489BB08A9AB3B0B6484F/test1.vsa-0000015f/testvol.volume-00000002/2025-05-28T11:40:37+0000_snap-00000003 \n Normal \n 2015-05-28T14:40:37+0300 \n \n \n 0 \n 13 \n 0 \n N/A \n 2015-05-28T14:59:01+0300 \n 2015-05-28T14:59:08+0300 \n \n AWS_S3 \n us-east-1 \n s3.amazonaws.com \n zadarastorage-test \n \n \n cg-00000005 \n vol1 \n pool-00000001 \n pool1 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_restore_job\": {\n \"name\": \"rstjobs-00000003\",\n \"display_name\": \"restore_job_obssnap-00000001\",\n \"mode\": \"Clone\",\n \"obs_key\": \"zadaratest.C97E9A00ADE7489BB08A9AB3B0B6484F/test1.vsa-0000015f/testvol.volume-00000002/2025-05-28T11:40:37+0000_snap-00000003\",\n \"status\": \"Normal\",\n \"rpo\": \"2015-05-28T14:40:37+0300\",\n \"avg_sync_rate_kb_sec\": null,\n \"cur_sync_rate_kb_sec\": null,\n \"shipping_position_mb\": 0,\n \"total_capacity_mb\": \"13\",\n \"already_restored_mb\": 0,\n \"remaining_time_sec\": 0,\n \"created_at\": \"2015-05-28 11:59:01 UTC\",\n \"modified_at\": \"2015-05-28 11:59:08 UTC\",\n \"src\": {\n \"type\": \"AWS_S3\",\n \"region\": \"us-east-1\",\n \"endpoint\": \"s3.amazonaws.com\",\n \"bucket\": \"zadarastorage-test\"\n },\n \"dst\": {\n \"cg_name\": \"cg-00000005\",\n \"cg_display_name\": \"vol1\",\n \"pool_name\": \"pool-00000001\",\n \"pool_display_name\": \"pool1\"\n }\n }\n }\n}"
},
{
"uri": "/object_storage_restore_jobs",
"method": "POST",
"description": "Create object storage restore job.\n Can be created from object storage key or from object storage snapshot name\n (key or local_snapname must be supplied)\n",
"parameters": [
{
"name": "name",
"description": "Display Name for object storage restore job",
"type": "string",
"example": "test"
},
{
"name": "mode",
"description": "mode",
"type": "string",
"required": true,
"example": "restore",
"options": "restore|clone|import_seed"
},
{
"name": "poolname",
"description": "Id of created volume's destination pool",
"type": "string",
"required": true,
"example": "pool-00000001"
},
{
"name": "volname",
"description": "Name of Created Volume",
"type": "string",
"required": true,
"example": "cloned volume"
},
{
"name": "remote_object_store",
"description": "Id of object storage destination",
"type": "string",
"required": true,
"example": "obsdst-00000001"
},
{
"name": "key",
"description": "Object storage key from bucket",
"type": "string",
"required": false,
"example": "cloud1.C97E9A00ADE7489BB08A9AB3B0B6484F/myvpsa.vsa-00000169/myvol.volume-00000011/2015-07-01T09:26:01+0000_snap-0000003e/"
},
{
"name": "local_snapname",
"description": "Object storage local snapshot name",
"type": "string",
"required": false
},
{
"name": "crypt",
"description": "Enable encryption on volume",
"type": "string",
"options": "YES | NO",
"required": false
},
{
"name": "dedupe",
"type": "string",
"options": "YES, NO",
"example": "YES",
"productType": "AFA",
"description": "Enable Dedupe For Restore Job."
},
{
"name": "compress",
"type": "string",
"options": "YES, NO",
"example": "YES",
"productType": "AFA",
"description": "Enable compress or Restore Job."
}
],
"response": "\n\n 0 \n bkpjobs-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_restore_job_name\": \"bkpjobs-00000003\"\n }\n}"
},
{
"uri": "/object_storage_restore_jobs/{id}/pause",
"method": "POST",
"description": "Pause object storage restore job.",
"parameters": null,
"response": "\n\n rstjobs-0000001b \n 12051 \n \n",
"response_json": "{\n \"response\": {\n \"obs_restore_job_name\": \"rstjobs-0000001b\",\n \"status\": 12051\n }\n}"
},
{
"uri": "/object_storage_restore_jobs/{id}/continue",
"method": "POST",
"description": "Continue object storage restore job.",
"parameters": null,
"response": "\n\n 0 \n bkpjobs-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_restore_job_name\": \"bkpjobs-00000003\"\n }\n}"
},
{
"uri": "/object_storage_restore_jobs/{id}/break",
"method": "POST",
"description": "Break object storage restore job.",
"parameters": null,
"response": "\n\n 0 \n bkpjobs-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_restore_job_name\": \"bkpjobs-00000003\"\n }\n}"
},
{
"uri": "/object_storage_restore_jobs/{id}/switch_mode",
"method": "POST",
"description": "Set restore mode for object storage restore job.",
"parameters": [
{
"name": "mode",
"description": "Mode to switch to",
"type": "string",
"options": "clone|restore",
"required": true,
"example": true
}
],
"response": "\n\n 0 \n bkpjobs-00000003 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"obs_restore_job_name\": \"bkpjobs-00000003\"\n }\n}"
},
{
"uri": "/object_storage_restore_jobs/{id}/performance",
"method": "GET",
"description": "Show object storage restore job performance.",
"parameters": [
{
"name": "interval",
"description": "Interval in seconds between metered data",
"type": "string",
"example": 1
}
],
"response": "\n\n 0 \n 20 \n \n \n 0.000000 \n 0.000000 \n 0.000000 \n 0 \n 0.000000 \n 0.000000 \n 0.000000 \n 0 \n 2015-07-01T14:13:26+0300 \n \n \n 0.000000 \n 0.000000 \n 0.000000 \n 0 \n 0.000000 \n 0.000000 \n 0.000000 \n 0 \n 2015-07-01T14:13:27+0300 \n \n \n 0.000000 \n 0.000000 \n 0.000000 \n 0 \n 0.000000 \n 0.000000 \n 0.000000 \n 0 \n 2015-07-01T14:13:28+0300 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"usages\": [\n {\n \"rd_iops\": 0.0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0.0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"time\": \"2015-07-01T14:13:26+0300\"\n },\n {\n \"rd_iops\": 0.0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0.0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"time\": \"2015-07-01T14:13:27+0300\"\n },\n {\n \"rd_iops\": 0.0,\n \"rd_iotime\": 0.0,\n \"rd_bandwidth\": 0.0,\n \"rd_queue_len\": 0,\n \"wrt_iops\": 0.0,\n \"wrt_iotime\": 0.0,\n \"wrt_bandwidth\": 0.0,\n \"wrt_queue_len\": 0,\n \"time\": \"2015-07-01T14:13:28+0300\"\n }\n ],\n \"count\": 20\n }\n}"
}
]
},
{
"name": "Images",
"description": "Operations involving Images.",
"methods": [
{
"uri": "/images",
"method": "GET",
"description": "Returns a list of all images.",
"response": "\n\n 0 \n 4 \n \n \n img-00000001 \n nginx \n normal \n True \n a785ba7493fd9009be71023045790697f334486b11a45f7e830652d39665a451 \n 0 \n 126 \n nginx \n latest \n 1 \n 2015-06-11T08:47:28+0300 \n 2015-06-11T08:48:36+0300 \n \n \n img-00000002 \n mysql \n normal \n True \n fa81ed084842076d1b39b56d084d99ec0011cd4a5ade1056be359486a8b213e4 \n 0 \n 179 \n ubuntu \n latest \n 1 \n 2015-06-11T11:23:47+0300 \n 2015-06-11T11:25:05+0300 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"images\": [\n {\n \"name\": \"img-00000001\",\n \"display_name\": \"nginx\",\n \"status\": \"normal\",\n \"is_layered\": \"True\",\n \"docker_id\": \"a785ba7493fd9009be71023045790697f334486b11a45f7e830652d39665a451\",\n \"license_state\": 0,\n \"capacity_mb\": 126,\n \"repository\": \"nginx\",\n \"tag\": \"latest\",\n \"volume_id\": 1,\n \"created_at\": \"2015-06-11 05:47:28 UTC\",\n \"modified_at\": \"2015-06-11 05:48:36 UTC\"\n },\n {\n \"name\": \"img-00000002\",\n \"display_name\": \"mysql\",\n \"status\": \"normal\",\n \"is_layered\": \"True\",\n \"docker_id\": \"fa81ed084842076d1b39b56d084d99ec0011cd4a5ade1056be359486a8b213e4\",\n \"license_state\": 0,\n \"capacity_mb\": 179,\n \"repository\": \"ubuntu\",\n \"tag\": \"latest\",\n \"volume_id\": 1,\n \"created_at\": \"2015-06-11 08:23:47 UTC\",\n \"modified_at\": \"2015-06-11 08:25:05 UTC\"\n }\n ],\n \"count\": 4\n }\n}"
},
{
"uri": "/images/{id}",
"method": "GET",
"description": "Show one image details.",
"response": "\n\n 0 \n \n img-00000002 \n mysql \n normal \n True \n fa81ed084842076d1b39b56d084d99ec0011cd4a5ade1056be359486a8b213e4 \n 0 \n 179 \n ubuntu \n latest \n 1 \n 2015-06-11T11:23:47+0300 \n 2015-06-11T11:25:05+0300 \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"image\": {\n \"name\": \"img-00000002\",\n \"display_name\": \"mysql\",\n \"status\": \"normal\",\n \"is_layered\": \"True\",\n \"docker_id\": \"fa81ed084842076d1b39b56d084d99ec0011cd4a5ade1056be359486a8b213e4\",\n \"license_state\": 0,\n \"capacity_mb\": 179,\n \"repository\": \"ubuntu\",\n \"tag\": \"latest\",\n \"volume_id\": 1,\n \"created_at\": \"2015-06-11 08:23:47 UTC\",\n \"modified_at\": \"2015-06-11 08:25:05 UTC\"\n }\n }\n}"
},
{
"uri": "/images/{id}",
"method": "DELETE",
"description": "Delete an Image.",
"response": "\n\n img-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"image_name\": \"img-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/images/{id}/containers",
"method": "GET",
"description": "Show Image Containers.",
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/images",
"method": "POST",
"description": "Create an Image.",
"parameters": [
{
"name": "name",
"type": "string",
"required": true,
"description": "Image display name",
"example": "image1"
},
{
"name": "mode",
"type": "string",
"required": true,
"description": "docker or volume",
"example": "docker"
},
{
"name": "volume",
"type": "string",
"description": "when importing from volume , provide the volume name (e.g volume-00000001)"
},
{
"name": "path",
"type": "string",
"required": true,
"example": "busybox",
"description": "The image path: when importing from volume provide path to image . when pulling from repository , provide image name. examples: docker/redis.tar (from volume) / ubuntu (from docker)"
}
],
"response": "\n\n img-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"image_name\": \"img-00000001\",\n \"status\": 0\n }\n}"
}
]
},
{
"name": "Containers",
"description": "Operations involving containers.",
"methods": [
{
"uri": "/containers",
"method": "GET",
"description": "Returns a list of all containers.",
"response": "\n\n 0 \n 2 \n \n \n container-00000001 \n n1 \n img-00000001 \n nginx \n 1 \n dgroup-00000001 \n default_dgroup \n normal \n \n ... \n True \n False \n b6466ad59d55e66b9313af29e7a62bd823ad7c283420b39e77a44e600d322d1c \n 2 \n 2 \n 0 \n 2015-06-11T08:49:31+0300 \n 2015-06-11T08:49:31+0300 \n \n \n \n \n \n 2 \n ... \n rw \n aaa \n File-System \n volume-00000002 \n False \n \n \n \n \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"containers\": [\n {\n \"name\": \"container-00000001\",\n \"display_name\": \"n1\",\n \"image_name\": \"img-00000001\",\n \"image_display_name\": \"nginx\",\n \"image_id\": 1,\n \"memory_pool_name\": \"dgroup-00000001\",\n \"memory_pool_display_name\": \"default_dgroup\",\n \"status\": \"normal\",\n \"entrypoint\": null,\n \"ip\": \"...\",\n \"udp\": \"True\",\n \"use_public_ip\": 0,\n \"docker_id\": \"b6466ad59d55e66b9313af29e7a62bd823ad7c283420b39e77a44e600d322d1c\",\n \"play_mode\": 2,\n \"server_id\": 2,\n \"exit_code\": 0,\n \"created_at\": \"2015-06-11 05:49:31 UTC\",\n \"modified_at\": \"2015-06-11 05:49:31 UTC\",\n \"started_at\": null,\n \"exit_at\": null,\n \"ports\": [\n\n ],\n \"volumes\": [\n {\n \"id\": 2,\n \"path\": \"...\",\n \"access\": \"rw\",\n \"display_name\": \"aaa\",\n \"data_type\": \"File-System\",\n \"name\": \"volume-00000002\",\n \"is_block\": 0\n }\n ],\n \"envvars\": [\n\n ],\n \"args\": [\n\n ]\n }\n ],\n \"count\": 2\n }\n}"
},
{
"uri": "/containers/{id}",
"method": "GET",
"description": "Show one container details.",
"response": "\n\n 0 \n \n container-00000001 \n n1 \n img-00000001 \n nginx \n 1 \n dgroup-00000001 \n default_dgroup \n normal \n \n ... \n True \n False \n b6466ad59d55e66b9313af29e7a62bd823ad7c283420b39e77a44e600d322d1c \n 2 \n 2 \n 0 \n 2015-06-11T08:49:31+0300 \n 2015-06-11T08:49:31+0300 \n \n \n \n \n \n 2 \n ... \n rw \n aaa \n File-System \n volume-00000002 \n False \n \n \n \n \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"container\": {\n \"name\": \"container-00000001\",\n \"display_name\": \"n1\",\n \"image_name\": \"img-00000001\",\n \"image_display_name\": \"nginx\",\n \"image_id\": 1,\n \"memory_pool_name\": \"dgroup-00000001\",\n \"memory_pool_display_name\": \"default_dgroup\",\n \"status\": \"normal\",\n \"entrypoint\": null,\n \"ip\": \"...\",\n \"udp\": \"True\",\n \"use_public_ip\": 0,\n \"docker_id\": \"b6466ad59d55e66b9313af29e7a62bd823ad7c283420b39e77a44e600d322d1c\",\n \"play_mode\": 2,\n \"server_id\": 2,\n \"exit_code\": 0,\n \"created_at\": \"2015-06-11 05:49:31 UTC\",\n \"modified_at\": \"2015-06-11 05:49:31 UTC\",\n \"started_at\": null,\n \"exit_at\": null,\n \"ports\": [\n\n ],\n \"volumes\": [\n {\n \"id\": 2,\n \"path\": \"...\",\n \"access\": \"rw\",\n \"display_name\": \"aaa\",\n \"data_type\": \"File-System\",\n \"name\": \"volume-00000002\",\n \"is_block\": 0\n }\n ],\n \"envvars\": [\n\n ],\n \"args\": [\n\n ],\n \"links\": [\n\n ]\n }\n }\n}"
},
{
"uri": "/containers/{id}",
"method": "DELETE",
"description": "Delete a container.",
"response": "\n\n container-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"container_name\": \"container-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/containers/{id}/start",
"method": "POST",
"description": "Start a container.",
"response": "\n\n container-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"container_name\": \"container-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/containers/{id}/stop",
"method": "POST",
"description": "Stop a container.",
"response": "\n\n container-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"container_name\": \"container-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/containers",
"method": "POST",
"description": "Create a container.",
"parameters": [
{
"name": "name",
"type": "string",
"required": true,
"description": "Display name",
"example": "container1"
},
{
"name": "imagename",
"type": "string",
"required": true,
"description": "Image name",
"example": "image-00000001"
},
{
"name": "use_public_ip",
"type": "string",
"required": true,
"description": "Use public ip (or frontend ip)",
"example": "YES"
},
{
"name": "start",
"type": "string",
"description": "Start the container after creation",
"example": "YES"
},
{
"name": "volumes",
"type": "Array",
"description": "Volumes to attach to container (access_type:vol-name:path)",
"example": "[{\"name\":\"volume-00000001\",\"path\":\"/path/to/folder\",\"access\":\"rw\"},{\"name\":\"volume-00000002\",\"path\":\"/path/to/folder2\",\"access\":\"rw\"}]",
"example_as_json_string": true
},
{
"name": "ports",
"type": "Array",
"description": "Exposed ports",
"example": "[{\"protocol\":\"tcp\",\"low\":22,\"high\":null , \"internal_low\": 9999}, {\"protocol\":\"udp\",\"low\":33,\"high\":35}]",
"example_as_json_string": true
},
{
"name": "args",
"type": "Array",
"description": "Args list",
"example": [
{
"arg": "--compress"
},
{
"arg": "--verbose"
}
]
},
{
"name": "envvars",
"type": "Array",
"description": "Environment variables",
"example": "[{\"variable\":\"var1\",\"value\":5},{\"variable\":\"var2\",\"value\":2}]",
"example_as_json_string": true
},
{
"name": "entrypoint",
"type": "string",
"description": "Entry point - the script to run when starting the container",
"example": "/usr/sbin/sshd"
},
{
"name": "link",
"type": "Array",
"description": "Link to other containers",
"example": "[\"container-00000001\" , \"container-00000002\"]",
"example_as_json_string": true
},
{
"name": "memorypoolname",
"type": "string",
"description": "Container memory pool",
"example": "dgroup-00000001"
}
],
"response": "\n\n container-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"container_name\": \"container-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/containers/{id}/performance",
"method": "GET",
"description": "Returns the last 60 data points of performance data for the specified interval.",
"parameters": [
{
"name": "interval",
"type": "integer",
"example": 1,
"description": "The interval between data points, in seconds."
}
],
"response": "\n\n container-00000001 \n 0 \n 20 \n \n \n 0 \n 2014-08-27T11:50:45+0300 \n \n \n 0 \n 2014-08-27T11:50:45+0300 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"container_name\": \"container-00000001\",\n \"status\": 0,\n \"usages\": [\n {\n \"mem_used\": 0.0,\n \"time\": \"2014-08-27T11:50:45+0300\"\n },\n {\n \"mem_used\": 0.0,\n \"time\": \"2014-08-27T11:50:45+0300\"\n }\n ],\n \"count\": 20\n }\n}"
},
{
"uri": "/container_memory_pools",
"method": "GET",
"description": "Returns a list of all container memory pools.",
"response": "\n\n 0 \n 2 \n \n \n dgroup-00000001 \n n1 \n 333 \n \n \n aaa \n volume-00000002 \n \n \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"container_memory_pools\": [\n {\n \"name\": \"dgroup-00000001\",\n \"display_name\": \"n1\",\n \"mb\": \"333\",\n \"containers\": [\n {\n \"display_name\": \"aaa\",\n \"name\": \"volume-00000002\"\n }\n ]\n }\n ],\n \"count\": 2\n }\n}"
},
{
"uri": "/container_memory_pools/{id}",
"method": "GET",
"description": "Show one container memory pool details.",
"response": "\n\n 0 \n \n dgroup-00000001 \n n1 \n 333 \n \n \n aaa \n volume-00000002 \n \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"container_memory_pool\": {\n \"name\": \"dgroup-00000001\",\n \"display_name\": \"n1\",\n \"mb\": \"333\",\n \"containers\": [\n {\n \"display_name\": \"aaa\",\n \"name\": \"volume-00000002\"\n }\n ]\n }\n }\n}"
},
{
"uri": "/container_memory_pools",
"method": "POST",
"description": "Create a container memory pool.",
"parameters": [
{
"name": "name",
"type": "string",
"required": true,
"description": "Display name",
"example": "cmpool1"
},
{
"name": "mb",
"type": "integer",
"required": true,
"description": "memory limit (MB)",
"example": "1500"
}
],
"response": "\n\n dgroup-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"container_memory_pool_name\": \"dgroup-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/container_memory_pools/{id}",
"method": "DELETE",
"description": "Delete a container memory pool.",
"response": "\n\n dgroup-00000001 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"container_memory_pool_name\": \"dgroup-00000001\",\n \"status\": 0\n }\n}"
},
{
"uri": "/container_memory_pools/{id}/performance",
"method": "GET",
"description": "Returns the last 60 data points of performance data for the specified interval.",
"parameters": [
{
"name": "interval",
"type": "integer",
"example": 1,
"description": "The interval between data points, in seconds."
}
],
"response": "\n\n dgroup-00000001 \n 0 \n 20 \n \n \n 0 \n 2014-08-27T11:50:45+0300 \n \n \n 0 \n 2014-08-27T11:50:45+0300 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"container_memory_pool_name\": \"dgroup-00000001\",\n \"status\": 0,\n \"usages\": [\n {\n \"mem_used\": 0.0,\n \"time\": \"2014-08-27T11:50:45+0300\"\n },\n {\n \"mem_used\": 0.0,\n \"time\": \"2014-08-27T11:50:45+0300\"\n }\n ],\n \"count\": 20\n }\n}"
}
]
},
{
"name": "Snapshot Policies",
"description": "Operations for Snapshot Policies.",
"methods": [
{
"uri": "/snapshot_policies",
"description": "Return a list of Snapshot Policies.",
"method": "GET",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 3 \n \n \n policy-00000002 \n Hourly Snapshots for a Day \n 0 * * * * \n N24 \n N24 \n NO \n YES \n 2013-09-25 09:22:25 \n 2013-09-25 09:22:25 \n \n \n policy-00000003 \n Daily Snapshots for a Week \n 0 0 * * * \n N7 \n N7 \n NO \n NO \n 2013-09-25 09:22:25 \n 2013-09-25 09:22:25 \n \n \n policy-00000004 \n Weekly Snapshots for a Year \n 0 0 * * 0 \n N53 \n N53 \n NO \n NO \n 2013-09-25 09:22:25 \n 2013-09-25 09:22:25 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"snapshot_policies\": [\n {\n \"name\": \"policy-00000002\",\n \"display_name\": \"Hourly Snapshots for a Day\",\n \"create_policy\": \"0 * * * *\",\n \"delete_policy\": \"N24\",\n \"destination_delete_policy\": \"N24\",\n \"paused\": \"NO\",\n \"create_empty\": false,\n \"created_at\": \"2013-09-25 09:22:25 UTC\",\n \"modified_at\": \"2013-09-25 09:22:25 UTC\"\n },\n {\n \"name\": \"policy-00000003\",\n \"display_name\": \"Daily Snapshots for a Week\",\n \"create_policy\": \"0 0 * * *\",\n \"delete_policy\": \"N7\",\n \"destination_delete_policy\": \"N7\",\n \"paused\": \"NO\",\n \"create_empty\": false,\n \"created_at\": \"2013-09-25 09:22:25 UTC\",\n \"modified_at\": \"2013-09-25 09:22:25 UTC\"\n },\n {\n \"name\": \"policy-00000004\",\n \"display_name\": \"Weekly Snapshots for a Year\",\n \"create_policy\": \"0 0 * * 0\",\n \"delete_policy\": \"N53\",\n \"destination_delete_policy\": \"N53\",\n \"paused\": \"NO\",\n \"create_empty\": false,\n \"created_at\": \"2013-09-25 09:22:25 UTC\",\n \"modified_at\": \"2013-09-25 09:22:25 UTC\"\n }\n ],\n \"count\": 3\n }\n}"
},
{
"uri": "/snapshot_policies/{id}",
"method": "GET",
"description": "Show a Snapshot Policy.",
"response": "\n\n 0 \n \n policy-00000002 \n Hourly Snapshots for a Day \n 0 * * * * \n N24 \n N24 \n NO \n 2013-09-25 09:22:25 \n 2013-09-25 09:22:25 \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"snapshot_policy\": {\n \"name\": \"policy-00000002\",\n \"display_name\": \"Hourly Snapshots for a Day\",\n \"create_policy\": \"0 * * * *\",\n \"delete_policy\": \"N24\",\n \"destination_delete_policy\": \"N24\",\n \"paused\": \"NO\",\n \"created_at\": \"2013-09-25 09:22:25 UTC\",\n \"modified_at\": \"2013-09-25 09:22:25 UTC\"\n }\n }\n}"
},
{
"uri": "/snapshot_policies",
"method": "POST",
"description": "Create a Snapshot Policy.",
"parameters": [
{
"name": "name",
"required": true,
"type": "string",
"description": "Snapshot policy name",
"example": "my-policy"
},
{
"name": "create_policy",
"required": true,
"type": "string",
"description": "Define the minimal interval of snapshot creation. The format is similar to a cron job - Minute, Hour, Day of Month, Month, Day Of Week (Minute supports random value - D0)",
"example": "5 * * * *"
},
{
"name": "delete_policy",
"required": true,
"type": "string",
"description": "minutes hours days or N number_of_snapshots_to_keep.",
"example": "N7"
},
{
"name": "destination_policy",
"type": "string",
"description": "Relevant only for Remote Mirroring where the remote Volume snapshot deletion policy is different than the source Volume. Set N number_of_snapshots_to_keep.",
"example": "N6"
},
{
"name": "empty",
"type": "string",
"description": "Allow empty creation snapshots (snapshot even when no data has changed)",
"options": "YES, NO",
"example": false
},
{
"name": "attach",
"type": "string",
"description": "Attach policy by default for new volumes",
"options": "YES, NO",
"example": false
}
],
"response": "\n\n policy-00000005 \n 0 \n \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_policy_name\": \"policy-00000005\",\n \"status\": 0\n }\n}"
},
{
"uri": "/snapshot_policies/{id}",
"method": "DELETE",
"description": "Delete a Snapshot Policy. The Policy must not be attached to any Volume",
"response": "\n\n policy-00000005 \n 0 \n \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_policy_name\": \"policy-00000005\",\n \"status\": 0\n }\n}"
},
{
"uri": "/snapshot_policies/{id}",
"method": "PUT",
"description": "Update a Snapshot Policy creation and deletion rules. The update will apply to all Volumes to which this policy is applied",
"parameters": [
{
"name": "displayname",
"required": false,
"type": "string",
"description": "Snapshot policy name",
"example": "my-policy"
},
{
"name": "create_policy",
"required": true,
"type": "string",
"example": "5 * * * *",
"description": "Define the minimal interval of snapshot creation. The format is similar to a cron job - Minute, Hour, Day of Month, Month, Day Of Week (Minute supports random value - D0)"
},
{
"name": "delete_policy",
"required": true,
"description": "minutes hours days or N number_of_snapshots_to_keep.",
"type": "string",
"example": "N7"
},
{
"name": "destination_policy",
"type": "string",
"example": "N6",
"description": "Relevant only for Remote Mirroring where the remote Volume snapshot deletion policy is different than the source Volume. Set N number_of_snapshots_to_keep."
},
{
"name": "empty",
"type": "string",
"description": "Allow empty creation snapshots (snapshot even when no data has changed)",
"options": "YES, NO",
"example": false
}
],
"response": "\n\n policy-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_policy_name\": \"policy-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/snapshot_policies/{id}/rename",
"method": "POST",
"description": "Rename a Snapshot Policy.",
"parameters": [
{
"name": "new_name",
"type": "string",
"required": true,
"description": "Snapshot policy new name",
"example": "my-policy"
}
],
"response": "\n\n policy-00000003 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"snapshot_policy_name\": \"policy-00000003\",\n \"status\": 0\n }\n}"
},
{
"uri": "/snapshot_policies/{id}/volumes",
"method": "GET",
"description": "Show Volumes using a Snapshot Policy.",
"response": "\n\n 0 \n 1 \n \n \n volume-00000001 \n test \n test \n cg-00000001 \n NO \n p1 \n pool-00000001 \n Available \n 55 \n \n File-System \n NO \n NO \n 0 \n -1.0 \n -1.0 \n \n \n 150.50.2.133:/export/test \n \\\\150.50.2.133\\test \n YES \n NO \n NO \n NO \n NO \n NO \n NO \n NO \n YES \n 0744 \n 0755 \n 1 \n YES \n \n desired \n NO \n NO \n NO \n NO \n 60 \n 360 \n off \n off \n off \n \n \n \n 10 \n NO \n NO \n YES \n NO \n NO \n 0 \n 0 \n 0 \n 0 \n \n \n 2017-08-30T07:34:32+00:00 \n 2017-08-30T07:34:33+00:00 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"volumes\": [\n {\n \"name\": \"volume-00000001\",\n \"display_name\": \"test\",\n \"cg_display_name\": \"test\",\n \"cg_name\": \"cg-00000001\",\n \"cg_user_created\": \"NO\",\n \"pool_display_name\": \"p1\",\n \"pool_name\": \"pool-00000001\",\n \"status\": \"Available\",\n \"virtual_capacity\": 55,\n \"server_name\": null,\n \"data_type\": \"File-System\",\n \"thin\": \"NO\",\n \"encryption\": \"NO\",\n \"encryption_key_size\": \"0\",\n \"allocated_capacity\": -1.0,\n \"data_copies_capacity\": -1.0,\n \"access_type\": null,\n \"read_only\": null,\n \"nfs_export_path\": \"150.50.2.133:/export/test\",\n \"smb_export_path\": \"\\\\\\\\150.50.2.133\\\\test\",\n \"mount_sync\": \"YES\",\n \"atime_update\": \"NO\",\n \"ext_metering\": \"NO\",\n \"images_repo\": \"NO\",\n \"nfs_root_squash\": \"NO\",\n \"smb_only\": \"NO\",\n \"smb_guest\": \"NO\",\n \"smb_windows_acl\": \"NO\",\n \"smb_map_archive\": \"YES\",\n \"smb_file_create_mask\": \"0744\",\n \"smb_dir_create_mask\": \"0755\",\n \"smb_aio_size\": 1,\n \"smb_browseable\": \"YES\",\n \"smb_hidden_files\": null,\n \"smb_encryption_mode\": \"desired\",\n \"smb_hide_unreadable\": \"NO\",\n \"smb_hide_unwriteable\": \"NO\",\n \"smb_hide_dot_files\": \"NO\",\n \"smb_store_dos_attributes\": \"NO\",\n \"capacity_history\": 60,\n \"alert_mode\": 360,\n \"uquota_state\": \"off\",\n \"gquota_state\": \"off\",\n \"pquota_state\": \"off\",\n \"target\": null,\n \"lun\": null,\n \"cache\": null,\n \"tenant_id\": 10,\n \"has_mirror\": \"NO\",\n \"has_backup\": \"NO\",\n \"has_snapshots\": \"YES\",\n \"shadow_copy_enabled\": \"NO\",\n \"is_shadow_copy_clone\": \"NO\",\n \"read_iops_limit\": \"0\",\n \"read_mbps_limit\": \"0\",\n \"write_iops_limit\": \"0\",\n \"write_mbps_limit\": \"0\",\n \"thresholds\": null,\n \"comment\": null,\n \"created_at\": \"2017-08-30 07:34:32 UTC\",\n \"modified_at\": \"2017-08-30 07:34:33 UTC\"\n }\n ],\n \"count\": 1\n }\n}"
}
]
},
{
"name": "Snapshots",
"description": "Operations for Snapshots.",
"methods": [
{
"uri": "/snapshots",
"method": "GET",
"description": "Get snapshots.",
"response": "\n 0 \n 85 \n \n \n snap-00000212 \n aa \n normal \n smb_metadata \n cg-0000000a \n pool-00010001 \n Snapshot Manager \n volume-00000001 \n v1 \n 102400 \n 2020-03-08T12:21:33+0000 \n 2020-03-08T12:21:33+0000 \n \n \n snap-0000021d \n s-r28-r29-r2a-1601772602420 \n normal \n share-26acf7eb-9943-434a-931f-2b80e490a0ba \n cg-0000017e \n pool-00010002 \n Snapshot Manager \n volume-00000002 \n v2 \n 102400 \n 2020-10-04T00:50:02+0000 \n 2020-10-04T00:50:02+0000 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"snapshots\": [\n {\n \"name\": \"snap-00000212\",\n \"display_name\": \"aa\",\n \"status\": \"normal\",\n \"cg_display_name\": \"smb_metadata\",\n \"cg_name\": \"cg-0000000a\",\n \"pool_name\": \"pool-00010001\",\n \"application\": \"Snapshot Manager\",\n \"volume_ext_name\": \"volume-00000001\",\n \"volume_display_name\": \"v1\",\n \"volume_capacity_mb\": 102400,\n \"created_at\": \"2020-03-08 12:21:33 UTC\",\n \"modified_at\": \"2020-03-08 12:21:33 UTC\"\n },\n {\n \"name\": \"snap-0000021d\",\n \"display_name\": \"s-r28-r29-r2a-1601772602420\",\n \"status\": \"normal\",\n \"cg_display_name\": \"share-26acf7eb-9943-434a-931f-2b80e490a0ba\",\n \"cg_name\": \"cg-0000017e\",\n \"pool_name\": \"pool-00010002\",\n \"application\": \"Snapshot Manager\",\n \"volume_ext_name\": \"volume-00000002\",\n \"volume_display_name\": \"v2\",\n \"volume_capacity_mb\": 102400,\n \"created_at\": \"2020-10-04 00:50:02 UTC\",\n \"modified_at\": \"2020-10-04 00:50:02 UTC\"\n }\n ],\n \"count\": 85\n }\n}"
},
{
"uri": "/snapshots/snapshots_set",
"method": "POST",
"description": "Creates a snapshot set.",
"parameters": [
{
"name": "snapshots_set_1_snap1",
"type": "Object",
"description": "First snapshot for the snapshot set.",
"example": "{name: \"snap1\", cg: \"cg-00000001\"}",
"example_as_json_string": true,
"required": true
},
{
"name": "snapshots_set_2_snap2",
"type": "Object",
"description": "Second snapshot for the snapshot set."
},
{
"name": "snapshots_set_3_snap3",
"type": "Object",
"description": "Second snapshot for the snapshot set."
},
{
"name": "...",
"type": "Object"
}
],
"response": "\n 0 \n 2 \n \n snap-00000005 \n snap-00000006 \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"snapshots\": [\n \"snap-00000005\",\n \"snap-00000006\"\n ],\n \"count\": 2\n }\n}"
}
]
},
{
"name": "Users",
"description": "Operations for Users.",
"methods": [
{
"uri": "/users",
"description": "List all users.",
"method": "GET",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 1 \n \n \n 1 \n primaryuser \n email@example.com \n true \n \n drives_view \n \n \n \n 60 \n Read Only \n \n \n Asia/Jerusalem \n true \n \n \n \n",
"response_json": "{\n \"response\": {\n \"users\": [\n {\n \"id\": 1,\n \"username\": \"primaryuser\",\n \"email\": \"email@example.com\",\n \"primary\": true,\n \"permissions\": [\n \"drives_view\"\n ],\n \"roles\": [\n {\n \"id\": 60,\n \"name\": \"Read Only\"\n }\n ],\n \"display_timezone\": \"Asia/Jerusalem\",\n \"notify_on_events\": true\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/users",
"method": "POST",
"description": "Adds a new user. Available to the primary user only.",
"parameters": [
{
"name": "username",
"type": "string",
"description": "The new username",
"example": "johndoe",
"required": true
},
{
"name": "email",
"type": "string",
"required": true,
"description": "The new user email",
"example": "johndoe@company.com"
},
{
"name": "notify_on_events",
"type": "string",
"options": "YES,NO",
"description": "Notify on system events",
"example": "YES"
},
{
"name": "notification_severity",
"type": "string",
"options": "low|normal|high|urgent",
"description": "System events minimum severity to notify (valid only for users with notify_on_events enabled)",
"example": "high"
}
],
"response": "\n\n 0 \n User newuser created. Please provide the user with the following temporary passcode which they can use to create a password during their first login attempt:ThDd9Mfn \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"message\": \"User created. Please provide the user with the following temporary passcode which they can use to create a password during their first login attempt:\"\n }\n}"
},
{
"uri": "/users/{username}",
"method": "DELETE",
"description": "Delete a user. Available to the primary user only.",
"response": "\n\n 0 \n User deletion successful. \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"message\": \"User deletion successful.\"\n }\n}"
},
{
"uri": "/users/{username}/access_key",
"description": "Reset a user's access key.",
"nokey": true,
"method": "POST",
"parameters": [
{
"name": "username",
"type": "string",
"required": true,
"example": "johndoe",
"description": "Username or email address."
},
{
"name": "password",
"type": "string",
"required": true,
"example": "mysupersecretpassword",
"description": "The user password"
},
{
"name": "otp_attempt",
"type": "string",
"required": false,
"example": "103245",
"description": "A dual factor authentication token"
}
],
"response": "\n\n 0 \n Access key changed. \n AWLBF0IV0CJE81L6L0OL-24 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"key\": \"AWLBF0IV0CJE81L6L0OL-24\",\n \"message\": \"Access key changed.\"\n }\n}"
},
{
"uri": "/users/login",
"description": "Returns a user's details.",
"nokey": true,
"method": "POST",
"parameters": [
{
"name": "user",
"type": "string",
"required": true,
"example": "johndoe",
"description": "Username or email address."
},
{
"name": "password",
"type": "string",
"required": true,
"example": "mysupersecretpassword",
"description": "The user password"
}
],
"response": "\n\n 0 \n \n 1 \n johndoe \n johndoe@company.com \n \n drives_view \n \n false \n \n \n 58 \n Read Only \n \n \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"user\": {\n \"id\": 1,\n \"username\": \"johndoe\",\n \"email\": \"johndoe@company.com\",\n \"permissions\": [\n \"drives_view\"\n ],\n \"locked\": false,\n \"roles\": [\n {\n \"id\": 58,\n \"name\": \"Read Only\"\n }\n ],\n \"display_timezone\": null\n }\n }\n}"
},
{
"uri": "/users/password",
"method": "POST",
"description": "Change a user's password.",
"parameters": [
{
"name": "user",
"type": "string",
"required": true,
"example": "johndoe"
},
{
"name": "password",
"type": "string",
"required": true,
"description": "Existing password.",
"example": "mysupersecretpassword"
},
{
"name": "new_password",
"type": "string",
"required": true,
"description": "New password.",
"example": "mynewsupersecretpassword"
}
],
"response": "\n\n 0 \n Password changed. \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"message\": \"Password changed.\"\n }\n}"
},
{
"uri": "/users/{username}/password_code",
"method": "POST",
"nokey": true,
"description": "Change a user's password using a temporary password code.",
"parameters": [
{
"name": "user",
"required": true,
"type": "string",
"example": "Y5cHbh",
"description": "username"
},
{
"name": "code",
"required": true,
"type": "string",
"example": "Y5cHbh",
"description": "temporary password code"
},
{
"name": "new_password",
"required": true,
"type": "string",
"example": "mynewpassword",
"description": "New password"
}
],
"response": "\n\n 0 \n Password set successfully. \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"message\": \"Password set successfully.\"\n }\n}"
},
{
"uri": "/users/reset_password",
"method": "POST",
"description": "Issues a temporary password code to reset a user's password.",
"parameters": [
{
"name": "username",
"required": true,
"description": "User to reset password",
"type": "string",
"example": "johndoe"
}
],
"response": "\n\n 0 \n Success! \n \n",
"response_json": "{\n \"status\": 0,\n \"status_msg\": \"Success!\"\n}"
},
{
"uri": "/users/admin_access/enable",
"method": "POST",
"description": "Enables cloud admin access.",
"response": "\n\n 0 \n Admin access enabled. \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"message\": \"Admin access enabled.\"\n }\n}"
},
{
"uri": "/users/admin_access/disable",
"method": "POST",
"description": "Disables cloud admin access.",
"response": "\n\n 0 \n Admin access disabled. \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"message\": \"Admin access disabled.\"\n }\n}"
},
{
"uri": "/users/{username}",
"method": "PUT",
"description": "Update a user's info.",
"parameters": [
{
"name": "email",
"type": "string",
"example": "example@example.com",
"description": "A new email address for the user."
},
{
"name": "notify_on_events",
"type": "boolean",
"options": "true,false",
"description": "Notify on system events",
"example": true
}
],
"response": "\n\n user 2 updated \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"message\": \"user 2 updated\",\n \"status\": 0\n }\n}"
},
{
"uri": "/users/{username}/roles",
"method": "POST",
"description": "Update a user's roles.",
"parameters": [
{
"name": "roles",
"type": "Array",
"example": [
2,
3
],
"description": "Array of role ids.",
"required": true
}
],
"response": "\n\n 0 \n User roles updated \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"message\": \"User roles updated\"\n }\n}"
},
{
"uri": "/users/password_requirements_settings",
"method": "GET",
"description": "Get the password requirements settings.",
"response": "\n\n 0 \n \n 9 \n should contain numbers, letters, uppercase letters and special characters. \n \n ",
"response_json": "{\n \"response\": {\n \"status\": \"0\",\n \"password_requirements_data\": {\n \"min_password_length\": \"9\",\n \"password_requirements_text\": \"should contain numbers, letters, uppercase letters and special characters.\"\n }\n }\n}"
}
]
},
{
"name": "Roles",
"description": "Operations for Roles.",
"methods": [
{
"uri": "/roles",
"description": "List all roles.",
"method": "GET",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 1 \n \n \n 1 \n Read Only \n \n \n drives_view \n view \n drives \n \n \n raid_groups_view \n view \n raid_groups \n \n \n pools_view \n view \n pools \n \n \n volumes_view \n view \n volumes \n \n \n servers_view \n view \n servers \n \n \n vcontrollers_view \n view \n vcontrollers \n \n \n remote_vpsas_view \n view \n remote_vpsas \n \n \n mirror_jobs_view \n view \n mirror_jobs \n \n \n images_view \n view \n images \n \n \n containers_view \n view \n containers \n \n \n object_storage_destinations_view \n view \n object_storage_destinations \n \n \n object_storage_backup_jobs_view \n view \n object_storage_backup_jobs \n \n \n object_storage_restore_jobs_view \n view \n object_storage_restore_jobs \n \n \n snapshot_policies_view \n view \n snapshot_policies \n \n \n snapshots_view \n view \n snapshots \n \n \n nas_users_view \n view \n nas_users \n \n \n nas_groups_view \n view \n nas_groups \n \n \n active_directory_view \n view \n active_directory \n \n \n forums_view \n view \n forums \n \n \n tickets_view \n view \n tickets \n \n \n settings_view \n view \n settings \n \n \n users_view \n view \n users \n \n \n dashboard_view \n view \n dashboard \n \n \n performance_monitor_view \n view \n performance_monitor \n \n \n zios_policies_name_view \n name_view \n zios_policies \n \n \n users_view \n users_view \n zios_roles \n \n \n true \n true \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"roles\": [\n {\n \"id\": 1,\n \"name\": \"Read Only\",\n \"permissions\": [\n {\n \"key\": \"drives_view\",\n \"name\": \"view\",\n \"module\": \"drives\"\n },\n {\n \"key\": \"raid_groups_view\",\n \"name\": \"view\",\n \"module\": \"raid_groups\"\n },\n {\n \"key\": \"pools_view\",\n \"name\": \"view\",\n \"module\": \"pools\"\n },\n {\n \"key\": \"volumes_view\",\n \"name\": \"view\",\n \"module\": \"volumes\"\n },\n {\n \"key\": \"servers_view\",\n \"name\": \"view\",\n \"module\": \"servers\"\n },\n {\n \"key\": \"vcontrollers_view\",\n \"name\": \"view\",\n \"module\": \"vcontrollers\"\n },\n {\n \"key\": \"remote_vpsas_view\",\n \"name\": \"view\",\n \"module\": \"remote_vpsas\"\n },\n {\n \"key\": \"mirror_jobs_view\",\n \"name\": \"view\",\n \"module\": \"mirror_jobs\"\n },\n {\n \"key\": \"images_view\",\n \"name\": \"view\",\n \"module\": \"images\"\n },\n {\n \"key\": \"containers_view\",\n \"name\": \"view\",\n \"module\": \"containers\"\n },\n {\n \"key\": \"object_storage_destinations_view\",\n \"name\": \"view\",\n \"module\": \"object_storage_destinations\"\n },\n {\n \"key\": \"object_storage_backup_jobs_view\",\n \"name\": \"view\",\n \"module\": \"object_storage_backup_jobs\"\n },\n {\n \"key\": \"object_storage_restore_jobs_view\",\n \"name\": \"view\",\n \"module\": \"object_storage_restore_jobs\"\n },\n {\n \"key\": \"snapshot_policies_view\",\n \"name\": \"view\",\n \"module\": \"snapshot_policies\"\n },\n {\n \"key\": \"snapshots_view\",\n \"name\": \"view\",\n \"module\": \"snapshots\"\n },\n {\n \"key\": \"nas_users_view\",\n \"name\": \"view\",\n \"module\": \"nas_users\"\n },\n {\n \"key\": \"nas_groups_view\",\n \"name\": \"view\",\n \"module\": \"nas_groups\"\n },\n {\n \"key\": \"active_directory_view\",\n \"name\": \"view\",\n \"module\": \"active_directory\"\n },\n {\n \"key\": \"forums_view\",\n \"name\": \"view\",\n \"module\": \"forums\"\n },\n {\n \"key\": \"tickets_view\",\n \"name\": \"view\",\n \"module\": \"tickets\"\n },\n {\n \"key\": \"settings_view\",\n \"name\": \"view\",\n \"module\": \"settings\"\n },\n {\n \"key\": \"users_view\",\n \"name\": \"view\",\n \"module\": \"users\"\n },\n {\n \"key\": \"dashboard_view\",\n \"name\": \"view\",\n \"module\": \"dashboard\"\n },\n {\n \"key\": \"performance_monitor_view\",\n \"name\": \"view\",\n \"module\": \"performance_monitor\"\n },\n {\n \"key\": \"zios_policies_name_view\",\n \"name\": \"name_view\",\n \"module\": \"zios_policies\"\n },\n {\n \"key\": \"users_view\",\n \"name\": \"users_view\",\n \"module\": \"zios_roles\"\n }\n ],\n \"new_user_default\": true,\n \"locked\": true\n }\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/roles/all_permissions",
"description": "List all available permissions.",
"method": "GET",
"response": "\n\n 4 \n \n \n drives_view \n view \n view \n 1 \n Drives \n \n \n drives_create \n create \n create \n 0 \n Drives \n \n \n drives_update \n update \n update \n 0 \n Drives \n \n \n drives_delete \n delete \n delete \n 0 \n Drives \n \n \n \n",
"response_json": "{\n \"permissions_count\": 4,\n \"permissions\": [\n {\n \"key\": \"drives_view\",\n \"type\": \"view\",\n \"name\": \"view\",\n \"read\": \"1\",\n \"module\": \"Drives\"\n },\n {\n \"key\": \"drives_create\",\n \"type\": \"create\",\n \"name\": \"create\",\n \"read\": \"0\",\n \"module\": \"Drives\"\n },\n {\n \"key\": \"drives_update\",\n \"type\": \"update\",\n \"name\": \"update\",\n \"read\": \"0\",\n \"module\": \"Drives\"\n },\n {\n \"key\": \"drives_delete\",\n \"type\": \"delete\",\n \"name\": \"delete\",\n \"read\": \"0\",\n \"module\": \"Drives\"\n }\n ]\n}"
},
{
"uri": "/roles",
"method": "POST",
"description": "Add a new role.",
"parameters": [
{
"name": "name",
"type": "string",
"description": "The new role name",
"example": "role1",
"required": true
},
{
"name": "permissions",
"type": "Array",
"example": [
"drives_create",
"drives_update",
"drives_delete"
],
"description": "Array of permissions names.",
"required": true
}
],
"response": "\n\n 0 \n Operation successful \n 1 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"role_id\": 1,\n \"message\": \"Operation successful\"\n }\n}"
},
{
"uri": "/roles/{role-id}",
"method": "PUT",
"description": "Update a role.",
"parameters": [
{
"name": "name",
"type": "string",
"description": "Name of the role",
"example": "role2",
"required": true
},
{
"name": "permissions",
"type": "Array",
"example": [
"drives_create",
"drives_update",
"drives_delete"
],
"description": "Array of permissions names.",
"required": true
}
],
"response": "\n\n 0 \n Operation successful \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"message\": \"Operation successful\"\n }\n}"
},
{
"uri": "/roles/{role-id}",
"method": "DELETE",
"description": "Delete a role.",
"response": "\n\n 0 \n Operation successful \n ",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"message\": \"Operation successful\"\n }\n}"
}
]
},
{
"name": "NAS",
"description": "Operations for NAS (Network Attached Storage) Users and Groups.",
"methods": [
{
"uri": "/nas/users",
"description": "Get all NAS Users.",
"method": "GET",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 2 \n \n \n root \n 0 \n No \n \n \n nobody \n 1000000 \n No \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"users\": [\n {\n \"name\": \"root\",\n \"nfs_uid\": \"0\",\n \"password\": \"No\"\n },\n {\n \"name\": \"nobody\",\n \"nfs_uid\": \"1000000\",\n \"password\": \"No\"\n }\n ],\n \"count\": 2\n }\n}"
},
{
"uri": "/nas/users",
"method": "POST",
"description": "Create a NAS User.",
"parameters": [
{
"name": "username",
"required": true,
"type": "string",
"example": "johndoe"
},
{
"name": "nfs_uid",
"required": false,
"type": "integer",
"description": "NFS user id"
},
{
"name": "password",
"description": "SMB password.",
"type": "string",
"required": false
}
],
"response": "\n\n user \n 0 \n \n \n",
"response_json": "{\n \"response\": {\n \"nas_user_name\": \"user\",\n \"status\": 0,\n \"nfs_uid\": null\n }\n}"
},
{
"uri": "/nas/users/{name}",
"method": "GET",
"description": "Get the details for a single NAS User.",
"response": "\n\n 0 \n \n root \n 0 \n No \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"user\": {\n \"name\": \"root\",\n \"nfs_uid\": \"0\",\n \"password\": \"No\"\n }\n }\n}"
},
{
"uri": "/nas/users/{name}/password",
"method": "POST",
"description": "Add/change/remove SMB password for NAS users.",
"parameters": [
{
"name": "password",
"type": "string",
"required": false,
"description": "Leave blank to remove the SMB password."
}
],
"response": "\n\n nasuser \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"nas_user_name\": \"nasuser\",\n \"status\": 0\n }\n}"
},
{
"uri": "/nas/users/{name}",
"method": "DELETE",
"description": "Delete a NAS User.",
"response": "\n\n nasuser \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"nas_user_name\": \"nasuser\",\n \"status\": 0\n }\n}"
},
{
"uri": "/nas/groups",
"description": "Show NAS Groups.",
"method": "GET",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 2 \n \n \n root \n 0 \n \n \n nogroup \n 1000000 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"groups\": [\n {\n \"name\": \"root\",\n \"nfs_gid\": \"0\"\n },\n {\n \"name\": \"nogroup\",\n \"nfs_gid\": \"1000000\"\n }\n ],\n \"count\": 2\n }\n}"
},
{
"uri": "/nas/groups",
"description": "Create a NAS group.",
"method": "POST",
"parameters": [
{
"name": "group_name",
"type": "string",
"required": true,
"description": "New group name",
"example": "admins"
},
{
"name": "nfs_gid",
"type": "integer",
"required": true,
"description": "NFS new group id",
"example": 15000
}
],
"response": "\n\n group \n 0 \n 12345 \n \n",
"response_json": "{\n \"response\": {\n \"nas_group_name\": \"group\",\n \"status\": 0,\n \"nfs_gid\": \"12345\"\n }\n}"
},
{
"uri": "/nas/groups/{name}",
"method": "GET",
"description": "Get the details for a single NAS Group.",
"response": "\n\n 0 \n \n root \n 0 \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"group\": {\n \"name\": \"root\",\n \"nfs_gid\": \"0\"\n }\n }\n}"
},
{
"uri": "/nas/groups/{name}",
"method": "DELETE",
"description": "Delete a NAS Group.",
"response": "\n\n group \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"nas_group_name\": \"group\",\n \"status\": 0\n }\n}"
},
{
"uri": "/active_directory",
"method": "GET",
"description": "List the current Active Directory configuration.",
"response": "\n\n 0 \n \n \n 10.0.2.32 \n 10.0.2.33 \n \n \n 10.0.0.1 \n 177.0.0.2 \n \n WIN-8AAAABBCCDD \n zadara.net \n ZADARA \n 2013-12-16 22:45:58 \n 2013-12-16 22:45:58 \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"smb_ads\": {\n \"dns\": [\n \"10.0.2.32\",\n \"10.0.2.33\"\n ],\n \"dc\": [\n \"10.0.0.1\",\n \"177.0.0.2\"\n ],\n \"ad_server\": \"WIN-8AAAABBCCDD\",\n \"realm\": \"zadara.net\",\n \"workgroup\": \"ZADARA\",\n \"created_at\": \"2013-12-16 22:45:58 UTC\",\n \"modified_at\": \"2013-12-16 22:45:58 UTC\"\n }\n }\n}"
},
{
"uri": "/active_directory",
"method": "POST",
"description": "Join an Active Directory Domain.",
"parameters": [
{
"name": "username",
"required": true,
"description": "The domain user name",
"example": "Administrator"
},
{
"name": "password",
"required": true,
"description": "The domain user name",
"example": "mysupersecretpassword"
},
{
"name": "realm",
"required": true,
"description": "The domain name.",
"example": "mycompany"
},
{
"name": "workgroup",
"required": true,
"description": "The domain NetBIOS name.",
"example": "MYCOMPANY"
},
{
"name": "dns",
"required": true,
"description": "The DNS IP(s). (use array to pass multiple)",
"example": "11.22.33.44"
},
{
"name": "force",
"type": "string",
"options": "YES, NO",
"example": "YES",
"description": "Force Active Directory Domain join"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/active_directory/edit",
"method": "POST",
"description": "configure an Active Directory Domain. (Not available while Active Directory is disabled)",
"parameters": [
{
"name": "dns",
"required": true,
"description": "The DNS IP(s). (use array to pass multiple)",
"example": [
"10.0.0.10",
"10.0.0.11"
]
},
{
"name": "dns_lookup_realm",
"example": "YES",
"description": "Set auto realm lookup"
},
{
"name": "dns_lookup_kdc",
"description": "Set auto realm kdc lookup",
"example": "YES"
},
{
"name": "realm_kdc_servers",
"description": "Set realm kdc servers",
"example_as_json_string": true,
"type": "Object",
"example": "{\"realm1\": [\"kdc1\",\"kdc2\"], \"realm1\": \"\"}"
},
{
"name": "add_to_ignored_domains",
"description": "Add domains to ignored domains. domain NetBIOS name should be used as input.",
"example": [
"kdc1",
"kdc2"
]
},
{
"name": "remove_from_ignored_domains",
"description": "Remove domains from ignored domains. domain NetBIOS name should be used as input.",
"example": [
"kdc1",
"kdc2"
]
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/active_directory/reset",
"method": "POST",
"description": "Leave/Delete the current Active Directory server.",
"parameters": [
{
"name": "username",
"required": true,
"example": "Administrator"
},
{
"name": "password",
"required": true,
"example": "mysupersecretpassword"
},
{
"name": "keep",
"type": "boolean",
"description": "Keep configuration as \"disabled\" for future re-connect. DEFAULT: true",
"default": true
},
{
"name": "force",
"type": "string",
"options": "YES, NO",
"example": "YES",
"description": "Force Active Directory Domain Leave/Delete"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/active_directory/restore",
"method": "POST",
"description": "Restore the current Active Directory server.",
"parameters": [
{
"name": "username",
"required": true,
"example": "Administrator"
},
{
"name": "password",
"required": true,
"example": "mysupersecretpassword"
},
{
"name": "force",
"type": "string",
"options": "YES, NO",
"example": "YES",
"description": "Force Active Directory Domain Restore"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
}
]
},
{
"name": "Logs",
"description": "Retrieving logs.",
"methods": [
{
"uri": "/messages",
"method": "GET",
"description": "Retrieve event logs.",
"parameters": [
{
"name": "severity",
"required": false,
"type": "integer"
},
{
"name": "attr_key",
"required": false,
"type": "string"
},
{
"name": "attr_value",
"required": false,
"type": "string"
},
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 57 \n \n \n Controller vsa-000007bb-vc-1 encryption password was changed \n 6 \n 2013-09-26 23:04:32 \n \n \n Controller vsa-000007bb-vc-1 CHAP credentials were modified. \n 6 \n 2013-09-26 22:59:53 \n \n \n Controller vsa-000007bb-vc-0 has changed state to online. \n 6 \n 2013-09-26 22:57:26 \n \n \n Controller vsa-000007bb-vc-1 has changed state to active. \n 6 \n 2013-09-26 22:57:17 \n \n \n Controller vsa-000007bb-vc-1 metadata backup completed successfully. \n 6 \n 2013-09-26 22:57:17 \n \n \n Controller vsa-000007bb-vc-1 setting to active role was initiated. \n 6 \n 2013-09-26 22:57:05 \n \n \n Controller vsa-000007bb-vc-0 metadata backup completed successfully. \n 6 \n 2013-09-26 22:56:49 \n \n \n Controller vsa-000007bb-vc-0 is shutting down. Reason: user initiated power-off. \n 4 \n 2013-09-26 22:56:37 \n \n \n Failover of active controller (0) started \n 6 \n 2013-09-26 22:56:36 \n \n \n Controller vsa-000007bb-vc-0 metadata backup completed successfully. \n 6 \n 2013-09-26 21:22:29 \n \n \n Raid Group raid_group RAID integrity check completed successfully. 947385088 mismatched LBAs where repaired. \n 6 \n 2013-09-26 17:17:32 \n \n \n Storage Pool deleteme was deleted successfully. \n 6 \n 2013-09-26 12:16:55 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"messages\": [\n {\n \"msg_title\": \"Controller vsa-000007bb-vc-1 encryption password was changed\",\n \"msg_severity\": \"6\",\n \"msg_time\": \"2013-09-26 23:04:32\"\n },\n {\n \"msg_title\": \"Controller vsa-000007bb-vc-1 CHAP credentials were modified.\",\n \"msg_severity\": \"6\",\n \"msg_time\": \"2013-09-26 22:59:53\"\n },\n {\n \"msg_title\": \"Controller vsa-000007bb-vc-0 has changed state to online.\",\n \"msg_severity\": \"6\",\n \"msg_time\": \"2013-09-26 22:57:26\"\n },\n {\n \"msg_title\": \"Controller vsa-000007bb-vc-1 has changed state to active.\",\n \"msg_severity\": \"6\",\n \"msg_time\": \"2013-09-26 22:57:17\"\n },\n {\n \"msg_title\": \"Controller vsa-000007bb-vc-1 metadata backup completed successfully.\",\n \"msg_severity\": \"6\",\n \"msg_time\": \"2013-09-26 22:57:17\"\n },\n {\n \"msg_title\": \"Controller vsa-000007bb-vc-1 setting to active role was initiated.\",\n \"msg_severity\": \"6\",\n \"msg_time\": \"2013-09-26 22:57:05\"\n },\n {\n \"msg_title\": \"Controller vsa-000007bb-vc-0 metadata backup completed successfully.\",\n \"msg_severity\": \"6\",\n \"msg_time\": \"2013-09-26 22:56:49\"\n },\n {\n \"msg_title\": \"Controller vsa-000007bb-vc-0 is shutting down. Reason: user initiated power-off.\",\n \"msg_severity\": \"4\",\n \"msg_time\": \"2013-09-26 22:56:37\"\n },\n {\n \"msg_title\": \"Failover of active controller (0) started\",\n \"msg_severity\": \"6\",\n \"msg_time\": \"2013-09-26 22:56:36\"\n },\n {\n \"msg_title\": \"Controller vsa-000007bb-vc-0 metadata backup completed successfully.\",\n \"msg_severity\": \"6\",\n \"msg_time\": \"2013-09-26 21:22:29\"\n },\n {\n \"msg_title\": \"Raid Group raid_group RAID integrity check completed successfully. 947385088 mismatched LBAs where repaired.\",\n \"msg_severity\": \"6\",\n \"msg_time\": \"2013-09-26 17:17:32\"\n },\n {\n \"msg_title\": \"Storage Pool deleteme was deleted successfully.\",\n \"msg_severity\": \"6\",\n \"msg_time\": \"2013-09-26 12:16:55\"\n }\n ],\n \"count\": 57\n }\n}"
}
]
},
{
"name": "Tickets",
"description": "Operations for Tickets.",
"methods": [
{
"uri": "/tickets",
"description": "Get all user tickets.",
"method": "GET",
"parameters": [
{
"name": "start",
"description": "The item number to start from. 0 starts from the beginning.",
"type": "integer",
"required": false
},
{
"name": "limit",
"description": "The total number of records to return.",
"type": "integer",
"required": false
}
],
"response": "\n\n 0 \n 91 \n \n \n 46742 \n 2012-07-10T14:38:08Z \n 2012-07-10T14:38:08Z \n DEMO TICKET \n DEMO TICKET \n urgent \n new \n ... \n ... \n None \n \n \n 46743 \n 2013-07-10T14:38:08Z \n 2013-07-10T14:38:08Z \n DEMO TICKET \n DEMO TICKET \n urgent \n new \n ... \n ... \n None \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"tickets\": [\n {\n \"id\": 46742,\n \"created_at\": \"2012-07-10T14:38:08Z\",\n \"updated_at\": \"2012-07-10T14:38:08Z\",\n \"subject\": \"DEMO TICKET\",\n \"description\": \"DEMO TICKET\",\n \"priority\": \"urgent\",\n \"status\": \"new\",\n \"requester_id\": 0,\n \"submitter_id\": 0,\n \"assignee_id\": 0\n },\n {\n \"id\": 46743,\n \"created_at\": \"2013-07-10T14:38:08Z\",\n \"updated_at\": \"2013-07-10T14:38:08Z\",\n \"subject\": \"DEMO TICKET\",\n \"description\": \"DEMO TICKET\",\n \"priority\": \"urgent\",\n \"status\": \"new\",\n \"requester_id\": 0,\n \"submitter_id\": 0,\n \"assignee_id\": 0\n }\n ],\n \"count\": 91\n }\n}"
},
{
"uri": "/tickets",
"description": "Create ticket.",
"method": "POST",
"parameters": [
{
"name": "subject",
"type": "string",
"required": true,
"example": "my-subject",
"description": "The ticket subject"
},
{
"name": "description",
"type": "string",
"required": true,
"example": "my-description",
"description": "The ticket description"
}
],
"response": "\n\n 0 \n ... \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"ticket_id\": 0\n }\n}"
},
{
"uri": "/tickets/{id}/close",
"description": "Close ticket.",
"method": "POST",
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/tickets/{id}/comments",
"description": "Get all ticket comments.",
"method": "GET",
"response": "\n\n 0 \n 2 \n \n \n 18707482730 \n 2014-07-13T12:39:32Z \n 406491184 \n Test \n \n \n 18707482731 \n 2014-07-13T12:39:32Z \n 406491184 \n Test \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"comments\": [\n {\n \"id\": 18707482730,\n \"created_at\": \"2014-07-13T12:39:32Z\",\n \"author_id\": 406491184,\n \"description\": \"Test\"\n },\n {\n \"id\": 18707482731,\n \"created_at\": \"2014-07-13T12:39:32Z\",\n \"author_id\": 406491184,\n \"description\": \"Test\"\n }\n ],\n \"count\": 2\n }\n}"
},
{
"uri": "/tickets/{id}/comments",
"description": "Create a comment for ticket.",
"method": "POST",
"parameters": [
{
"name": "comment",
"type": "string",
"required": true,
"description": "The new comment",
"example": "my-comment"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/tickets/{id}/zsnap",
"description": "Create ticket zsnap.",
"method": "POST",
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
}
]
},
{
"name": "Settings",
"description": "Get / Modify Settings.",
"methods": [
{
"uri": "/settings/nfs_domain",
"method": "GET",
"description": "Gets the NFS Domain associated with this VPSA.",
"response": "\n\n 0 \n localdomain \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"nfs_domain\": \"localdomain\"\n }\n}"
},
{
"uri": "/settings/nfs_domain",
"method": "POST",
"description": "Sets the NFS Domain associated with this VPSA.",
"parameters": [
{
"name": "domain",
"required": true,
"description": "The NFS domain to set",
"type": "string",
"example": "localdomain"
}
],
"response": "\n\n 0 \n localhost \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"nfs_domain\": \"localhost\"\n }\n}"
},
{
"uri": "/settings/iscsi_over_public_ip",
"method": "POST",
"description": "Sets iSCSI over public ip",
"parameters": [
{
"name": "enabled",
"required": true,
"type": "boolean",
"example": true
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/raid_read_mode",
"method": "POST",
"description": "Sets the raid read mode associated with this VPSA.",
"parameters": [
{
"name": "readmode",
"required": true,
"type": "string",
"example": "roundrobin",
"description": "The raid read mode to set"
}
],
"response": "\n\n 0 \n roundrobin \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"raid_read_mode\": \"roundrobin\"\n }\n}"
},
{
"uri": "/settings/smb_charset",
"method": "POST",
"description": "Sets the smb charset associated with this VPSA.",
"parameters": [
{
"name": "unix_charset",
"required": true,
"type": "string",
"example": "UTF-8",
"description": "The unix smb charset to set"
},
{
"name": "dos_charset",
"required": true,
"type": "string",
"example": "CP850",
"description": "The dos smb charset to set"
},
{
"name": "force",
"type": "string",
"options": "YES, NO",
"example": "YES"
}
]
},
{
"uri": "/settings/smb_netbios_name",
"method": "POST",
"description": "Sets the smb netbios name for this VPSA.",
"parameters": [
{
"name": "netbios_name",
"required": true,
"type": "string",
"example": "nbtest",
"description": "The smb netbios name to set"
},
{
"name": "force",
"options": "YES | NO",
"description": "Force smb netbios name when volumes with SMB permissions exist"
}
],
"response": "\n\n 0 \n UTF-8 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"smb_unix_charset\": \"UTF-8\"\n }\n}"
},
{
"uri": "/settings/set_recycle_bin",
"method": "POST",
"description": "Enable/Disable recycle bin for volumes.",
"parameters": [
{
"name": "recyclebin",
"required": true,
"type": "string",
"options": "YES, NO",
"example": "YES"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/smb_trusted_domains",
"method": "POST",
"description": "Enable/Disable SMB trusted domains.",
"parameters": [
{
"name": "allow",
"required": true,
"type": "string",
"options": "YES, NO",
"example": "YES"
},
{
"name": "force",
"desciption": "Force trusted domains if SMB shares needs to be restrated",
"type": "string",
"options": "YES, NO",
"example": "YES"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/public_ips",
"method": "GET",
"description": "Returns the public IP(s) associated with this VPSA.",
"response": "\n\n 0 \n 1 \n \n 127.0.0.1 \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"public_ips\": [\n \"127.0.0.1\"\n ],\n \"count\": 1\n }\n}"
},
{
"uri": "/settings/password_encryption",
"method": "POST",
"description": "Set the Master Encryption Password for your VPSA.",
"parameters": [
{
"name": "encryption_pwd",
"type": "string",
"required": true,
"description": "The master encryption password to set.",
"example": "mysupersecretpassword"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/aws_encryption",
"method": "POST",
"description": "Set AWS KMS details for your VPSA.",
"parameters": [
{
"name": "region",
"type": "string",
"required": true,
"description": "The AWS KMS region code to set.",
"example": "region-code"
},
{
"name": "key_id",
"type": "string",
"required": true,
"description": "The AWS KMS key id to set.",
"example": "abc1def2-ghi3-jkl4-mno5-pqr6stu7vwx8"
},
{
"name": "access_id",
"type": "string",
"required": true,
"description": "The AWS KMS access id to set.",
"example": "AWSACCESSID"
},
{
"name": "secret",
"type": "string",
"required": true,
"description": "The AWS KMS secret password to set.",
"example": "awssecretpassword"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/kmip_encryption",
"method": "POST",
"description": "Set or update KMIP KMS details for your VPSA. In case VPSA has no internet access, KMS encryption will not be applied.",
"parameters": [
{
"name": "host",
"type": "string",
"required": true,
"description": "The KMIP host to set.",
"example": "eu.smartkey.io"
},
{
"name": "key_id",
"type": "string",
"required": true,
"description": "The KMIP key UUID to set.",
"example": "a1b2c3d4-9876-zyxw-aaaa-abcdefgh1234"
},
{
"name": "key_name",
"type": "string",
"required": true,
"description": "The KMIP key name to set.",
"example": "nice-name"
},
{
"name": "connect_via",
"type": "string",
"required": true,
"options": "public, fe",
"description": "The KMIP connection interface."
},
{
"name": "user",
"type": "string",
"required": true,
"description": "The KMIP username, can be used for authentication.",
"example": "a1b2c3d4-e5f6-g7h8-i9j0-ab12cd12ef12"
},
{
"name": "password",
"type": "string",
"required": true,
"description": "The KMIP password, can be used for authentication.",
"example": "z_a1b2c3d4a1b2c3d4a1b2c3d4qqqqq-a1b2c3d4a1b2c3d4a1b2c3d4l_a1b2c3d4a1b2c3d4a1b2c3d4zzz"
},
{
"name": "port",
"type": "integer",
"required": false,
"description": "The KMIP host port to set.",
"default": 5696
},
{
"name": "version",
"type": "string",
"required": false,
"options": "0 (for unknown), 1 (for 1.0), 2 (for 1.1), 3 (for 1.2), 4 (for 1.3), 5 (for 1.4), 6 (for 2.0)",
"description": "The KMIP version to use.",
"default": "3"
},
{
"name": "ca_cert_file",
"type": "string",
"required": false,
"description": "The location of the CA certificate file on the VPSA file system.",
"default": "/etc/ssl/certs/DigiCert_Global_Root_CA.pem"
},
{
"name": "proxy_host",
"type": "string",
"required": false,
"description": "The proxy host, used if setting KMIP KMS with proxy.",
"example": "1.2.3.4"
},
{
"name": "proxyport",
"type": "string",
"required": false,
"description": "The proxy port, used if setting KMIP KMS with proxy.",
"example": "3128"
},
{
"name": "proxy_username",
"type": "string",
"required": false,
"description": "The proxy user name, used if setting KMIP KMS with authenticated proxy.",
"example": "username"
},
{
"name": "proxy_password",
"type": "string",
"required": false,
"description": "The proxy password, used if setting KMIP KMS with authenticated proxy.",
"example": "mypass"
},
{
"name": "key_file_content",
"type": "string",
"required": false,
"description": "The private key file content, can be used for authentication."
},
{
"name": "cert_file_content",
"type": "string",
"required": false,
"description": "The KMIP certificate file content, can be used for authentication."
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/password_encryption",
"method": "POST",
"description": "Change Master Encryption Password.",
"parameters": [
{
"name": "current_encryption_pwd",
"type": "string",
"required": true,
"description": "Current master encryption password.",
"example": "mycurrentsecretpassword"
},
{
"name": "encryption_pwd",
"type": "string",
"required": true,
"description": "The master encryption password to set.",
"example": "mysupersecretpassword"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/aws_encryption",
"method": "POST",
"description": "Change encryption from using Master Encryption Password to use AWS KMS.",
"parameters": [
{
"name": "current_encryption_pwd",
"type": "string",
"required": true,
"description": "Current master encryption password.",
"example": "mycurrentsecretpassword"
},
{
"name": "region",
"type": "string",
"required": true,
"description": "The AWS KMS region code to set.",
"example": "region-code"
},
{
"name": "key_id",
"type": "string",
"required": true,
"description": "The AWS KMS key id to set.",
"example": "abc1def2-ghi3-jkl4-mno5-pqr6stu7vwx8"
},
{
"name": "access_id",
"type": "string",
"required": true,
"description": "The AWS KMS access id to set.",
"example": "AWSACCESSID"
},
{
"name": "secret",
"type": "string",
"required": true,
"description": "The AWS KMS secret password to set.",
"example": "awssecretpassword"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/kmip_encryption",
"method": "POST",
"description": "Change encryption from using Master Encryption Password to use KMIP KMS.",
"parameters": [
{
"name": "current_encryption_pwd",
"type": "string",
"required": true,
"description": "Current master encryption password.",
"example": "mycurrentsecretpassword"
},
{
"name": "host",
"type": "string",
"required": true,
"description": "The KMIP host to set.",
"example": "eu.smartkey.io"
},
{
"name": "key_id",
"type": "string",
"required": true,
"description": "The KMIP key UUID to set.",
"example": "a1b2c3d4-9876-zyxw-aaaa-abcdefgh1234"
},
{
"name": "key_name",
"type": "string",
"required": true,
"description": "The KMIP key name to set.",
"example": "nice-name"
},
{
"name": "connect_via",
"type": "string",
"required": true,
"options": "public, fe",
"description": "The KMIP connection interface."
},
{
"name": "user",
"type": "string",
"required": true,
"description": "The KMIP username, can be used for authentication.",
"example": "a1b2c3d4-e5f6-g7h8-i9j0-ab12cd12ef12"
},
{
"name": "password",
"type": "string",
"required": true,
"description": "The KMIP password, can be used for authentication.",
"example": "z_a1b2c3d4a1b2c3d4a1b2c3d4qqqqq-a1b2c3d4a1b2c3d4a1b2c3d4l_a1b2c3d4a1b2c3d4a1b2c3d4zzz"
},
{
"name": "port",
"type": "integer",
"required": false,
"description": "The KMIP host port to set.",
"default": 5696
},
{
"name": "version",
"type": "string",
"required": false,
"options": "0 (for unknown), 1 (for 1.0), 2 (for 1.1), 3 (for 1.2), 4 (for 1.3), 5 (for 1.4), 6 (for 2.0)",
"description": "The KMIP version to use.",
"default": "3"
},
{
"name": "ca_cert_file",
"type": "string",
"required": false,
"description": "The location of the CA certificate file on the VPSA file system.",
"default": "/etc/ssl/certs/DigiCert_Global_Root_CA.pem"
},
{
"name": "proxy_host",
"type": "string",
"required": false,
"description": "The proxy host, used if setting KMIP KMS with proxy.",
"example": "1.2.3.4"
},
{
"name": "proxyport",
"type": "string",
"required": false,
"description": "The proxy port, used if setting KMIP KMS with proxy.",
"example": "3128"
},
{
"name": "proxy_username",
"type": "string",
"required": false,
"description": "The proxy user name, used if setting KMIP KMS with authenticated proxy.",
"example": "username"
},
{
"name": "proxy_password",
"type": "string",
"required": false,
"description": "The proxy password, used if setting KMIP KMS with authenticated proxy.",
"example": "mypass"
},
{
"name": "key_file_content",
"type": "string",
"required": false,
"description": "The private key file content, can be used for authentication."
},
{
"name": "cert_file_content",
"type": "string",
"required": false,
"description": "The KMIP certificate file content, can be used for authentication."
}
]
},
{
"uri": "/settings/restore_encryption",
"method": "POST",
"description": "Restore the Master Encryption Password for your VPSA, if cleared.",
"parameters": [
{
"name": "encryption_pwd",
"type": "string",
"required": true,
"description": "The master encryption password to restore.",
"example": "mysupersecretpassword"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/restore_encryption_aws",
"method": "POST",
"description": "Restore the AWS KMS details for your VPSA, if cleared.",
"parameters": [
{
"name": "region",
"type": "string",
"required": true,
"description": "The AWS KMS region code to set.",
"example": "region-code"
},
{
"name": "key_id",
"type": "string",
"required": true,
"description": "The AWS KMS key id to set.",
"example": "abc1def2-ghi3-jkl4-mno5-pqr6stu7vwx8"
},
{
"name": "access_id",
"type": "string",
"required": true,
"description": "The AWS KMS access id to set.",
"example": "AWSACCESSID"
},
{
"name": "secret",
"type": "string",
"required": true,
"description": "The AWS KMS secret password to set.",
"example": "awssecretpassword"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/restore_encryption_kmip",
"method": "POST",
"description": "Restore the KMIP KMS details for your VPSA, if cleared.",
"parameters": [
{
"name": "host",
"type": "string",
"required": true,
"description": "The KMIP host to set.",
"example": "eu.smartkey.io"
},
{
"name": "key_id",
"type": "string",
"required": true,
"description": "The KMIP key UUID to set.",
"example": "a1b2c3d4-9876-zyxw-aaaa-abcdefgh1234"
},
{
"name": "key_name",
"type": "string",
"required": true,
"description": "The KMIP key name to set.",
"example": "nice-name"
},
{
"name": "connect_via",
"type": "string",
"required": true,
"options": "public, fe",
"description": "The KMIP connection interface."
},
{
"name": "user",
"type": "string",
"required": true,
"description": "The KMIP username, can be used for authentication.",
"example": "a1b2c3d4-e5f6-g7h8-i9j0-ab12cd12ef12"
},
{
"name": "password",
"type": "string",
"required": true,
"description": "The KMIP password, can be used for authentication.",
"example": "z_a1b2c3d4a1b2c3d4a1b2c3d4qqqqq-a1b2c3d4a1b2c3d4a1b2c3d4l_a1b2c3d4a1b2c3d4a1b2c3d4zzz"
},
{
"name": "port",
"type": "integer",
"required": false,
"description": "The KMIP host port to set.",
"default": 5696
},
{
"name": "version",
"type": "string",
"required": false,
"options": "0 (for unknown), 1 (for 1.0), 2 (for 1.1), 3 (for 1.2), 4 (for 1.3), 5 (for 1.4), 6 (for 2.0)",
"description": "The KMIP version to use.",
"default": "3"
},
{
"name": "ca_cert_file",
"type": "string",
"required": false,
"description": "The location of the CA certificate file on the VPSA file system.",
"default": "/etc/ssl/certs/DigiCert_Global_Root_CA.pem"
},
{
"name": "proxy_host",
"type": "string",
"required": false,
"description": "The proxy host, used if setting KMIP KMS with proxy.",
"example": "1.2.3.4"
},
{
"name": "proxy_port",
"type": "string",
"required": false,
"description": "The proxy port, used if setting KMIP KMS with proxy.",
"example": "3128"
},
{
"name": "proxy_username",
"type": "string",
"required": false,
"description": "The proxy user name, used if setting KMIP KMS with authenticated proxy.",
"example": "username"
},
{
"name": "proxy_password",
"type": "string",
"required": false,
"description": "The proxy password, used if setting KMIP KMS with authenticated proxy.",
"example": "mypass"
},
{
"name": "key_file_content",
"type": "string",
"required": false,
"description": "The private key file content, can be used for authentication.",
"example": "-----BEGIN PRIVATE KEY----- XXX -----END PRIVATE KEY----- "
},
{
"name": "cert_file_content",
"type": "string",
"required": false,
"description": "The KMIP certificate file content, can be used for authentication.",
"example": "-----BEGIN CERTIFICATE----- XXX -----END CERTIFICATE----- "
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/clear_encryption",
"method": "DELETE",
"description": "Remove any encryption configured on your VPSA.",
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/show_audit_config",
"method": "GET",
"description": "Gets the current file access auditing configuration for the vpsa.",
"response": "\n\n 0 \n \n NO \n NO \n NO \n NO \n NO \n NO \n NO \n pool-00010001 \n \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"audit_configuration\": {\n \"enabled\": \"NO\",\n \"connect\": \"NO\",\n \"create\": \"NO\",\n \"open_file\": \"NO\",\n \"rename\": \"NO\",\n \"remove\": \"NO\",\n \"attributes\": \"NO\",\n \"pool_name\": \"pool-00010001\",\n \"obs_destination_name\": null,\n \"obs_destination_display_name\": null\n }\n }\n}"
},
{
"uri": "/settings/configure_file_access_audit",
"method": "POST",
"description": "Enable or resume file access auditing configuration for the vpsa.",
"parameters": [
{
"name": "audit_enable",
"type": "string",
"required": true,
"description": "Value should be 'YES' to enable file access auditing.",
"example": "YES"
},
{
"name": "audit_vol_pool_name",
"type": "string",
"required": true,
"description": "The pool name for the auditing volume.",
"example": "pool-00010003"
},
{
"name": "obs_dest",
"type": "string",
"required": false,
"description": "ID of remote object storage destination.",
"example": "obsdst-00000001"
},
{
"name": "operations",
"type": "string",
"required": true,
"description": "Names of file access operations to audit.",
"example": "connect,create,open-file,rename,remove,attributes"
},
{
"name": "force",
"type": "string",
"required": false,
"description": "Use in case a confirmation is required.",
"example": "YES"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/configure_file_access_audit",
"method": "POST",
"description": "Pause file access auditing configuration for the vpsa.",
"parameters": [
{
"name": "audit_enable",
"type": "string",
"required": true,
"description": "Value should be 'NO' to pause file access auditing.",
"example": "NO"
},
{
"name": "force",
"type": "string",
"required": false,
"description": "Use in case a confirmation is required.",
"example": "YES"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/disable_file_access_audit",
"method": "POST",
"description": "Disable file access auditing configuration for the vpsa.",
"parameters": [
{
"name": "force",
"type": "string",
"required": false,
"description": "Use in case a confirmation is required.",
"example": "YES"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/container_service",
"method": "GET",
"description": "Get the APP repository details.",
"response": "\n\n 0 \n \n YES \n 172.20.20.1/24 \n NO \n \n 9300 \n 9350 \n \n 2015-06-11T04:08:35+00:00 \n 2015-07-06T16:25:40+00:00 \n \n pool-00000002 \n pool2 \n \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"container_service_settings\": {\n \"enabled\": \"YES\",\n \"container_network\": \"172.20.20.1/24\",\n \"containers_running\": \"NO\",\n \"ports\": {\n \"low\": 9300,\n \"high\": 9350\n },\n \"created_at\": \"2015-06-11 04:08:35 UTC\",\n \"modified_at\": \"2015-07-06 16:25:40 UTC\",\n \"images_repository\": {\n \"pool_name\": \"pool-00000002\",\n \"pool_display_name\": \"pool2\"\n }\n }\n }\n}"
},
{
"uri": "/settings/metering_db",
"method": "GET",
"redirection": "metering.zip",
"description": "Download the metering database"
},
{
"uri": "/settings/container_service",
"method": "POST",
"description": "Update the container service.",
"parameters": [
{
"name": "lowport",
"type": "integer",
"required": true,
"example": 9333
},
{
"name": "highport",
"type": "integer",
"required": true,
"description": null,
"example": 9344
},
{
"name": "containernetwork",
"type": "string",
"required": true,
"description": null,
"example": "172.20.20.1/24"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/create_images_repository",
"method": "POST",
"description": "Create the images repository.",
"parameters": [
{
"name": "pool",
"type": "string",
"required": true,
"description": "The pool where the images repository will be created",
"example": "pool-00000001"
}
],
"response": "\n\n volume-00000029 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"vol_name\": \"volume-00000029\",\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/migrate_images_repository",
"method": "POST",
"description": "Migrate the images repository.",
"parameters": [
{
"name": "pool",
"type": "string",
"required": true,
"description": "The destination pool",
"example": "pool-00000001"
}
],
"response": "\n\n mgrjob-00000005 \n 0 \n \n",
"response_json": "{\n \"response\": {\n \"migration_job_name\": \"mgrjob-00000005\",\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/images_repository",
"method": "DELETE",
"description": "Delete the images repository.",
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/trim_enable",
"method": "POST",
"description": "Enable volumes File System scheduling.",
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/trim_disable",
"method": "POST",
"description": "Disable volumes File System scheduling.",
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/trim_start",
"method": "POST",
"description": "Start volumes File System trim.",
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/trim_stop",
"method": "POST",
"description": "Stop volumes File System trim.",
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/default_write_policy",
"method": "POST",
"description": "Set Default Filesystem Write Policy.",
"parameters": [
{
"name": "default_fs_write_policy",
"type": "string",
"options": "YES (Synchronous Writing), NO (Asynchronous Writing)",
"example": "YES",
"required": true,
"description": "Default Filesystem Write Policy."
},
{
"name": "apply_to_all_existing_filesystems",
"type": "boolean",
"example": true,
"required": false,
"description": "Apply To All Existing Filesystems."
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/defrag_enable",
"method": "POST",
"description": "Enable volumes defragmentation scheduling.",
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/defrag_disable",
"method": "POST",
"description": "Disable volumes defragmentation scheduling.",
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/defrag_start",
"method": "POST",
"description": "Start volumes defragmentation.",
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/defrag_stop",
"method": "POST",
"description": "Stop volumes defragmentation.",
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/enable_privilege_access",
"method": "POST",
"description": "Enable privilege access.",
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/disable_privilege_access",
"method": "POST",
"description": "Disable privilege access.",
"parameters": [
{
"name": "password",
"type": "string",
"required": true,
"description": "Emergency password",
"example": "mysecretpassword"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/password_policy",
"method": "POST",
"description": "Set password policy.",
"parameters": [
{
"name": "expire_password",
"type": "boolean",
"required": false,
"description": "Enforce password expiration",
"default": false
},
{
"name": "expire_password_after",
"type": "integer",
"required": false,
"description": "Expire passwords after (seconds), between 1296000 to 432000000 seconds (15 to 5000 days)"
},
{
"name": "password_history",
"type": "integer",
"required": false,
"description": "Number of passwords to remember, between 1 to 10",
"default": 8
},
{
"name": "min_password_length",
"type": "integer",
"required": false,
"description": "Min password length, between 8 to 12",
"default": 8
},
{
"name": "password_must_contain_letters",
"type": "boolean",
"required": false,
"description": "Password must contain letters",
"default": true
},
{
"name": "password_must_contain_numbers",
"type": "boolean",
"required": false,
"description": "Password must contain numbers",
"default": true
},
{
"name": "password_must_contain_uppercase_letters",
"type": "boolean",
"required": false,
"description": "Password must contain uppercase letters",
"default": false
},
{
"name": "password_must_contain_special_characters",
"type": "boolean",
"required": false,
"description": "Password must contain special characters",
"default": false
}
],
"response": "\n\n 0 \n Updated \n \n",
"response_json": "{\n \"status\": 0,\n \"status_msg\": \"Updated\"\n}"
},
{
"uri": "/settings_config",
"method": "GET",
"description": "Get all application settings. Allowed to admin only.",
"response": "\n\n test \n A449CFA51BC14B54B0482B7093DEB668 \n C59AF4752A584EB4B9C69567D7FB8AE6 \n https://vsa-0000005b-zadara.zadaravpsa.com \n test \n 18.11-1 \n enabled \n en \n NO \n 95 \n 90 \n 95 \n 95 \n NO \n NO \n 400 \n 2 \n 6144 \n 00 \n 0 \n 0 \n \n vsa-0000005b \n enabled \n 168 \n 0 \n 0 \n 0 \n 0 \n 20 \n 0 \n NO \n YES \n change_model \n Completed \n 3 \n \n Transactional Workloads \n Repository Storage \n Archival Storage \n \n 2 \n \n UTF-8 \n ISO-8859-1 \n \n YES \n yes \n YES \n 2019-04-07T10:11:19+0300 \n 2019-04-07T10:24:03+0300 \n 0 \n 0 \n 7776000 \n 8 \n 1 \n 1 \n 0 \n 0 \n should contain numbers and letters \n 8 \n 0 \n test \n pass \n \n",
"response_json": "{\n \"response\": {\n \"name\": \"test\",\n \"uuid\": \"A449CFA51BC14B54B0482B7093DEB668\",\n \"CloudUuid\": \"C59AF4752A584EB4B9C69567D7FB8AE6\",\n \"url\": \"https://vsa-0000005b-zadara.zadaravpsa.com\",\n \"display_name\": \"test\",\n \"version\": \"18.11-1\",\n \"enterprise_suite\": \"enabled\",\n \"language\": \"en\",\n \"smb_ads\": \"NO\",\n \"cpu_usage_alert\": 95,\n \"mem_usage_alert\": 90,\n \"cpu_docker_usage_alert\": 95,\n \"mem_docker_usage_alert\": 95,\n \"multi_zone\": \"NO\",\n \"afa\": \"NO\",\n \"io_engine\": \"400\",\n \"io_vcpus\": 2,\n \"io_ram_mb\": 6144,\n \"app_engine\": \"00\",\n \"app_vcpus\": 0,\n \"app_ram_mb\": 0,\n \"wwnn\": null,\n \"smb_netbios_name\": \"vsa-0000005b\",\n \"defrag_enable\": \"enabled\",\n \"defrag_runtime\": \"168\",\n \"defrag_active\": \"0\",\n \"defrag_volumes_processed\": \"0\",\n \"defrag_volumes_pending\": \"0\",\n \"defrag_elapsed_time_sec\": \"0\",\n \"base_cache_gb\": 20,\n \"ext_cache_gb\": 0,\n \"volume_default_mount_sync\": \"NO\",\n \"volume_default_atime_update\": \"YES\",\n \"last_vpsa_request\": \"change_model\",\n \"vpsa_request_status\": \"Completed\",\n \"pool_types\": [\n \"Transactional Workloads\",\n \"Repository Storage\",\n \"Archival Storage\"\n ],\n \"smb_charset_count\": 2,\n \"smb_charsets\": [\n \"UTF-8\",\n \"ISO-8859-1\"\n ],\n \"iscsi_on_public_ip\": \"YES\",\n \"admin_access_enabled\": \"yes\",\n \"is_support_privilege_access_enabled\": \"YES\",\n \"created_at\": \"2019-04-07T10:11:19+0300\",\n \"modified_at\": \"2019-04-07T10:24:03+0300\",\n \"service_mode\": \"0\",\n \"expire_password\": \"0\",\n \"expire_password_after\": \"7776000\",\n \"min_password_length\": \"8\",\n \"password_must_contain_letters\": \"1\",\n \"password_must_contain_numbers\": \"1\",\n \"password_must_contain_uppercase_letters\": \"0\",\n \"password_must_contain_special_characters\": \"0\",\n \"password_requirements_text\": \"should contain numbers and letters\",\n \"password_history\": \"8\",\n \"legacy_otp_secret\": \"0\",\n \"vpsa_chap_user\": \"test\",\n \"vpsa_chap_secret\": \"pass\",\n \"count\": 3\n }\n}"
},
{
"uri": "/settings/set_mtu",
"method": "POST",
"description": "Changes the MTU for a network interface.",
"parameters": [
{
"name": "fe_mtu",
"type": "string",
"description": "An MTU value for the frontend interface",
"options": "1450, 1500, 2048, 4096, 9000",
"example": 1500
},
{
"name": "public_mtu",
"type": "string",
"description": "An MTU value for the public interface",
"options": "1450, 1500, 2048, 4096, 9000",
"example": 1500
},
{
"name": "force",
"desciption": "Force MTU change despite affect on current sessions",
"type": "string",
"options": "YES, NO",
"example": "YES"
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/settings/server_monitoring",
"method": "POST",
"description": "Set global server connectivity monitoring",
"parameters": [
{
"name": "status",
"type": "string",
"description": "Server connectivity status",
"options": "enable, silent, disable",
"example": "enable"
},
{
"name": "pings",
"type": "integer",
"description": "Connection attempts (between 1 to 100)",
"example": 10
},
{
"name": "success",
"type": "integer",
"description": "Success threshold (between 1 to 100)",
"example": 6
}
],
"response": "\n\n 0 \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0\n }\n}"
},
{
"uri": "/vc_capabilities",
"method": "GET",
"description": "Returns a list of all VC capabilities.",
"response": "\n\n 0 \n \n app_engine \n large_ssd_cache_support \n setup_partition_handled \n ssd_setup_supported \n scheduled_upgrade \n update_settings \n archival_pool \n change_with_upgrade \n zadarastorage_cert_support \n vni_enabled \n mag \n scheduled_failover \n connectx_5_support \n scheduled_zsnap \n explicit_public_ip \n asigra_support \n internet_access_toggle_support \n sn_rename_support \n upgrade_from_versions_19.08_20.01 \n external_cg_snapshot_support \n \n \n",
"response_json": "{\n \"response\": {\n \"status\": 0,\n \"vc_capabilities\": [\n \"app_engine\",\n \"large_ssd_cache_support\",\n \"setup_partition_handled\",\n \"ssd_setup_supported\",\n \"scheduled_upgrade\",\n \"update_settings\",\n \"archival_pool\",\n \"change_with_upgrade\",\n \"zadarastorage_cert_support\",\n \"vni_enabled\",\n \"mag\",\n \"scheduled_failover\",\n \"connectx_5_support\",\n \"scheduled_zsnap\",\n \"explicit_public_ip\",\n \"asigra_support\",\n \"internet_access_toggle_support\",\n \"sn_rename_support\",\n \"upgrade_from_versions_19.08_20.01\",\n \"external_cg_snapshot_support\"\n ]\n }\n}"
}
]
}
],
"intro": "
Overview \n\nThis document outlines the methods available for administrating your Zadara Storage VPSA™. The Zadara Storage Array REST API supports form-encoded, JSON, and XML requests, and can return either JSON or XML responses.
\n\nUsage \n\nThe majority of the APIs available require authentication which requires an API token to use. You can retrieve this token through the Users section of your VPSA, or through the API using the “Return a user’s access key” API in the Users Section below.
\n\nAuthentication Methods \n\nThe authentication token can be passed either through the access_key
parameter inside of the body of the REST API request, or through the X-Access-Key
header.
\n\nTimeouts \n\nBy default, all operations that don’t complete within five seconds will return a message informing you that the action may take some time to complete. When using the API, this can cause some actions, such as large volume creation, to be undesirably asynchronous. You can specify your own timeout with the timeout
parameter, in seconds, and a timeout value of -1 specifies an infinite timeout.
\n\nSpecific Fields For Product \n\nSome of the fields/actions used in the API should be used only for a specific product. The following tags are used to mark which product responds to the fields/actions
\n\nVPSA Flash Array - All Flash Array VPSA
\nVPSA Storage Array - Hybrid VPSA
\n\nQuestions \n\nIf you have any questions or need support involving the REST API, please contact support@zadarastorage.com for assistance.
\n"
};