NetStorage Configuration API v1
View and manage your ObjectStore-format configuration resources, including storage groups and the upload accounts you use to access them.
Learn more:
Download this API’s RAML and JSON schema descriptors.
Overview
NetStorage is a managed service that provides persistent, replicated storage of web site content, including images, streaming media files, software, documents, and other digital objects. Content is replicated periodically to core network locations to make it highly available to, and easily accessible by, EdgePlatform servers. This makes NetStorage a great complement to multiple content delivery services.
You use NetStorage to upload and maintain content in provisioned spaces called “storage groups”. You access a storage group by using “upload accounts”, and you use this API to configure both.
Who should use this API?
Use this API if you want to develop a custom application to interact with your NetStorage 4 (ObjectStore) format storage groups and associated upload accounts. Only people who are experienced with the use of an API should attempt to use these components. All others should use the NetStorage Groups user interface that’s available through Akamai Control Center (≡ ⇒ CDN ⇒ NetStorage).
What does this API offer?
It allows you to both read and create ObjectStore storage groups and upload accounts. Also use it to list geographic zones used to help replicate your content (“replicas”).
NetStorage 3 (FileStore) storage groups aren’t supported
This API supports ObjectStore format storage groups. To work with your FileStore format groups, use Control Center.
The NetStorage Usage API
The NetStorage Usage API is separate from the current NetStorage Configuration API. Provisioned outside of Control Center, you can use the Usage API to interact with your content in NetStorage. You can use the API to upload, download, view, and manage the content within your storage groups. For more information, see the NetStorage Usage API.
Content Management Shell (CMShell)
The Content Management Shell (CMShell) allows you to log in to a shell-like interface to manage content in NetStorage, using a secure environment. For more information, see the Content Management Shell topic in the NetStorage User Guide.
Get started
To configure this API for the first time:
Contact your account representative to get NetStorage added to your contract.
Obtain your
contractId
, which you need for many API operations.Review Get Started with APIs for details on how to set up client tokens to access any Akamai API. These tokens appear as custom hostnames that look like this:
https://akzz-XXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXX.luna.akamaiapis.net
.To enable this API, choose the API service named NetStorage, and set the access level to READ-WRITE.
The NetStorage network has a Propagation Time Requirement. Any action that adds (POST), updates (PUT) or removes (DELETE) an ObjectStore-related component takes upwards of 60 minutes to propagate. For example, creating a new upload account (POST) using the API requires propagation, which can take 60 minutes before the account is accessible for use.
You can use these approaches to generate CP codes:
You can use the Property Manager API.
You can create CP codes when adding a new storage group from within Control Center.
Contact your Account Representative for assistance generating the number of CP codes you need.
Provide feedback or ask a question in Akamai’s developer community, or contact your Akamai representative for support.
API concepts
This lists the various conceptual objects the API makes available.
Storage Group: This is the basic unit within a NetStorage instance. There’s a limit on the number of storage groups you can maintain. This and other storage group limitations are covered in the NetStorage - Guidelines and Best Practices for ObjectStore (NS4). Each storage group is comprised of:
A unique name value: You provide this when creating the group.
A contractual amount of storage space: You negotiate this with Akamai.
At least one upload account: You can create an upload account using the API.
At least two geographic replication zones
One or more content provider (CP) codes: These are used to define upload directories in the group.
One or more Upload Directories: This is the base destination for uploaded content. Multiple upload directories can exist in a single group, one per CP code.
Upload Account: You use this account to access a storage group to upload, download, and manage content. You can configure a host of options that specify how you access the storage group. The API allows you to create and edit these accounts. There’s a limit on the number of storage groups you can maintain. This and other storage group limitations are covered in the NetStorage - Guidelines and Best Practices for ObjectStore (NS4).
Geographic Replication Zone: Your content is replicated to nearby regions for added stability. For example, you might have access to regions such as West Coast + East Coast or East Coast + Europe. The default is two zones per storage group. You can choose the zones when creating a storage group.
API hypermedia
The API uses links to standard hypermedia objects to help clients
locate related resources relevant within a set of JSON data. For
example, the JSON below shows the sort of response you might get when
you GET a specific storage group. Its links
array contains several objects, one for each applicable resource. Each rel
represents the link relation. This can be self
for links
referring to the storage group, itself, uploadAccounts
for an upload
account, and zones
for a geographic replication zone assigned to
the group. The associated href
provides a navigable path to the
resource, once you prefix it with your hostname token.
"links": [
{
"rel": "self",
"href": "http://my.url.com/storage/api/v1/storage-groups/1234568"
},
{
"rel": "uploadAccounts",
"href": "http://my.url.com/storage/api/v1/upload-accounts?storageGroupId=1234568"
},
{
"rel": "zones",
"href": "http://my.url.com/storage/api/v1/zones"
}
]
Resources
This section provides details on the API’s various operations.
API summary
Download the RAML descriptors for this API.
Operation | Method | Endpoint |
---|---|---|
List upload accounts | GET | /storage/ |
Create a new upload account | POST | /storage/ |
Get an upload account | GET | /storage/ |
Edit an upload account | PUT | /storage/ |
List storage groups | GET | /storage/ |
Create a storage group | POST | /storage/ |
Get a storage group | GET | /storage/ |
Edit a storage group | PUT | /storage/ |
List zones | GET | /storage/ |
List upload accounts
Get a list of upload accounts for all storage groups in your NetStorage instance.
GET /storage/
Status 200
application/json
Object type: UploadAccount
Download schema: GetUploadAccount.json
Response body:
{
"items": [
{
"uploadAccountId": "value",
"storageGroupId": 1234568,
"status": "ACTIVE",
"isEditable": true,
"ftpEnabled": true,
"sshEnabled": true,
"rsyncEnabled": true,
"asperaEnabled": true,
"hasFileManagerAccess": true,
"hasHttpApiAccess": true,
"hasPendingPropagation": true,
"email": "your@email.com",
"ruleSetId": 19205,
"lastModifiedBy": "camlanders",
"lastModifiedDate": "2017-09-04T09:10:58Z",
"keys": {
"ftp": [
{
"identity": "value",
"isActive": true,
"lastModifiedBy": "camlanders",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"ssh": [
{
"identity": "value",
"key": "ssh-rsa HASH your@hostname",
"isActive": true,
"lastModifiedBy": "camlanders",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"rsync": [
{
"identity": "value",
"key": "value",
"isActive": true,
"lastModifiedBy": "camlanders",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"aspera": [
{
"identity": "value",
"key": "ssh-rsa HASH your@hostname",
"isActive": true,
"lastModifiedBy": "camlanders",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"g2o": [
{
"identity": "value",
"user": "username",
"key": "value",
"isActive": true,
"lastModifiedBy": "camlanders",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
]
},
"accessConfig": {
"hasReadOnlyAccess": false,
"chrootDirectory": "/456789/j",
"loginDirectory": "/456789/j",
"cpcodes": [
{
"cpcodeId": 456789,
"lastModifiedBy": "camlanders",
"lastModifiedDate": "2017-09-04T09:10:58Z",
"subDirectoryRestrictions": [
"/456789/j/k/s"
]
}
]
},
"bruteForceAttackConfig": {
"failedLoginThreshold": 10,
"lockDownDurationSeconds": 30
},
"technicalContactInfo": {
"newTechnicalContact": {
"firstName": "j",
"lastName": "j",
"email": "j@j.com",
"phone": {
"countryCode": "+7",
"areaCode": "7",
"number": "767676767676"
}
}
},
"changeHistory": [
{
"changeType": "UPLOAD_ACCOUNT",
"action": "ADDED",
"propagated": false,
"lastModifiedBy": "camlanders",
"lastModifiedDate": "2017-09-04T09:10:58Z"
},
{
"changeType": "RULESET",
"action": "ADDED",
"propagated": false,
"lastModifiedBy": "camlanders",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
]
}
]
}
Create a new upload account
Create an upload account for a storage group.
POST /storage/
Content-Type: application/json;charset=UTF-8
Object type: UploadAccount
Download schema: PostUploadAccount.json
Request body:
{
"uploadAccountId": "aka_ua",
"storageGroupId": 1234568,
"enableHttpApiAccess": true,
"email": "your@email.com",
"ruleSetId": "555551",
"keys": {
"ssh": [
{
"key": "ssh-rsa HASH your@hostname",
"comments": "Added ssh key"
}
],
"ftp": [
{
"key": "value",
"comments": "Added ftp password"
}
],
"rsync": [
{
"key": "value",
"comments": "Added rsync key"
}
],
"g2o": [
{
"key": "value"
}
]
},
"accessConfig": {
"chrootDirectory": "/456789",
"loginDirectory": "/456789",
"hasReadOnlyAccess": false,
"cpcodes": [
{
"cpcodeId": 456789
}
]
},
"bruteForceAttackConfig": {
"failedLoginThreshold": "10",
"lockDownDurationSeconds": "30"
},
"technicalContactInfo": {
"existingNetStorageTechnicalContact": {
"primarySfPin": "value",
"secondarySfPin": "value"
}
}
}
Status 201
application/json
Object type: UploadAccount
Download schema: GetUploadAccount.json
Response body:
{
"uploadAccountId": "value",
"storageGroupId": 1234568,
"status": "ACTIVE",
"isEditable": true,
"ftpEnabled": true,
"sshEnabled": true,
"rsyncEnabled": true,
"asperaEnabled": true,
"hasFileManagerAccess": true,
"hasHttpApiAccess": true,
"hasPendingPropagation": true,
"email": "your@email.com",
"ruleSetId": 555551,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z",
"keys": {
"ftp": [
{
"identity": "value",
"isActive": true,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"ssh": [
{
"identity": "value",
"key": "ssh-rsa HASH jdoe@hostname",
"isActive": true,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"rsync": [
{
"identity": "value",
"key": "value",
"isActive": true,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"aspera": [
{
"identity": "value",
"key": "ssh-rsa HASH jdoe@hostname",
"isActive": true,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"g2o": [
{
"identity": "value",
"user": "myuploadaccount2",
"key": "value",
"isActive": true,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
]
},
"accessConfig": {
"hasReadOnlyAccess": false,
"chrootDirectory": "/456789/j",
"loginDirectory": "/456789/j",
"cpcodes": [
{
"cpcodeId": 456789,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z",
"subDirectoryRestrictions": [
"/456789/j/k/s"
]
}
]
},
"bruteForceAttackConfig": {
"failedLoginThreshold": 10,
"lockDownDurationSeconds": 30
},
"technicalContactInfo": {
"newTechnicalContact": {
"firstName": "jane",
"lastName": "doe",
"email": "jadoe@email.com",
"phone": {
"countryCode": "+7",
"areaCode": "7",
"number": "767676767676"
}
}
},
"changeHistory": [
{
"changeType": "UPLOAD_ACCOUNT",
"action": "ADDED",
"propagated": false,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
},
{
"changeType": "RULESET",
"action": "ADDED",
"propagated": false,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
]
}
Run the List storage groups GET operation.
Choose the storage group from the response that you want to access with the upload account.
Store the
storageGroupId
assigned to this storage group.In the
cpcodes
array for the same storage group, locate and store thecpcodeId
assigned to the desired upload directory.You can form an object for the request by using UploadAccount POST data as a reference for required and optional members.
Include a name for the upload account as the
uploadAccountId
.The
accessConfig
object contains the stored values required forstorageGroupId
andcpcodeId
members.Apply these values to associate the upload account with the storage group. Then, select the applicable upload directory through its associated CP code.
POST
the object to/storage/v1/upload-accounts
.
Get an upload account
Get a specific upload account based on its unique ID value.
GET /storage/
Sample: /storage/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
uploadAccountId |
String | 123456 |
The unique ID assigned to the target upload account. This value can be obtained by performing a GET of all of your accounts and obtaining this value for the desired account. |
Status 200
application/json
Object type: UploadAccount
Download schema: GetUploadAccount.json
Response body:
{
"uploadAccountId": "value",
"storageGroupId": 1234568,
"status": "ACTIVE",
"isEditable": true,
"ftpEnabled": true,
"sshEnabled": true,
"rsyncEnabled": true,
"asperaEnabled": true,
"hasFileManagerAccess": true,
"hasHttpApiAccess": true,
"hasPendingPropagation": true,
"email": "your@email.com",
"ruleSetId": 555551,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z",
"keys": {
"ftp": [
{
"identity": "value",
"isActive": true,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"ssh": [
{
"identity": "value",
"key": "ssh-rsa HASH jdoe@hostname",
"isActive": true,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"rsync": [
{
"identity": "value",
"key": "value",
"isActive": true,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"aspera": [
{
"identity": "value",
"key": "ssh-rsa HASH jdoe@hostname",
"isActive": true,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"g2o": [
{
"identity": "value",
"user": "myuploadaccount2",
"key": "value",
"isActive": true,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
]
},
"accessConfig": {
"hasReadOnlyAccess": false,
"chrootDirectory": "/456789/j",
"loginDirectory": "/456789/j",
"cpcodes": [
{
"cpcodeId": 456789,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z",
"subDirectoryRestrictions": [
"/456789/j/k/s"
]
}
]
},
"bruteForceAttackConfig": {
"failedLoginThreshold": 10,
"lockDownDurationSeconds": 30
},
"technicalContactInfo": {
"newTechnicalContact": {
"firstName": "jane",
"lastName": "doe",
"email": "jadoe@email.com",
"phone": {
"countryCode": "+7",
"areaCode": "7",
"number": "767676767676"
}
}
},
"changeHistory": [
{
"changeType": "UPLOAD_ACCOUNT",
"action": "ADDED",
"propagated": false,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
},
{
"changeType": "RULESET",
"action": "ADDED",
"propagated": false,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
]
}
Run the List upload accounts operation.
Locate and store the
uploadAccountId
for the applicable group.Make a
GET
request to/storage/v1/upload-account/{uploadAccountId}
.
Edit an upload account
Update an upload account based on its unique uploadAccountId.
PUT /storage/
Sample: /storage/
Content-Type: application/json;charset=UTF-8
Object type: UploadAccount
Download schema: PutUploadAccount.json
Request body:
{
"enableFileManagerAccess": false,
"enableHttpApiAccess": true,
"enableAspera": false,
"isEditable": true,
"isVisible": true,
"email": "your@email.com",
"ruleSetId": 12944,
"accessConfig": {
"chrootDirectory": "/456789",
"hasReadOnlyAccess": false,
"cpcodes": [
{
"cpcodeId": 456789,
"subDirectoryRestrictions": [
"/456789/abc"
]
}
]
},
"bruteForceAttackConfig": {
"failedLoginThreshold": "10",
"lockDownDurationSeconds": "30"
},
"technicalContactInfo": {
"existingTechnicalContact": {
"primarySfPin": "value",
"secondarySfPin": "value"
}
}
}
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
uploadAccountId |
String | 123456 |
The unique ID assigned to the target upload account. This value can be obtained by performing a GET of all of your accounts and obtaining this value for the desired account. |
Status 200
application/json
Object type: UploadAccount
Download schema: GetUploadAccount.json
Response body:
{
"uploadAccountId": "value",
"storageGroupId": 1234568,
"status": "ACTIVE",
"isEditable": true,
"ftpEnabled": true,
"sshEnabled": true,
"rsyncEnabled": true,
"asperaEnabled": true,
"hasFileManagerAccess": true,
"hasHttpApiAccess": true,
"hasPendingPropagation": true,
"email": "your@email.com",
"ruleSetId": 555551,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z",
"keys": {
"ftp": [
{
"identity": "value",
"isActive": true,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"ssh": [
{
"identity": "value",
"key": "ssh-rsa HASH jdoe@hostname",
"isActive": true,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"rsync": [
{
"identity": "value",
"key": "value",
"isActive": true,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"aspera": [
{
"identity": "value",
"key": "ssh-rsa HASH jdoe@hostname",
"isActive": true,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"g2o": [
{
"identity": "value",
"user": "myuploadaccount2",
"key": "value",
"isActive": true,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
]
},
"accessConfig": {
"hasReadOnlyAccess": false,
"chrootDirectory": "/456789/j",
"loginDirectory": "/456789/j",
"cpcodes": [
{
"cpcodeId": 456789,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z",
"subDirectoryRestrictions": [
"/456789/j/k/s"
]
}
]
},
"bruteForceAttackConfig": {
"failedLoginThreshold": 10,
"lockDownDurationSeconds": 30
},
"technicalContactInfo": {
"newTechnicalContact": {
"firstName": "jane",
"lastName": "doe",
"email": "jadoe@email.com",
"phone": {
"countryCode": "+7",
"areaCode": "7",
"number": "767676767676"
}
}
},
"changeHistory": [
{
"changeType": "UPLOAD_ACCOUNT",
"action": "ADDED",
"propagated": false,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
},
{
"changeType": "RULESET",
"action": "ADDED",
"propagated": false,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
]
}
Run the List upload accounts operation.
Choose the appropriate account from the response and store its
uploadAccountId
.Use the
uploadAccountId
value to run the Get an upload account operation.Modify the object using UploadAccount PUT data as a reference for required and optional members.
PUT
the object to the same URL as the previous GET:/storage/v1/upload-accounts/{uploadAccountId}
.
List storage groups
Get a list of all of the storage groups in your NetStorage instance, optionally filtered by CP code or the storage group’s categorized purpose.
GET /storage/
Sample: /storage/
Parameter | Type | Sample | Description |
---|---|---|---|
Optional query parameters | |||
cpcodeId |
Integer | 123456 |
Include a specific CP code to filter response output to the storage group using it for an upload directory. |
storageGroupPurpose |
Enumeration | NETSTORAGE |
Specify a storage group’s provisioned purpose to filter the results. See the set of available values. |
Status 200
application/json
Object type: StorageGroup
Download schema: GetStorageGroup.json
Response body:
{
"items": [
{
"contractId": "5-555V556",
"storageGroupId": 1234568,
"storageGroupName": "aka_storage",
"storageGroupType": "OBJECTSTORE",
"storageGroupPurpose": "NETSTORAGE",
"domainPrefix": "akastorage",
"asperaEnabled": false,
"pciEnabled": false,
"estimatedUsageGB": 0,
"allowEdit": true,
"migrationStatus": "-",
"provisionStatus": "PROVISIONED",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z",
"propagationStatus": {
"status": "PENDING",
"pendingChanges": [
"PORTAL_COBRA_METADATA",
"PORTAL_PLANNER_METADATA",
"PLANNER_PLACEMENT",
"CNAMES"
],
"activeChanges": []
},
"cpcodes": [
{
"cpcodeId": 456789,
"downloadSecurity": "ALL_EDGE_SERVERS",
"useSsl": false,
"serveFromZip": true,
"sendHash": true,
"quickDelete": false,
"numberOfFiles": -1,
"numberOfBytes": -1,
"lastChangesPropagated": false,
"requestUriCaseConversion": "NO_CONVERSION",
"pathCheckAndConversion": "DISALLOW_ALL_IMPROPER_PATHS",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z",
"queryStringConversion": {
"queryStringConversionMode": "STRIP_ALL_INCOMING_QUERY"
},
"encodingConfig": {
"enforceEncoding": true,
"encoding": "UTF_8"
},
"dirListing": {
"indexFileName": "index.html",
"maxListSize": 1,
"searchOn404": "LOOK_FOR_EXPLICIT_DIR_ONLY"
},
"ageDeletions": [
{
"ageDeletionDirectory": "/456789/EN",
"ageDeletionDays": 200,
"ageDeletionSizeBytes": 10000000,
"ageDeletionRecursivePurge": true,
"ageDeletionExclusionRegex": ".zip*",
"ageDeletionSelectionRegex": ".*"
}
]
}
],
"zones": [
{
"zoneName": "AU",
"allowUpload": "YES",
"allowDownload": "YES",
"noCapacityAction": "SPILL_OUTSIDE",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z"
},
{
"zoneName": "IN",
"allowUpload": "YES",
"allowDownload": "YES",
"noCapacityAction": "SPILL_OUTSIDE",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z"
}
],
"links": [
{
"rel": "self",
"href": "http://iamakamai.qaextranet.akamai.com/storage-services/api/v1/storage-groups/1234568"
},
{
"rel": "uploadAccounts",
"href": "http://iamakamai.qaextranet.akamai.com/storage-services/api/v1/upload-accounts?storageGroupId=1234568"
},
{
"rel": "zones",
"href": "http://iamakamai.qaextranet.akamai.com/storage-services/api/v1/zones"
}
]
}
]
}
This operation can be used to list your storage groups in multiple ways.
List All Storage Groups
- Make a GET request to
/storage/v1/storage-groups
You can filter the results
Results can be filtered with the storageGroupPurpose
and cpcodeId
query parameters.
If you want to filter by category, specify the
storageGroupPurpose
query parameter.If you want to filter by CP code, specify a
cpcodeId
. If you don’t already have a value, they’re available in this operation’s unfiltered response, where each storage group initems
features its owncpcodes
array.Make a
GET
request to/storage/v1/storage-groups{?cpcodeId,storageGroupPurpose}
Create a storage group
This operation creates a new storage group to house your content.
POST /storage/
Content-Type: application/json;charset=UTF-8
Object type: StorageGroup
Download schema: PostStorageGroup.json
Request body:
{
"contractId": "5-555V556",
"storageGroupName": "aka_storage",
"domainPrefix": "akastorage",
"cpcodes": [
{
"cpcodeId": "456789",
"downloadSecurity": "ALL_EDGE_SERVERS",
"useSsl": false,
"requestUriCaseConversion": "NO_CONVERSION",
"pathCheckAndConversion": "DISALLOW_ALL_IMPROPER_PATHS",
"serveFromZip": true,
"sendHash": true,
"enableQuickDelete": false,
"queryStringConversion": {
"queryStringConversionMode": "STRIP_ALL_INCOMING_QUERY"
},
"encodingConfig": {
"enforceEncoding": true,
"encoding": "UTF_8"
},
"dirListing": {
"indexFileName": "index.html",
"maxListSize": 1,
"searchOn404": "LOOK_FOR_EXPLICIT_DIR_ONLY"
},
"ageDeletions": [
{
"ageDeletionDirectory": "/456789/EN",
"ageDeletionDays": 200,
"ageDeletionSizeBytes": 10000000,
"ageDeletionRecursivePurge": true,
"ageDeletionExclusionRegex": ".zip*",
"ageDeletionSelectionRegex": ".*"
}
]
}
],
"zones": [
{
"zoneName": "AU",
"allowUpload": "YES",
"allowDownload": "YES",
"noCapacityAction": "SPILL_OUTSIDE"
},
{
"zoneName": "IN",
"allowUpload": "YES",
"allowDownload": "YES",
"noCapacityAction": "SPILL_OUTSIDE"
}
]
}
Status 201
application/json
Object type: StorageGroup
Download schema: GetStorageGroup.json
Response body:
{
"contractId": "5-555V556",
"storageGroupId": 1234568,
"storageGroupName": "aka_storage",
"storageGroupType": "OBJECTSTORE",
"storageGroupPurpose": "NETSTORAGE",
"domainPrefix": "akastorage",
"asperaEnabled": false,
"pciEnabled": false,
"estimatedUsageGB": 0,
"allowEdit": true,
"migrationStatus": "-",
"provisionStatus": "PROVISIONED",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z",
"propagationStatus": {
"status": "PENDING",
"pendingChanges": [
"PORTAL_COBRA_METADATA",
"PORTAL_PLANNER_METADATA",
"PLANNER_PLACEMENT",
"CNAMES"
],
"activeChanges": []
},
"cpcodes": [
{
"cpcodeId": 456789,
"downloadSecurity": "ALL_EDGE_SERVERS",
"useSsl": false,
"serveFromZip": true,
"sendHash": true,
"quickDelete": false,
"numberOfFiles": -1,
"numberOfBytes": -1,
"lastChangesPropagated": false,
"requestUriCaseConversion": "NO_CONVERSION",
"pathCheckAndConversion": "DISALLOW_ALL_IMPROPER_PATHS",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z",
"queryStringConversion": {
"queryStringConversionMode": "STRIP_ALL_INCOMING_QUERY"
},
"encodingConfig": {
"enforceEncoding": true,
"encoding": "UTF_8"
},
"dirListing": {
"indexFileName": "index.html",
"maxListSize": 1,
"searchOn404": "LOOK_FOR_EXPLICIT_DIR_ONLY"
},
"ageDeletions": [
{
"ageDeletionDirectory": "/456789/EN",
"ageDeletionDays": 200,
"ageDeletionSizeBytes": 10000000,
"ageDeletionRecursivePurge": true,
"ageDeletionExclusionRegex": ".zip*",
"ageDeletionSelectionRegex": ".*"
}
]
}
],
"zones": [
{
"zoneName": "AU",
"allowUpload": "YES",
"allowDownload": "YES",
"noCapacityAction": "SPILL_OUTSIDE",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z"
},
{
"zoneName": "IN",
"allowUpload": "YES",
"allowDownload": "YES",
"noCapacityAction": "SPILL_OUTSIDE",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z"
}
],
"links": [
{
"rel": "self",
"href": "http://my.url.com/storage-services/api/v1/storage-groups/1234568"
},
{
"rel": "uploadAccounts",
"href": "http://my.url.com/storage-services/api/v1/upload-accounts?storageGroupId=1234568"
},
{
"rel": "zones",
"href": "http://my.url.com/storage-services/api/v1/zones"
}
]
}
Generate a CP code with the Property Manager API
Form a StorageGroup POST object.
POST
the object to/storage/v1/storage-groups
Get a storage group
Get a specific storage group based on its unique ID value.
GET /storage/
Sample: /storage/
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
storageGroupId |
Integer | 654321 |
Uniquely identifies each storage group. |
Status 200
application/json
Object type: StorageGroup
Download schema: GetStorageGroup.json
Response body:
{
"contractId": "5-555V556",
"storageGroupId": 1234568,
"storageGroupName": "aka_storage",
"storageGroupType": "OBJECTSTORE",
"storageGroupPurpose": "NETSTORAGE",
"domainPrefix": "akastorage",
"asperaEnabled": false,
"pciEnabled": false,
"estimatedUsageGB": 0,
"allowEdit": true,
"migrationStatus": "-",
"provisionStatus": "PROVISIONED",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z",
"propagationStatus": {
"status": "PENDING",
"pendingChanges": [
"PORTAL_COBRA_METADATA",
"PORTAL_PLANNER_METADATA",
"PLANNER_PLACEMENT",
"CNAMES"
],
"activeChanges": []
},
"cpcodes": [
{
"cpcodeId": 456789,
"downloadSecurity": "ALL_EDGE_SERVERS",
"useSsl": false,
"serveFromZip": true,
"sendHash": true,
"quickDelete": false,
"numberOfFiles": -1,
"numberOfBytes": -1,
"lastChangesPropagated": false,
"requestUriCaseConversion": "NO_CONVERSION",
"pathCheckAndConversion": "DISALLOW_ALL_IMPROPER_PATHS",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z",
"queryStringConversion": {
"queryStringConversionMode": "STRIP_ALL_INCOMING_QUERY"
},
"encodingConfig": {
"enforceEncoding": true,
"encoding": "UTF_8"
},
"dirListing": {
"indexFileName": "index.html",
"maxListSize": 1,
"searchOn404": "LOOK_FOR_EXPLICIT_DIR_ONLY"
},
"ageDeletions": [
{
"ageDeletionDirectory": "/456789/EN",
"ageDeletionDays": 200,
"ageDeletionSizeBytes": 10000000,
"ageDeletionRecursivePurge": true,
"ageDeletionExclusionRegex": ".zip*",
"ageDeletionSelectionRegex": ".*"
}
]
}
],
"zones": [
{
"zoneName": "AU",
"allowUpload": "YES",
"allowDownload": "YES",
"noCapacityAction": "SPILL_OUTSIDE",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z"
},
{
"zoneName": "IN",
"allowUpload": "YES",
"allowDownload": "YES",
"noCapacityAction": "SPILL_OUTSIDE",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z"
}
],
"links": [
{
"rel": "self",
"href": "http://my.url.com/storage-services/api/v1/storage-groups/1234568"
},
{
"rel": "uploadAccounts",
"href": "http://my.url.com/storage-services/api/v1/upload-accounts?storageGroupId=1234568"
},
{
"rel": "zones",
"href": "http://my.url.com/storage-services/api/v1/zones"
}
]
}
Edit a storage group
Update storage group based on its unique ID value.
PUT /storage/
Sample: /storage/
Content-Type: application/json;charset=UTF-8
Object type: StorageGroup
Download schema: PutStorageGroup.json
Request body:
{
"storageGroupName": "aka_storage",
"cpcodes": [
{
"cpcodeId": 456789,
"downloadSecurity": "ALL_EDGE_SERVERS",
"useSsl": false,
"requestUriCaseConversion": "NO_CONVERSION",
"pathCheckAndConversion": "DISALLOW_ALL_IMPROPER_PATHS",
"serveFromZip": true,
"sendHash": true,
"enableQuickDelete": false,
"queryStringConversion": {
"queryStringConversionMode": "STRIP_ALL_INCOMING_QUERY"
},
"encodingConfig": {
"enforceEncoding": true,
"encoding": "UTF_8"
},
"dirListing": {
"indexFileName": "index.html",
"maxListSize": 1,
"searchOn404": "LOOK_FOR_EXPLICIT_DIR_ONLY"
},
"ageDeletions": [
{
"ageDeletionDirectory": "/456789/EN",
"ageDeletionDays": 200,
"ageDeletionSizeBytes": 10000000,
"ageDeletionRecursivePurge": true,
"ageDeletionExclusionRegex": ".zip*",
"ageDeletionSelectionRegex": ".*"
}
]
}
],
"zones": [
{
"zoneName": "AU",
"allowUpload": "YES",
"allowDownload": "YES",
"noCapacityAction": "SPILL_OUTSIDE"
},
{
"zoneName": "IN",
"allowUpload": "YES",
"allowDownload": "YES",
"noCapacityAction": "SPILL_OUTSIDE"
}
]
}
Parameter | Type | Sample | Description |
---|---|---|---|
URL path parameters | |||
storageGroupId |
Integer | 654321 |
Uniquely identifies each storage group. |
Status 200
application/json
Object type: StorageGroup
Download schema: GetStorageGroup.json
Response body:
{
"contractId": "5-555V556",
"storageGroupId": 1234568,
"storageGroupName": "aka_storage",
"storageGroupType": "OBJECTSTORE",
"storageGroupPurpose": "NETSTORAGE",
"domainPrefix": "akastorage",
"asperaEnabled": false,
"pciEnabled": false,
"estimatedUsageGB": 0,
"allowEdit": true,
"migrationStatus": "-",
"provisionStatus": "PROVISIONED",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z",
"propagationStatus": {
"status": "PENDING",
"pendingChanges": [
"PORTAL_COBRA_METADATA",
"PORTAL_PLANNER_METADATA",
"PLANNER_PLACEMENT",
"CNAMES"
],
"activeChanges": []
},
"cpcodes": [
{
"cpcodeId": 456789,
"downloadSecurity": "ALL_EDGE_SERVERS",
"useSsl": false,
"serveFromZip": true,
"sendHash": true,
"quickDelete": false,
"numberOfFiles": -1,
"numberOfBytes": -1,
"lastChangesPropagated": false,
"requestUriCaseConversion": "NO_CONVERSION",
"pathCheckAndConversion": "DISALLOW_ALL_IMPROPER_PATHS",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z",
"queryStringConversion": {
"queryStringConversionMode": "STRIP_ALL_INCOMING_QUERY"
},
"encodingConfig": {
"enforceEncoding": true,
"encoding": "UTF_8"
},
"dirListing": {
"indexFileName": "index.html",
"maxListSize": 1,
"searchOn404": "LOOK_FOR_EXPLICIT_DIR_ONLY"
},
"ageDeletions": [
{
"ageDeletionDirectory": "/456789/EN",
"ageDeletionDays": 200,
"ageDeletionSizeBytes": 10000000,
"ageDeletionRecursivePurge": true,
"ageDeletionExclusionRegex": ".zip*",
"ageDeletionSelectionRegex": ".*"
}
]
}
],
"zones": [
{
"zoneName": "AU",
"allowUpload": "YES",
"allowDownload": "YES",
"noCapacityAction": "SPILL_OUTSIDE",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z"
},
{
"zoneName": "IN",
"allowUpload": "YES",
"allowDownload": "YES",
"noCapacityAction": "SPILL_OUTSIDE",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z"
}
],
"links": [
{
"rel": "self",
"href": "http://my.url.com/storage-services/api/v1/storage-groups/1234568"
},
{
"rel": "uploadAccounts",
"href": "http://my.url.com/storage-services/api/v1/upload-accounts?storageGroupId=1234568"
},
{
"rel": "zones",
"href": "http://my.url.com/storage-services/api/v1/zones"
}
]
}
Run the List storage groups GET operation.
Choose the appropriate group from the response and store its
storageGroupId
.Use the
storageGroupId
value to run the Get a storage group operation.Modify the object using StorageGroup PUT data as a reference for required and optional members. Only include the objects that apply to what you want to update. (You don’t need to include the full example content.)
PUT
the object to the same URL as the previous GET:/storage/v1/storage-groups/{storageGroupId}
.
List zones
Get a list of the geographic regions (“zones”) that are available to you for use in replicating your content.
GET /storage/
Sample: /storage/
Parameter | Type | Sample | Description |
---|---|---|---|
Optional query parameters | |||
count |
Integer | 5 |
An integer that serves as the maximum number of zones in the response. By default, all available zones are revealed. |
Status 200
application/json
Object type: Zones
Download schema: Zones.json
Response body:
{
"zones": [
{
"zoneName": "CA-nearby"
},
{
"zoneName": "JP"
},
{
"zoneName": "asia"
},
{
"zoneName": "australia"
},
{
"zoneName": "europe"
},
{
"zoneName": "global"
}
]
}
Data
This section provides you with the data model for the NetStorage Configuration API.
Download the JSON schemas for this API.
This section’s data schema tables list membership requirements as follows:
✓ | Member is required in requests, or always present in responses, even if its value is empty or null . |
○ | Member is optional, and may be omitted in some cases. |
✗ | Member is out of scope, and irrelevant to the specified interaction context. If you include the member in that context, it either triggers an error, or is ignored. |
StorageGroup
The basic unit within a NetStorage instance is referred to as a “storage group.” A storage group is where you house your content for distribution. You can list and get details of a group.
Download schema:
GetStorageGroup.json
, PostStorageGroup.json
, PutStorageGroup.json
Sample GET:
{
"contractId": "5-555V556",
"storageGroupId": 1234568,
"storageGroupName": "aka_storage",
"storageGroupType": "OBJECTSTORE",
"storageGroupPurpose": "NETSTORAGE",
"domainPrefix": "akastorage",
"asperaEnabled": false,
"pciEnabled": false,
"estimatedUsageGB": 0,
"allowEdit": true,
"migrationStatus": "-",
"provisionStatus": "PROVISIONED",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z",
"propagationStatus": {
"status": "PENDING",
"pendingChanges": [
"PORTAL_COBRA_METADATA",
"PORTAL_PLANNER_METADATA",
"PLANNER_PLACEMENT",
"CNAMES"
],
"activeChanges": []
},
"cpcodes": [
{
"cpcodeId": 456789,
"downloadSecurity": "ALL_EDGE_SERVERS",
"useSsl": false,
"serveFromZip": true,
"sendHash": true,
"quickDelete": false,
"numberOfFiles": -1,
"numberOfBytes": -1,
"lastChangesPropagated": false,
"requestUriCaseConversion": "NO_CONVERSION",
"pathCheckAndConversion": "DISALLOW_ALL_IMPROPER_PATHS",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z",
"queryStringConversion": {
"queryStringConversionMode": "STRIP_ALL_INCOMING_QUERY"
},
"encodingConfig": {
"enforceEncoding": true,
"encoding": "UTF_8"
},
"dirListing": {
"indexFileName": "index.html",
"maxListSize": 1,
"searchOn404": "LOOK_FOR_EXPLICIT_DIR_ONLY"
},
"ageDeletions": [
{
"ageDeletionDirectory": "/456789/EN",
"ageDeletionDays": 200,
"ageDeletionSizeBytes": 10000000,
"ageDeletionRecursivePurge": true,
"ageDeletionExclusionRegex": ".zip*",
"ageDeletionSelectionRegex": ".*"
}
]
}
],
"zones": [
{
"zoneName": "AU",
"allowUpload": "YES",
"allowDownload": "YES",
"noCapacityAction": "SPILL_OUTSIDE",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z"
},
{
"zoneName": "IN",
"allowUpload": "YES",
"allowDownload": "YES",
"noCapacityAction": "SPILL_OUTSIDE",
"lastModifiedBy": "carndt",
"lastModifiedDate": "2018-08-07T09:25:35Z"
}
],
"links": [
{
"rel": "self",
"href": "http://my.url.com/storage-services/api/v1/storage-groups/1234568"
},
{
"rel": "uploadAccounts",
"href": "http://my.url.com/storage-services/api/v1/upload-accounts?storageGroupId=1234568"
},
{
"rel": "zones",
"href": "http://my.url.com/storage-services/api/v1/zones"
}
]
}
StorageGroup members
Member | Type | GET | POST | PUT | Description | |||
---|---|---|---|---|---|---|---|---|
StorageGroup : The basic unit within a NetStorage instance is referred to as a “storage group.” A storage group is where you house your content for distribution. You can list and get details of a group. |
||||||||
allowEdit |
Boolean | ○ | ✗ | ✗ | Whether this group is enabled for editing. | |||
asperaEnabled |
Boolean | ○ | ✗ | ✗ | Whether Aspera Upload Acceleration has been enabled in an upload account that has access to this group. | |||
comments |
Array | ○ | ✗ | ✗ | Individual comments that briefly describe the last update made to the group. | |||
contractId |
String | ○ | ✓ | ✗ | The unique identifier set for the contract that contains your instance of NetStorage and this group. | |||
cpcodes |
Storage |
○ | ✓ | ○ | Encapsulates CP codes assigned to a group. | |||
domainPrefix |
String | ○ | ✓ | ✗ | Your unique domain prefix (subdomain) value that the NetStorage system applies to the Domain Names used to access the group. | |||
estimatedUsageGB |
Number | ○ | ✗ | ✗ | The current volume of the group, in gigabytes. | |||
groupId |
Integer | ✗ | ○ | ✗ | The unique identifier for the storage group in Control Center under which you want to provision. | |||
lastModifiedBy |
String | ○ | ✗ | ✗ | The user who last modified the group. | |||
lastModifiedDate |
String | ○ | ✗ | ✗ | The date the group was last modified. | |||
links |
Hypermedia array | ○ | ✗ | ✗ | Hypermedia links to the specific group, as well as any upload accounts or geographic replication zones assigned to it. | |||
migrationStatus |
String | ○ | ✗ | ✗ | The current migration status from FileStore format to ObjectStore format, if migration has been initiated. | |||
pciEnabled |
Boolean | ○ | ✗ | ✗ | Whether Payment Card Industry (PCI) Data Security Standard support has been enabled for the storage group. These standards are designed to ensure that all companies that accept, process, store or transmit credit card information maintain a secure environment. | |||
post |
Boolean | ○ | ✗ | ✗ | The postfile domain, {domain prefix}.postfile.akamai.com configured for use with this group. The {domain prefix} variable is set up by you during the creation of the group. |
|||
propagation |
Storage |
○ | ✗ | ✗ | The current propagation status of the group. | |||
provisionStatus |
Enumeration | ○ | ✗ | ✗ | The current provisioning status of the group. PROVISIONED indicates the group is ready for use. MARKED_FOR_DEPROVISIONING indicates deprovisioning has been requested, but the group is still accessible. DEPROVISIONED indicates deprovisioning has completed, and the group is no longer available. NOT_PROVISIONED indicates the group hasn’t been requested for provisioning. |
|||
storageGroupId |
Integer | ○ | ✗ | ✗ | The unique identifier that’s automatically set for the group. | |||
storageGroupName |
String | ○ | ✓ | ○ | The name you’ve set for the group. | |||
storage |
Enumeration | ○ | ✗ | ✗ | The specific purpose defined for the storage group. See the set of available values. | |||
uploadDomain |
String | ○ | ✗ | ✗ | The Upload Domain Name for this group. It’s used to access the group to upload content. This is automatically constructed using the domain prefix that you define when creating the group. | |||
zones |
Storage |
○ | ✓ | ○ | The geographic replication zones configured for use with this group. These are also referred to as replicas. | |||
StorageGroup.cpcodes[] : Encapsulates CP codes assigned to a group. |
||||||||
ageDeletions |
Storage |
○ | ○ | ○ | Automatic Purge Routines that have been set up for the group. | |||
cpcodeId |
Integer | ○ | ○ | ○ | A CP code assigned to the group, and used to identify requests to a specific upload directory. The CP code serves as the root for upload directory. This is also referred to as the CP code root. | |||
dirListing |
Storage |
○ | ○ | ○ | Specifies the file to serve if a request doesn’t end in a specific filename and extension. | |||
downloadSecurity |
Enumeration | ○ | ○ | ○ | The level of security to obtain download access to the group. ALL_EDGE_SERVERS allows requests from all edge servers. STREAMING_SERVERS_ONLY only allows requests from edge servers dedicated to streaming media. G_2_O_AND_ALL_EDGE_SERVERS allows requests from all edge servers, but a warning is issued; it also allows all requests that include a valid G2O token, G_2_O_ONLY requires inclusion of a valid G2O token. |
|||
enable |
Boolean | ✗ | ○ | ○ | Whether the quick-delete operation is available in the NetStorage Usage API and the CMShell. Targets a specific directory in this group and recursively deletes all of its contents. |
|||
encodingConfig |
Storage |
○ | ○ | ○ | The type of encoding to use when displaying paths in XML-aware contexts. | |||
f2hConfig |
Storage |
○ | ○ | ○ | FTP to HTTP (F2H) conversion for FTP download efficiency. | |||
g2o |
Storage |
○ | ✗ | ✗ | Keys you can use to access the group with the NetStorage Usage API. | |||
last |
Boolean | ○ | ✗ | ✗ | When you create or modify an upload directory and changes are propagated to the NetStorage network, true indicates propagation is complete. |
|||
lastModifiedBy |
String | ○ | ✗ | ✗ | The user who last modified the upload directory. | |||
lastModifiedDate |
String | ○ | ✗ | ✗ | The date the upload directory was last modified. | |||
numberOfBytes |
Integer | ○ | ✗ | ✗ | The total number of bytes used by the upload directory. | |||
numberOfFiles |
Integer | ○ | ✗ | ✗ | The total number of files contained in the upload directory. | |||
path |
Enumeration | ○ | ○ | ○ | Specifies the action taken when analyzing the request path. See the set of available values. | |||
query |
Storage |
○ | ○ | ○ | Specifies how query strings appended to request paths to this group are handled. | |||
quickDelete |
Boolean | ○ | ✗ | ✗ | Whether the quick-delete operation is available in the NetStorage Usage API and the CMShell. Targets a specific directory in this group and recursively deletes all of its contents. |
|||
request |
Enumeration | ○ | ○ | ○ | Standardizes case usage for filenames uploaded to your selected upload directory. NO_CONVERSION , CONVERT_TO_UPPER and CONVERT_TO_LOWER are self-explanatory. STREAM_OS indicates case requirements are applied to support the Stream OS product. This is only seen in a very limited number of legacy groups. |
|||
rootDirectory |
String | ○ | ✗ | ✗ | The CP code root for the upload directory. | |||
sendHash |
Boolean | ○ | ○ | ○ | Whether a content item’s MD5 digest values is sent in the HTTP Content-MD5 response header. |
|||
serveFromZip |
Boolean | ○ | ○ | ○ | Whether NetStorage dynamically examines archived files to directly serve individual files from within the archive. | |||
useSsl |
Boolean | ○ | ○ | ○ | Whether the contents within the upload directory are replicated securely via Secure Sockets Layer (SSL). | |||
StorageGroup.cpcodes[].ageDeletions[] : Automatic Purge Routines that have been set up for the group. |
||||||||
ageDeletionDays |
Number | ○ | ○ | ○ | When the ageDeletionSizeBytes value is reached for the target directory, this number is subtracted from the current date to determine a timestamp. Files older than this timestamp are purged. |
|||
age |
String | ○ | ○ | ○ | The target directory for an Automatic Purge Routine. | |||
age |
String | ○ | ○ | ○ | POSIX regular expression pattern matching the filenames to exclude from the purge. | |||
age |
String | ○ | ✗ | ✗ | POSIX regular expression pattern matching the filenames to include in the purge. | |||
age |
Boolean | ○ | ○ | ○ | Whether subdirectories within the target directory are also included in the purge. If false , only files within the target directory are purged. |
|||
age |
String | ○ | ○ | ○ | POSIX regular expression pattern matching the filenames to include in the purge. | |||
age |
Number | ○ | ○ | ○ | Automatic purge occurs when the target directory reaches this size, in bytes. | |||
StorageGroup.cpcodes[].dirListing : Specifies the file to serve if a request doesn’t end in a specific filename and extension. |
||||||||
indexFileName |
String | ○ | ○ | ○ | If a request doesn’t specifically end in a filename and extension, this specifies the default file that’s served. | |||
maxListSize |
Integer | ○ | ○ | ○ | Whether the file path is truncated or hidden in the file path displayed in the HTML directory listing for the index name file. -1 indicates the full path is displayed, 0 indicates directory listings aren’t served, but the search for the requested index name file continues, and an integer greater than zero indicates directory listings in the path are limited to this number. |
|||
searchOn404 |
Enumeration | ○ | ○ | ○ | The action taken in the event of a 404 error, where the client was able to access NetStorage, but not the requested content or directory. DO_NOT_SEARCH stops additional searches, and returns a 404 error, LOOK_FOR_EXPLICIT_DIR_ONLY looks for an explicit directory matching the path specified in the request, and LOOK_FOR_IMPLICIT_AND_EXPLICIT_DIR looks for both an explicit and implicit directory that may match a path defined in the request. |
|||
StorageGroup.cpcodes[].encodingConfig : The type of encoding to use when displaying paths in XML-aware contexts. |
||||||||
encoding |
Enumeration | ○ | ○ | ○ | The selected encoding format, either ISO_8859_1 which are 8-bit, single-byte coded graphic character sets, or UTF_8 which are variable length, 8-bit code units via UTF–8 character encoding. |
|||
enforceEncoding |
Boolean | ○ | ○ | ○ | Whether upload operations verify that all path values defined within the URL for target content are properly formatted using the selected encoding method. | |||
StorageGroup.cpcodes[].f2hConfig : FTP to HTTP (F2H) conversion for FTP download efficiency. |
||||||||
f2hCookies |
Array | ○ | ○ | ○ | A listing of cookies generated in support of F2H for this group. | |||
f2hDirectories |
Array | ○ | ○ | ○ | A listing of directories in the group that have been set up to support F2H. | |||
StorageGroup.cpcodes[].g2o : Keys you can use to access the group with the NetStorage Usage API. |
||||||||
key |
String | ○ | ✗ | ✗ | The G2O key. This is the key set in the upload account named as the user . It’s used with the NetStorage Usage API to access this group. |
|||
lastModifiedBy |
String | ○ | ✗ | ✗ | The user who added or last modified the key. | |||
lastModifiedDate |
String | ○ | ✗ | ✗ | The ISO 8601 timestamp that represents when the G2O key was last modified. | |||
user |
String | ○ | ✗ | ✗ | The G2O user upload account. This is the name of an upload account for this group that enables access to the NetStorage Usage API. | |||
StorageGroup.cpcodes[].queryStringConversion : Specifies how query strings appended to request paths to this group are handled. |
||||||||
query |
String | ○ | ○ | ○ | A list of query string values that have been explicitly set to be excluded from conversion. Only applicable if APPLY_ACS_QUERY_CONVERSION is set as the queryStringConversionMode . |
|||
query |
String | ○ | ○ | ○ | If APPLY_ACS_QUERY_CONVERSION is set as the queryStringConversionMode , this specifies a list of query string values that should be included for ACS Query String Conversion, in the specific order they should be interpreted. |
|||
query |
Enumeration | ○ | ○ | ○ | Specifies how upload and download request query strings should be transformed before processing the request. With STRIP_ALL_INCOMING_QUERY , all query strings are stripped and ignored. With APPLY_ACS_QUERY_CONVERSION , the key is reviewed and stripped down using settings defined for queryStringConversionKeyOrder and queryStringConversionExclude ; a hash of the string is also applied and used for matching at request time. With LEAVE_INCOMING_QUERY_AS_IS , the string is left as is. |
|||
query |
String | ○ | ○ | ○ | The version in use for queryStringConversion with this group. |
|||
StorageGroup.propagationStatus : The current propagation status of the group. |
||||||||
status |
Enumeration | ○ | ✗ | ✗ | Propagation statuses can be PENDING which indicates the item is in queue or ACTIVE which indicates the group is propagated. |
|||
StorageGroup.zones[] : The geographic replication zones configured for use with this group. These are also referred to as replicas. |
||||||||
allowDownload |
Enumeration | ○ | ✗ | ✗ | How this zone has been configured to support direct downloads (rather than just for replication use). YES download from the zone is supported, NO not supported, and FAILOVER if other zones aren’t available. |
|||
allowUpload |
Enumeration | ○ | ✗ | ✗ | How this zone has been configured to support direct uploads (rather than just for replication use). YES indicates uploads are supported. NO indicates uploads aren’t supported. FAILOVER indicates uploads are supported to this zone only if no other zones are available. |
|||
lastModifiedBy |
String | ○ | ✗ | ✗ | The user who last modified zone settings for this group. | |||
lastModifiedDate |
String | ○ | ✗ | ✗ | The date these zone settings were last modified. | |||
noCapacityAction |
Enumeration | ○ | ✗ | ✗ | The action taken if the zone has no capacity for additional upload content. SPILL_OUTSIDE indicates content is temporarily uploaded outside the zone, to another zone configured for the group. DENY_UPLOADS indicates the zone doesn’t support uploads for a noCapacityAction . |
|||
overrideReason |
String | ○ | ✗ | ✗ | The reason that a zone should be overridden for another zone. | |||
overrideZoneName |
String | ○ | ✗ | ✗ | The zone that’s used for override to accommodate the noCapacityAction operation, if applicable. |
|||
zoneName |
String | ○ | ○ | ○ | The name of the geographic replication zone. |
storageGroupPurpose values
These are the provisioned purposes defined for the group.
Value | Description |
---|---|
NETSTORAGE |
A universal NetStorage storage group. |
EDGESTREAM |
Provisioned for universal streaming over edge servers. |
EDGESTREAM_IPHONE |
Provisioned for iPhone (HLS) 2.1 streaming over edge servers. |
ADAPTIVEEDGE |
Provisioned for Adaptive Media Delivery over edge servers. |
AD_INSERTION |
Provisioned for Ad Insertion use. |
CONTENT_PREPARATION |
For use with Media Services on Demand: Content Preparation. |
MSL_ORIGIN |
Provisioned as an Origin for Media Services Live. |
FEO |
Provisioned for use with Front End Optimization. |
pathCheckAndConversion values
Specifies the action taken when analyzing the request path.
Value | Description |
---|---|
DISALLOW_ALL_IMPROPER_PATHS |
Block paths using unsupported naming conventions for explicit or implicit directories, and display an error message. |
DISALLOW_IMPROPER_PATHS_ON_UPLOAD_ONLY |
Same as previous, but only for upload requests. Downloads have the request path translated to canonical. |
TRANSLATE_TO_CANONICAL |
Interpret forward-slash (/) characters as a path delimiter, treating repeat instances as a single instance in a path. For example, if an upload request is sent to target the directory, //files/new///mp4/movie1.mp4 , the file is uploaded to /files/new/mp4/movie1.mp4 . Non-existent directories within the path are auto-generated to exist as explicit ones. |
DO_NOT_CHECK_PATHS |
Skip any checks on path syntax. |
UploadAccount
Accesses a specific storage group. You can list, create and get details of an account.
Download schema:
GetUploadAccount.json
, PostUploadAccount.json
, PutUploadAccount.json
Sample GET:
{
"uploadAccountId": "value",
"storageGroupId": 1234568,
"status": "ACTIVE",
"isEditable": true,
"ftpEnabled": true,
"sshEnabled": true,
"rsyncEnabled": true,
"asperaEnabled": true,
"hasFileManagerAccess": true,
"hasHttpApiAccess": true,
"hasPendingPropagation": true,
"email": "your@email.com",
"ruleSetId": 555551,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z",
"keys": {
"ftp": [
{
"identity": "value",
"isActive": true,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"ssh": [
{
"identity": "value",
"key": "ssh-rsa HASH jdoe@hostname",
"isActive": true,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"rsync": [
{
"identity": "value",
"key": "value",
"isActive": true,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"aspera": [
{
"identity": "value",
"key": "ssh-rsa HASH jdoe@hostname",
"isActive": true,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
],
"g2o": [
{
"identity": "value",
"user": "myuploadaccount2",
"key": "value",
"isActive": true,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
]
},
"accessConfig": {
"hasReadOnlyAccess": false,
"chrootDirectory": "/456789/j",
"loginDirectory": "/456789/j",
"cpcodes": [
{
"cpcodeId": 456789,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z",
"subDirectoryRestrictions": [
"/456789/j/k/s"
]
}
]
},
"bruteForceAttackConfig": {
"failedLoginThreshold": 10,
"lockDownDurationSeconds": 30
},
"technicalContactInfo": {
"newTechnicalContact": {
"firstName": "jane",
"lastName": "doe",
"email": "jadoe@email.com",
"phone": {
"countryCode": "+7",
"areaCode": "7",
"number": "767676767676"
}
}
},
"changeHistory": [
{
"changeType": "UPLOAD_ACCOUNT",
"action": "ADDED",
"propagated": false,
"lastModifiedBy": "jondoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
},
{
"changeType": "RULESET",
"action": "ADDED",
"propagated": false,
"lastModifiedBy": "janedoe",
"lastModifiedDate": "2017-09-04T09:10:58Z"
}
]
}
UploadAccount members
Member | Type | GET | POST | PUT | Description | |||
---|---|---|---|---|---|---|---|---|
UploadAccount : Accesses a specific storage group. You can list, create and get details of an account. |
||||||||
accessConfig |
Upload |
○ | ○ | ○ | Specifies the settings for the upload directory that has been selected for this account. | |||
asperaEnabled |
Boolean | ○ | ✗ | ✗ | Whether Aspera Upload Acceleration was enabled as an access method during creation of the account. Aspera Upload Acceleration makes use of a third party client application from AsperaSoft that offers expedited uploads to a storage group. | |||
brute |
Upload |
○ | ○ | ○ | Configures how to prevent brute force attacks over FTP. This protects the target storage group from excessive incorrect FTP login attempts. | |||
changeHistory |
Upload |
○ | ✗ | ✗ | Lists each change made to the account. | |||
email |
String | ○ | ✓ | ○ | The primary contact email address set up for the account. | |||
enableAspera |
Boolean | ✗ | ○ | ○ | Configure Aspera access for this account. | |||
enable |
Boolean | ✗ | ○ | ○ | Configure File Manager access for this account. | |||
enable |
Boolean | ✗ | ○ | ✗ | Configure HTTP API access for this account. | |||
ftpEnabled |
Boolean | ○ | ✗ | ✗ | Whether FTP was enabled as an access method when the account was created. This allows the account to access the storage group using FTP and a unique password you’ve set up for use with FTP. | |||
global |
Boolean | ○ | ✗ | ✗ | Indicates the upload account is globally mapped. | |||
has |
Boolean | ○ | ✗ | ✗ | Whether access to FileManager was enabled during creation of the account. FileManager is a NetStorage interface that allows you to perform basic file management operations from Control Center. If enabled, this account can be used to access the storage group via FileManager. | |||
hasHttpApiAccess |
Boolean | ○ | ✗ | ✗ | Whether access to the NetStorage Usage API was enabled during creation of the account. This API is used to interact with your content, including operations such as upload, download, move and delete. If enabled, this account can be used to access the storage group via this API. | |||
has |
Boolean | ○ | ✗ | ✗ | Whether the account is currently being propagated. Any changes made to an account will propagate to the NetStorage network. This can take upwards of 60 minutes. | |||
isEditable |
Boolean | ○ | ○ | ○ | Whether this account is enabled for editing. Editing accounts is currently only supported in Control Center. | |||
isVisible |
Boolean | ○ | ○ | ○ | Configure if this account is visible. | |||
keys |
Upload |
○ | ○ | ✗ | The various keys and passwords configured for the access methods set in this account. | |||
lastModifiedBy |
String | ○ | ✗ | ✗ | The user who last modified the account. | |||
lastModifiedDate |
String | ○ | ✗ | ✗ | The ISO 8601 timestamp labeling when the account was last modified. | |||
multi |
Upload |
○ | ✗ | ✗ | Two-factor authentication settings for the account. | |||
quickDelete |
Boolean | ○ | ✗ | ✗ | Whether quick-delete functionality is enabled in the storage group that this account has been configured to access. | |||
rsyncEnabled |
Boolean | ○ | ✗ | ✗ | Whether non-secure Rsync was enabled as an access method during creation of the account. This allows the account to access the storage group using the Rsync protocol and a unique password you’ve set up for use with Rsync. | |||
ruleSetId |
Integer | ○ | ○ | ○ | The unique ID assigned to the Access Control List (ACL) Rule Set for the account, if applicable. These rule sets are comprised of a list of IP Addresses or Geographic Regions that are allowed or blocked from access. The appropriate ID integer is set as the type for the ruleSetId object for the account. |
|||
sshEnabled |
Boolean | ○ | ✗ | ✗ | Whether Secure Shell (SSH) is enabled as an access method for the account, through application of an SSH key during creation of the account. This allows access to the storage group via this account using SFTP, SecureCopy, Secure Rsync, Aspera Upload Acceleration and the NetStorage CMShell. | |||
status |
Enumeration | ○ | ✗ | ✗ | The activation status and availability of the account. INACTIVE indicates the account has been deactivated. NEW indicates the account is being propagated. ACTIVATIONSENT indicates the initial activation email has been sent to the contact on the account, and NetStorage is awaiting a confirmation it was received. ACTIVE indicates the account is fully propagated and available for use. |
|||
storageGroupId |
Integer | ○ | ✓ | ✗ | The unique identifier for the storage group that this account has been configured to access. | |||
storageGroupName |
String | ○ | ✗ | ✗ | The upload account has been configured to access this specific storage group. | |||
storageGroupType |
Enumeration | ○ | ✗ | ✗ | The format or migration status of the storage group that this account has been configured to access. FILESTORE indicates an NS3 format group. OBJECTSTORE indicates an NS4 format group. MIGRATING indicates the group is being migrated from NS3 to NS4. |
|||
technical |
Upload |
○ | ○ | ○ | Technical Contact information set up for the account. | |||
uploadAccountId |
String | ○ | ✓ | ✗ | The name you’ve set for the account. This is referred to as the ID in Control Center. | |||
upload |
Enumeration | ✗ | ○ | ✗ | Set the upload account status. Valid options are ACTIVE and INACTIVE . |
|||
upload |
Enumeration | ✗ | ○ | ✗ | Configure the account type. Valid options are NORMAL and AGEDELETION . |
|||
UploadAccount.accessConfig : Specifies the settings for the upload directory that has been selected for this account. |
||||||||
chrootDirectory |
String | ○ | ○ | ○ | The directory set up to serve as the Directory Limit, if applicable. This is a directory other than the storage group’s actual CP code root, that has been set up as the root for the account. Access for the account is limited to this directory and any existing subdirectories. | |||
cpcodes |
Upload |
○ | ○ | ○ | The upload directory assigned to this account. The CP code for the upload directory is set as the cpcodeId via the cpcodes array for the account. |
|||
has |
Boolean | ○ | ✗ | ✗ | Whether a Directory Limit has been established for the account. | |||
has |
Boolean | ○ | ○ | ○ | The Read-Write vs. Read-only setting for the account. A value of true indicates the account can only view content in its associated storage group. |
|||
loginDirectory |
String | ○ | ○ | ○ | Specifies the default directory for the account, if configured. The directory named here is the default point of access when connecting to the storage group. If not configured, loginDirectory is blank. |
|||
UploadAccount.accessConfig.cpcodes[] : The upload directory assigned to this account. The CP code for the upload directory is set as the cpcodeId via the cpcodes array for the account. |
||||||||
cpcodeId |
Integer | ○ | ○ | ○ | The CP code serving as an upload directory. | |||
lastModifiedBy |
String | ○ | ✗ | ✗ | The user who last modified this upload directory. | |||
lastModifiedDate |
String | ○ | ✗ | ✗ | The ISO 8601 timestamp labeling when this upload directory was last modified. | |||
sub |
Array | ○ | ○ | ○ | A Subdirectory Restriction limits management operations to the specified directory. The account can only upload, download, move, or delete content within that directory, or its children. Multiple Subdirectory Restrictions can be applied to a single account. | |||
UploadAccount.bruteForceAttackConfig : Configures how to prevent brute force attacks over FTP. This protects the target storage group from excessive incorrect FTP login attempts. |
||||||||
failed |
Number | ○ | ○ | ○ | The number of failed login attempts to trigger the lockdown for an offending client IP address. | |||
lock |
Number | ○ | ○ | ○ | The number of seconds an offending IP address is blocked from FTP access once the failedLoginThreshold total is reached. |
|||
UploadAccount.changeHistory[] : Lists each change made to the account. |
||||||||
action |
Enumeration | ○ | ✗ | ✗ | The action performed with the change. ADDED indicates the account was actually added. DELETED indicates the account was deleted. ENABLED or DISABLED indicates the change was made to affect the availability of the account. ROTATED indicates a password or key assigned to an access method was rotated to a new instance. UPDATED indicates an option or setting was changed in the account. |
|||
changeType |
Enumeration | ○ | ✗ | ✗ | The option or functionality that was modified. CPCODE indicates the change applied to the application of a CP code for use in an upload directory. FTP indicates the change applied to FTP authentication access. SSH_KEY indicates the change applied to SSH authentication access. RSYNC indicates the change applied to Rsync (password) authentication. ASPERA indicates the change applied to Aspera Upload Accelerations settings. SUBDIR_RESTRICTION indicates the change applied to a Subdirectory Restriction. CHROOT indicates the change applied to a Directory Limit. LOGINDIR indicates the change applied to a Default Directory. CMS indicates the change applied to settings for the Content Management (CM) Shell. FM indicates the change applied to FileManager access. HTTP_UPLOAD_OPTIONS indicates the change applied to HTTP Upload Service. FTP_DOWNLOAD_OPTIONS indicates the change applied to FTP Download Services. UPLOAD_ACCOUNT indicates the change applied to general account settings. ACCESS indicates the change applied to some form of access for the account. G2O indicates the change applied to the G2O Key used for access to the NetStorage Usage API. RULESET indicates the change applied to and Access Control Group (ACL) Rule Set. BFA indicates the change applied to BFA. IP indicates the change applied to IP. SERVICE_VARIABLE indicates the change applied to a service variable. MFA_CONFIG indicates the change applied to the actual configuration settings Two-factor authentication. MFA_SECRET indicates the change applied to the ftpSecrets assigned to Two-factor authentication for the account. |
|||
lastModifiedBy |
String | ○ | ✗ | ✗ | The user who made the change. | |||
lastModifiedDate |
String | ○ | ✗ | ✗ | The ISO 8601 timestamp labeling when the change occurred. | |||
propagated |
Boolean | ○ | ✗ | ✗ | Whether the change has completed propagation to the NetStorage network. Propagation can take upwards of 60 minutes. | |||
UploadAccount.keys : The various keys and passwords configured for the access methods set in this account. |
||||||||
aspera |
Upload |
○ | ✗ | ✗ | Settings pertaining to Aspera Upload Acceleration. | |||
ftp |
Upload |
○ | ○ | ✗ | Settings applied for the FTP access method. | |||
g2o |
Upload |
○ | ○ | ✗ | Information pertaining to the G2O Key applied to the account for use with the NetStorage Usage API. | |||
rsync |
Upload |
○ | ○ | ✗ | Settings applied for the non-secure Rsync access method. | |||
ssh |
Upload |
○ | ○ | ✗ | Settings applied for the SSH access method. | |||
UploadAccount.keys.aspera[] : Settings pertaining to Aspera Upload Acceleration. |
||||||||
comments |
String | ○ | ✗ | ✗ | Any optional notes made for the SSH key. | |||
id |
String | ○ | ✗ | ✗ | A unique identifier for Aspera Upload Acceleration. | |||
isActive |
Boolean | ○ | ✗ | ✗ | Whether Aspera Upload Acceleration has been enabled for this account. | |||
key |
String | ○ | ✗ | ✗ | The SSH key applied to the account that has been assigned to Aspera. SSH–2 RSA and SSH–2 DSA formats are supported. | |||
lastModifiedBy |
String | ○ | ✗ | ✗ | The user who last modified the SSH key. | |||
lastModifiedDate |
String | ○ | ✗ | ✗ | The ISO 8601 timestamp labeling when the SSH key was last modified. | |||
UploadAccount.keys.ftp[] : Settings applied for the FTP access method. |
||||||||
comments |
String | ○ | ○ | ✗ | Any optional notes made for the FTP password. | |||
id |
String | ○ | ✗ | ✗ | A unique identifier generated for FTP authentication. | |||
isActive |
Boolean | ○ | ✗ | ✗ | Whether the FTP password is active for the account. When added to an account, an FTP password is active by default. | |||
key |
String | ✗ | ○ | ✗ | Configure the password for FTP access. Various requirements apply to a non-secure passwords as outlined in the NetStorage Configuration Guide on learn.akamai.com. | |||
lastModifiedBy |
String | ○ | ✗ | ✗ | The user who last modified the FTP password. | |||
lastModifiedDate |
String | ○ | ✗ | ✗ | The ISO 8601 timestamp labeling when the FTP password was last modified. | |||
UploadAccount.keys.g2o[] : Information pertaining to the G2O Key applied to the account for use with the NetStorage Usage API. |
||||||||
id |
String | ○ | ✗ | ✗ | A unique identifier for the G2O Key. | |||
isActive |
Boolean | ○ | ✗ | ✗ | Whether the NetStorage Usage API has been enabled for use with this account. | |||
key |
String | ○ | ○ | ✗ | The G2O Key. Referred to as the capitalized Key when used in the NetStorage Usage API. |
|||
lastModifiedBy |
String | ○ | ✗ | ✗ | The user who last modified the G2O Key settings. | |||
lastModifiedDate |
String | ○ | ✗ | ✗ | The ISO 8601 timestamp labeling when the G2O Key settings were last modified. | |||
user |
String | ○ | ✗ | ✗ | The name of the upload account. This is referred to as the “Id” in the Control Center interface. It serves as the Key-name when used in the NetStorage Usage API. |
|||
UploadAccount.keys.rsync[] : Settings applied for the non-secure Rsync access method. |
||||||||
comments |
String | ○ | ○ | ✗ | Any optional notes made for Rsync password. | |||
id |
String | ○ | ✗ | ✗ | A unique identifier generated for Rsync password authentication. | |||
isActive |
Boolean | ○ | ✗ | ✗ | Whether the non-secure Rsync password is active for the account. When added to an account, this password is active by default. | |||
key |
String | ✗ | ○ | ✗ | Configure the password for Rsync access. Various requirements apply as outlined in the NetStorage Configuration Guide on learn.akamai.com. | |||
lastModifiedBy |
String | ○ | ✗ | ✗ | The user who last modified the Rsync password. | |||
lastModifiedDate |
String | ○ | ✗ | ✗ | The ISO 8601 timestamp labeling when the Rsync password was last modified. | |||
UploadAccount.keys.ssh[] : Settings applied for the SSH access method. |
||||||||
comments |
String | ○ | ○ | ✗ | Any optional notes made for the SSH key. | |||
emailId |
String | ○ | ✗ | ✗ | The NetStorage technical contact email address set up for this upload account. | |||
id |
String | ○ | ✗ | ✗ | A unique identifier generated for SSH authentication. | |||
isActive |
Boolean | ○ | ✗ | ✗ | Whether the SSH key is active for the account. When added to an account, an SSH key is active by default. | |||
key |
String | ○ | ○ | ✗ | The SSH key applied to the account, if applicable. SSH–2 RSA and SSH–2 DSA formats are supported. | |||
lastModifiedBy |
String | ○ | ✗ | ✗ | The user who last modified the SSH key. | |||
lastModifiedDate |
String | ○ | ✗ | ✗ | The ISO 8601 timestamp labeling when the SSH key was last modified. | |||
UploadAccount.multiFactorAuthConfig : Two-factor authentication settings for the account. |
||||||||
ftpMode |
Enumeration | ○ | ✗ | ✗ | The current enabled or disabled status of Two-factor authentication for the account. NONE indicates it’s disabled. STRICT Two-factor authentication is enabled. OPTIONAL indicates the account owner can access via FTP by providing only the FTP username and password, or providing the FTP username and password with the applicable time-based one time password (TOTP) appended to it. |
|||
ftpSecrets |
Upload |
○ | ✗ | ✗ | This is revealed if the shared secret for Two-factor authentication is to be generated manually. | |||
generateSecret |
Boolean | ○ | ✗ | ✗ | Whether Akamai automatically generates the shared secret to be used with Two-factor authentication for this account. | |||
UploadAccount.multiFactorAuthConfig.ftpSecrets[] : This is revealed if the shared secret for Two-factor authentication is to be generated manually. |
||||||||
comment |
String | ○ | ✗ | ✗ | Manually defined comment text included for the key. This content is used in the generation of the shared secret, but is optional. If left out, placeholder content is automatically generated. | |||
key |
String | ○ | ✗ | ✗ | The manual entry set to serve as the shared secret. The key is exactly 16 characters in length and uses BASE–32 alphanumeric characters. This includes uppercase letters (A-Z), and numbers within the 2 - 7 range. | |||
secret |
Enumeration | ○ | ✗ | ✗ | How the shared secret was rotated. CLIENT indicates it was defined manually. For example, the key member was used and a shared secret was manually input. SERVER indicates it was automatically generated. For example, the "generateSecret": "true" pair was used. |
|||
secret |
String | ○ | ✗ | ✗ | The user account that was used to generate the shared secret. | |||
UploadAccount.technicalContactInfo : Technical Contact information set up for the account. |
||||||||
existing |
Upload |
○ | ○ | ○ | The NetStorage Technical Contact serves as the default contact for this upload account. Configure these contacts in the Netstorage section of the Identity and Access Management tool in Control Center. | |||
existing |
Upload |
○ | ○ | ○ | A pair of existing Control Center user accounts that have been selected as Technical Contacts for the account. Use Control Center to set up contact information for these accounts. | |||
new |
Upload |
○ | ○ | ○ | All details for the contact have been manually applied. | |||
UploadAccount.technicalContactInfo.existingNetStorageTechnicalContact : The NetStorage Technical Contact serves as the default contact for this upload account. Configure these contacts in the Netstorage section of the Identity and Access Management tool in Control Center. |
||||||||
primarySfPin |
String | ○ | ○ | ○ | The Control Center user account selected as the primary point of contact for the upload account. | |||
secondarySfPin |
String | ○ | ○ | ○ | The Control Center user account selected as the secondary point of contact for the upload account. | |||
UploadAccount.technicalContactInfo.existingTechnicalContact : A pair of existing Control Center user accounts that have been selected as Technical Contacts for the account. Use Control Center to set up contact information for these accounts. |
||||||||
primarySfPin |
String | ○ | ○ | ○ | The Control Center user account selected as the primary point of contact for the account. | |||
secondarySfPin |
String | ○ | ○ | ○ | The Control Center user account selected as the secondary point of contact for the account. | |||
UploadAccount.technicalContactInfo.newTechnicalContact : All details for the contact have been manually applied. |
||||||||
email |
String | ○ | ○ | ○ | The email address for the contact. | |||
firstName |
String | ○ | ○ | ○ | The first name of the contact. | |||
lastName |
String | ○ | ○ | ○ | The last name (surname) of the contact. | |||
phone |
Upload |
○ | ○ | ○ | Phone number details for the contact. | |||
UploadAccount.technicalContactInfo.newTechnicalContact.phone : Phone number details for the contact. |
||||||||
areaCode |
String | ○ | ○ | ○ | The applicable area code for the contact phone number. | |||
countryCode |
String | ○ | ○ | ○ | The applicable country code for the contact phone number. | |||
number |
String | ○ | ○ | ○ | The contact phone number. |
Zones
Encapsulates the geographic replication zones available for use with a storage group.
Download schema:
Zones.json
Sample GET:
{
"zones": [
{
"zoneName": "CA-nearby"
},
{
"zoneName": "JP"
},
{
"zoneName": "asia"
},
{
"zoneName": "australia"
},
{
"zoneName": "europe"
},
{
"zoneName": "global"
}
]
}
Zones members
Member | Type | Required | Description |
---|---|---|---|
Zones : Encapsulates the geographic replication zones available for use with a storage group. |
|||
zones |
Zones. |
○ | The individual geographic replication zones available for use. These are also referred to as replicas. |
Zones.zones[] : The individual geographic replication zones available for use. These are also referred to as replicas. |
|||
zoneName |
String | ○ | An individual zone available for use in replication. |
Hypermedia
Hypermedia links to the specific group, as well as any upload accounts or geographic replication zones assigned to it.
Download schema:
GetStorageGroup.json
Hypermedia members
Member | Type | Required | Description |
---|---|---|---|
Hypermedia : Hypermedia links to the specific group, as well as any upload accounts or geographic replication zones assigned to it. |
|||
href |
String | ○ | A navigable path to the specific rel resource, once you prefix it with your hostname token. |
rel |
Enumeration | ○ | This represents the link relation to the storage group resource. This can be either self for a link referring to the storage group itself, uploadAccounts for a link to an associated upload account, or zones for a geographic replication zone that can be used with the group. |
Errors
This section provides details for the API’s common set of response codes. It lists the API’s range of response status codes for both error and success cases.
Error responses
The NetStorage Configuration API responds with HTTP problem error objects that provide details useful for debugging. The response revealed is contingent on a number of factors, including the type operation you’re performing and the specific error.
This example shows a response with a validation error:
{
"type": "validation-error",
"title": "Validation failure",
"instance": "ea4afa39-29f1-4213-9d83-0a6b73a26edf",
"status": 400,
"detail": "Validation failed. Please review the errors.",
"errors": [
{
"type": "error-types/not.accessible",
"title": "Not accessible",
"detail": "You don't have permission to access the given storage group.",
"field": "storageGroupId",
"value": 123456
}
]
}
The status
member offers the applicable HTTP error code, the various
detail
members contain a basic description of the issue, and the
instance
member offers a unique ID value that may be used in
troubleshooting the issue with technical support.
HTTP status codes
This lists the range of HTTP response codes the API may produce for both success and error cases:
Code | Description |
---|---|
200 | The operation was successful. |
201 | Resource created. |
400 | Badly formatted JSON. Compare with the schema. |
401 | Unauthorized Request. |
403 | Application permission error. |
429 | The maximum request count for a specific time duration for this resource has been reached. |