Platform API
For Red Hat Mobile Application Platform 4.7
Abstract
Chapter 1. API Keys API
Manage the various API keys for a User account and Apps.
X-FH-AUTH-USER should be in every header of every request. See API Key Management for more information.
1.1. List API keys
1.1.1. Description
List User or App API keys.
1.1.2. Endpoint
- uri - /box/srv/1.1/ide/<domain>/api/list
- method - POST
1.1.3. Request Body
1.1.3.1. List keys for currently logged in user
{
"type": "user"
}1.1.3.2. List keys belonging to given app id
{
"type": "app",
"appId": "<app_instance_id>"
}1.1.4. Response Body
1.1.4.1. Success
{
"status": "ok",
"list": [{
"label": "<user_friendly_id>",
"keyType": "<key_type>",
"key": "<public_api_key>",
"keyReference": "<reference_id>", // for example, user/app id
"secret": "<api_secret_key>", // only for 'admin' group
"revoked": "<revoked_timestamp>",
"revokedBy": "<revoked_by_ref_id>", // for example, user id
"revokedEmail": "<revoked_by_user_email>"
},
/* ... */
]
}1.1.4.2. Error
{
"status": "error",
"message": "<error_message>"
}1.2. Create new API keys
1.2.1. Description
Create a new User or App API key. While users can have multiple API keys associated with them, Apps can only have one active API key at any time - when an app API key is created, any pre-existing keys for that app will be automatically revoked.
1.2.2. Endpoint
- uri - /box/srv/1.1/ide/<domain>/api/create
- method - POST
1.2.3. Request Body
1.2.3.1. Create API Keys for the current logged in user
{
"type": "user",
"label": "<user_friendly_id>"
}1.2.3.2. Create new API keys belonging to given app id
Any existing keys for this app will be automatically revoked.
{
"type": "app",
"label": "<user_friendly_id>",
"appId": "<app_instance_id>"
}1.2.4. Success
{
"status": "ok",
"apiKey": {
"label": "<user_friendly_id>",
"keyType": "<key_type>",
"key": "<public_api_key>",
"keyReference": "<reference_id>", // for example, user/app id
"secret": "<api_secret_key>", // only for 'admin' group
"revoked": "<revoked_timestamp>",
"revokedBy": "<revoked_by_ref_id>", // for example, user id
"revokedEmail": "<revoked_by_user_email>"
}
}1.2.5. Error
{
"status": "error",
"message": "<error_message>"
}1.3. Revoke existing API keys
1.3.1. Description
Revoke existing User or App API keys.
1.3.2. Endpoint
- uri - /box/srv/1.1/ide/<domain>/api/revoke
- method - POST
1.3.3. Request Body
{
"key": "<public_api_key>"
}1.3.4. Success
{
"status": "ok",
"apiKey": {
"label": "<user_friendly_id>",
"keyType": "<key_type>",
"key": "<public_api_key>",
"keyReference": "<reference_id>", // for example, user/app id
"secret": "<api_secret_key>", // only for 'admin' group
"revoked": "<revoked_timestamp>",
"revokedBy": "<revoked_by_ref_id>", // for example, user id
"revokedEmail": "<revoked_by_user_email>"
}
}1.3.5. Error
{
"status": "error",
"message": "<error_message>"
}1.4. Delete existing API keys
1.4.1. Description
Permanently delete an existing User or App API key.
1.4.2. Endpoint
- uri - /box/srv/1.1/ide/<domain>/api/delete
- method - POST
1.4.3. Request Body
{
"key": "<public_api_key>"
}1.4.4. Success
{
"status": "ok",
"apiKey": {
"label": "<user_friendly_id>",
"keyType": "<key_type>",
"key": "<public_api_key>",
"keyReference": "<reference_id>", // for example, user/app id
"secret": "<api_secret_key>", // only for 'admin' group
"revoked": "<revoked_timestamp>",
"revokedBy": "<revoked_by_ref_id>", // for example, user id
"revokedEmail": "<revoked_by_user_email>"
}
}1.4.5. Error
{
"status": "error",
"message": "<error_message>"
}1.5. Update an existing API Key
1.5.1. Description
Update an existing App or User API Key.
1.5.2. Endpoint
- uri - /box/srv/1.1/ide/<domain>/api/update
- method - POST
1.5.3. Request Body
{
"key": "<public_api_key>",
"fields": {
"label": "<new_user_friendly_id>"
}
}1.5.4. Success
{
"status": "ok",
"apiKey": {
"label": "<user_friendly_id>",
"keyType": "<key_type>",
"key": "<public_api_key>",
"keyReference": "<reference_id>", // for example, user/app id
"secret": "<api_secret_key>", // only for 'admin' group
"revoked": "<revoked_timestamp>",
"revokedBy": "<revoked_by_ref_id>", // for example, user id
"revokedEmail": "<revoked_by_user_email>"
}
}1.5.5. Error
{
"status": "error",
"message": "<error_message>"
}1.6. Validate an API Key
1.6.1. Description
Check if an API key is valid
1.6.2. Endpoint
- uri - /box/srv/1.1/ide/<domain>/api/validate
- method - POST
1.6.3. Request Body
{
"type" : "<key_type>"
"key" : "<key_value>",
}1.6.4. Success
{
"status" : "ok",
"valid" : true | false
}1.6.5. Error
{
"status" : "error",
"message" : "<error_message>"
}Chapter 2. Mobile App Management API
2.1. Read App Store
2.1.1. Description
Read details of the app store.
2.1.2. Endpoint
- uri - /box/srv/1.1/admin/appstore/read
- method - POST
2.1.3. Request Body
N/A
2.1.4. Response Body
2.1.4.1. Success
{
"status": "ok",
"guid": "<app_store_global_unique_id>",
"name": "<app_store_name>",
"description": "<app_store_description>",
"icon":"<base64_String>"
"storeitems": ["store_item_global_unique_id_1", "store_item_global_unique_id_2", ... "store_item_global_unique_id_N"],
"authpolicies":["active_policy_ids"]
}2.1.4.2. Error
{
"status": "error",
"message": "<error_message>"
}2.2. Update App Store
2.2.1. Description
Update details of the app store
2.2.2. Endpoint
- uri - /box/srv/1.1/admin/appstore/update
- method - POST
2.2.3. Request Body
{
"name": "<app_store_name>", /*optional*/
"description": "<app_store_description>" /*optional*/
"storeitems":["store_item_global_unique_id_1"] /*optional*/
"authpolicies":[policy_ids]
}2.2.4. Response Body
2.2.4.1. Success
{
"status": "ok",
"guid": "<app_store_global_unique_id>",
"name": "<app_store_name>",
"description": "<app_store_description>"
"icon":"<base64_string>"
"storeitems": ["store_item_global_unique_id_1", "store_item_global_unique_id_2", ... "store_item_global_unique_id_N"],
"authpolicies":[active_policy_ids]
}2.2.4.2. Error
{
"status": "error",
"message": "<error_message>"
}2.3. Add StoreItem to App Store
2.3.1. Description
Add an existing Store Item to the store, making it visible in the store.
2.3.2. Endpoint
- uri - /box/srv/1.1/admin/appstore/additem
- method - POST
2.3.3. Request Body
{"guid":"<unique_store_item_id>"}2.3.4. Response Body
2.3.4.1. Success
{
"status":"ok"
}2.3.4.2. Error
{
"status": "error",
"message": "<error_message>"
}2.4. Remove StoreItem to App Store
2.4.1. Description
Remove existing Store Item from the store, making it invisible in the store.
2.4.2. Endpoint
- uri - /box/srv/1.1/admin/appstore/removeitem
- method - POST
2.4.3. Request Body
{"guid":"<unique_store_item_id>"}2.4.4. Response Body
2.4.4.1. Success
{
"status":"ok"
}2.4.4.2. Error
{
"status": "error",
"message": "<error_message>"
}2.5. Upload App Store Icon
2.5.1. Description
Add an icon for your store.
2.5.2. Endpoint
- uri - /box/srv/1.1/admin/appstore/uploadbinary
- method - POST
2.5.3. Request Body
Multipart request with the image.
2.5.4. Response Body
2.5.4.1. Success
{
"status": "ok",
"guid": "<app_store_global_unique_id>",
"name": "<app_store_name>",
"description": "<app_store_description>"
"icon":"<base64_string>"
"storeitems": ["store_item_global_unique_id_1", "store_item_global_unique_id_2", ... "store_item_global_unique_id_N"],
"authpolicies":[active_policy_ids]
}2.5.4.2. Error
{
"status": "error",
"message": "<error_message>"
}2.6. List Store Items In App Store
2.6.1. Description
List the current items in the App Store. The "binaries" fields are defined in the Binaries Options.
2.6.2. Endpoint
- uri - /box/srv/1.1/admin/appstore/liststoreitems
- method - POST
2.6.3. Request Body
{}2.6.4. Response Body
2.6.4.1. Success
{
"list": [
{
"authToken": "<unique id for auth>",
"authpolicies": [unique_policy_ids],
"binaries": [
{
"config": {
"bundle_id": "<ios_bundle_id>"
},
"storeItemBinaryVersion": 2,
"sysModified": "Fri Nov 02 10:06:48 GMT 2012",
"type": "iphone | android | ios | ipad",
"url": "http://<domain>/box/srv/1.1/mas/storeitem/install?guid=dweFfHihI616y67aQB4sNGQt",
"versions": [{
"config": {},
"destinationCode": "iphone | android | ios | ipad",
"storeItemBinaryGuid": "Y8a8lFjFufZyqd1tAdjonufw",
"storeItemBinaryModified": "Fri Nov 02 10:44:45 GMT 2012",
"storeItemBinaryVersion": 1,
"url": "http://<domain>/box/srv/1.1/mas/storeitem/downloadvers?guid=o1Z1S_t-hyGMXymqTzIWS4xd"
}]
}
],
"description": "description",
"guid": "<unique_id>",
"icon": "<base64_string>",
"name": "<string_item_name>"
}
],
"status": "ok"
}2.6.4.2. Error
{
"status": "error",
"message": "<error_message>"
}2.6.5. Options
2.6.5.1. Binaries field
The binaries field is an array of information about the currently uploaded Store Item Binaries. It consists of :
- config - a field for any extra OS related configuraton. For example, the ios bundle id.
- storeItemBinaryVersion - The current store item binary version number.
- sysModified - The last modified date of this store item binary.
- type - The store item binary type.
- url - You can use this url to download the latest version this store item binary.
- versions - An array containing a history of older Store Item Binaries (a maximum of 4 entries is kept).
2.7. Add Auth Policy
2.7.1. Description
Add an Auth policy to be used with the appstore.
2.7.2. Endpoint
- uri - /box/srv/1.1/admin/appstore/addpolicy
- method POST
2.7.3. Request Body
{
"guid":"<policy_id>"
}2.7.4. Response Body
2.7.4.1. Success
{
"status": "ok"
}2.7.4.2. Error
{
"status": "error",
"message": "<error_message>"
}2.8. Remove Store Auth Policy
2.8.1. Description
Remove an Auth policy from being used in with the appstore.
2.8.2. Endpoint
- uri - /box/srv/1.1/admin/appstore/removepolicy
- method POST
2.8.3. Request Body
{
"guid":"<policy_id>"
}2.8.4. Response Body
2.8.4.1. Success
{
"status": "ok"
}2.8.4.2. Error
{
"status": "error",
"message": "<error_message>"
}2.9. List Auth Policies
2.9.1. Description
List the policies attached to the appstore.
2.9.2. Endpoint
- uri - /box/srv/1.1/admin/appstore/listpolicies
- method POST
2.9.3. Request Body
{}2.9.4. Response Body
2.9.4.1. Success
{
"list": [
"ORF5SiIH623yYmBD1ftlFOA4"
],
"status": "ok"
}2.9.4.2. Error
{
"status": "error",
"message": "<error_message>"
}2.10. Create App Store Item
2.10.1. Description
Create an app store item.
2.10.2. Endpoint
- uri - /box/srv/1.1/admin/storeitem/create
- method - POST
The icon is uploaded after the item is created. The item will be created with a no icon.
2.10.3. Request Body
{
"name" : String,
"description": String <optional>,
"authToken":String <optional>
}2.10.4. Response Body
{
"status": "ok",
"guid": "<app_store_global_unique_id>",
"name": "<app_store_name>",
"description": "<app_store_description>",
"authToken": "<unique_token_used_by_client_to_autheticate>",
"icon": "<base_64_encoded_icon_data>",
"binaries": [
{
"config": {
"bundle_id": "<ios_bundle_id>"
},
"storeItemBinaryVersion": 2,
"sysModified": "Fri Nov 02 10:06:48 GMT 2012",
"type": "iphone | android | ios | ipad",
"url": "http://<domain>/box/srv/1.1/mas/storeitem/install?guid=dweFfHihI616y67aQB4sNGQt",
"versions": [{
"config": {},
"destinationCode": "iphone | android | ios | ipad",
"storeItemBinaryGuid": "Y8a8lFjFufZyqd1tAdjonufw",
"storeItemBinaryModified": "Fri Nov 02 10:44:45 GMT 2012",
"storeItemBinaryVersion": 1,
"url": "http://<domain>/box/srv/1.1/mas/storeitem/downloadvers?guid=o1Z1S_t-hyGMXymqTzIWS4xd"
}]
}
],
"authpolicies": [<unique_policy_id>],
"restrictToGroups": true|false,
"groups": ["<store_item_group_id>",...]
}2.10.4.1. Error
{
"status": "error",
"message": "<error_message>"
}2.11. Read App Store Item
2.11.1. Description
Read details of a store item.
2.11.2. Endpoint
- uri - /box/srv/1.1/admin/storeitem/read
- method - POST
2.11.3. Request Body
{
"guid":String
}2.11.3.1. Response Body
{
"status": "ok",
"guid": "<app_store_global_unique_id>",
"name": "<app_store_name>",
"description": "<app_store_description>",
"authToken": "<unique_token_used_by_client_to_autheticate>",
"icon": "<base_64_encoded_icon_data">,
"binaries": [
{
"config": {
"bundle_id": "<ios_bundle_id>"
},
"storeItemBinaryVersion": 2,
"sysModified": "Fri Nov 02 10:06:48 GMT 2012",
"type": "iphone | android | ios | ipad",
"url": "http://<domain>/box/srv/1.1/mas/storeitem/install?guid=dweFfHihI616y67aQB4sNGQt",
"versions": [{
"config": {},
"destinationCode": "iphone | android | ios | ipad",
"storeItemBinaryGuid": "Y8a8lFjFufZyqd1tAdjonufw",
"storeItemBinaryModified": "Fri Nov 02 10:44:45 GMT 2012",
"storeItemBinaryVersion": 1,
"url": "http://<domain>/box/srv/1.1/mas/storeitem/downloadvers?guid=o1Z1S_t-hyGMXymqTzIWS4xd"
}]
}],
"authpolicies": [<unique_policy_id>],
"restrictToGroups": true|false,
"groups": [<store_item_group_id>]
}2.11.3.2. Error
{
"status": "error",
"message": "<error_message>"
}2.12. Update Item
2.12.1. Endpoint
- /box/srv/1.1/admin/storeitem/update
- method POST
2.12.2. Request Body
{
"name": String,
"description": String,
"authToken": String,
"restrictToGroups": true|false // optional - will not change if not set
}2.12.3. Response Body
{
"status": "ok",
"guid": "<app_store_global_unique_id>",
"name": "<app_store_name>",
"description": "<app_store_description>",
"authToken": "<unique_token_used_by_client_to_autheticate>",
"icon": "<base_64_encoded_icon_data>",
"binaries": [
{
"config": {
"bundle_id": "<ios_bundle_id>"
},
"storeItemBinaryVersion": 2,
"sysModified": "Fri Nov 02 10:06:48 GMT 2012",
"type": "iphone | android | ios | ipad",
"url": "http://<domain>/box/srv/1.1/mas/storeitem/install?guid=dweFfHihI616y67aQB4sNGQt",
"versions": [{
"config": {},
"destinationCode": "iphone | android | ios | ipad",
"storeItemBinaryGuid": "Y8a8lFjFufZyqd1tAdjonufw",
"storeItemBinaryModified": "Fri Nov 02 10:44:45 GMT 2012",
"storeItemBinaryVersion": 1,
"url": "http://<domain>/box/srv/1.1/mas/storeitem/downloadvers?guid=o1Z1S_t-hyGMXymqTzIWS4xd"
}]
}],
"authpolicies": [<unique_policy_id>],
"restrictToGroups": true|false,
"groups": ["<store_item_group_id>",...]
}2.12.3.1. Error
{
"status": "error",
"message": "<error_message>"
}2.13. Delete App Store Item
2.13.1. Endpoint
- /box/srv/1.1/admin/storeitem/delete
- method POST
2.13.2. Request Body
{
"guid" : "unique store item id"
}2.13.3. Respose Body
{
"status":"ok"
}2.13.3.1. Error
{
"status": "error",
"message": "<error_message>"
}2.14. List App Store Items
2.14.1. Description
List items in an app store.
2.14.2. Endpoint
- uri - /box/srv/1.1/admin/storeitem/list
- method - POST
2.14.3. Request Body
{}2.14.4. Response Body
{
"status": "ok",
"list":[
{
"guid": "<app_store_global_unique_id>",
"name": "<app_store_name>",
"description": "<app_store_description>",
"authToken": "<unique_token_used_by_client_to_autheticate>",
"icon": "<base_64_encoded_icon_data>",
"binaries": [
{
"config": {
"bundle_id": "<ios_bundle_id>"
},
"storeItemBinaryVersion": 2,
"sysModified": "Fri Nov 02 10:06:48 GMT 2012",
"type": "iphone | android | ios | ipad",
"url": "http://<domain>/box/srv/1.1/mas/storeitem/install?guid=dweFfHihI616y67aQB4sNGQt",
"versions": [{
"config": {},
"destinationCode": "iphone | android | ios | ipad",
"storeItemBinaryGuid": "Y8a8lFjFufZyqd1tAdjonufw",
"storeItemBinaryModified": "Fri Nov 02 10:44:45 GMT 2012",
"storeItemBinaryVersion": 1,
"url": "http://<domain>/box/srv/1.1/mas/storeitem/downloadvers?guid=o1Z1S_t-hyGMXymqTzIWS4xd"
}]
}],
"authpolicies": [<unique_policy_id>],
"restrictToGroups": true|false,
"groups": ["<store_item_group_id>",...]
}
]
}2.14.4.1. Error
{
"status": "error",
"message": "<error_message>"
}2.15. Upload Binary
2.15.1. Endpoint
- /box/srv/1.1/admin/storeitem/uploadbinary
- method POST
- file sent as multipart request
2.15.2. Request Body
{
"guid":"String",
"type":"<icon|ios|ipad|iphone|android>"
}2.15.3. Response
{
"status": "ok"
"list":[
{
"guid": "<app_store_global_unique_id>",
"name": "<app_store_name>",
"description": "<app_store_description>",
"authToken": "<unique_token_used_by_client_to_autheticate>",
"icon": "<base_64_encoded_icon_data>",
"binaries": [
{
"config": {
"bundle_id": "<ios_bundle_id>"
},
"storeItemBinaryVersion": 2,
"sysModified": "Fri Nov 02 10:06:48 GMT 2012",
"type": "iphone | android | ios | ipad",
"url": "http://<domain>/box/srv/1.1/mas/storeitem/install?guid=dweFfHihI616y67aQB4sNGQt",
"versions": [{
"config": {},
"destinationCode": "iphone | android | ios | ipad",
"storeItemBinaryGuid": "Y8a8lFjFufZyqd1tAdjonufw",
"storeItemBinaryModified": "Fri Nov 02 10:44:45 GMT 2012",
"storeItemBinaryVersion": 1,
"url": "http://<domain>/box/srv/1.1/mas/storeitem/downloadvers?guid=o1Z1S_t-hyGMXymqTzIWS4xd"
}]
}],
"authpolicies": [<unique_policy_id>],
"restrictToGroups": true|false,
"groups": ["<store_item_group_id>",...]
}
]
}2.15.3.1. Error
{
"status": "error",
"message": "<error_message>"
}2.16. Add Auth Policy
2.16.1. Endpoint
- /box/srv/1.1/admin/storeitem/addpolicy
- method POST
2.16.2. Request Body
{
"guid":"<store_item_id>",
"authguid":"<policy_id>"
}2.16.3. Response Body
{
"status": "ok",
"list":[
{
"guid": "<app_store_global_unique_id>",
"name": "<app_store_name>",
"description": "<app_store_description>",
"authToken": "<unique_token_used_by_client_to_autheticate>",
"icon": "<base_64_encoded_icon_data>",
"binaries": [
{
"config": {
"bundle_id": "<ios_bundle_id>"
},
"storeItemBinaryVersion": 2,
"sysModified": "Fri Nov 02 10:06:48 GMT 2012",
"type": "iphone | android | ios | ipad",
"url": "http://<domain>/box/srv/1.1/mas/storeitem/install?guid=dweFfHihI616y67aQB4sNGQt",
"versions": [{
"config": {},
"destinationCode": "iphone | android | ios | ipad",
"storeItemBinaryGuid": "Y8a8lFjFufZyqd1tAdjonufw",
"storeItemBinaryModified": "Fri Nov 02 10:44:45 GMT 2012",
"storeItemBinaryVersion": 1,
"url": "http://<domain>/box/srv/1.1/mas/storeitem/downloadvers?guid=o1Z1S_t-hyGMXymqTzIWS4xd"
}]
}],
"authpolicies": [<unique_policy_id>],
"restrictToGroups": true|false,
"groups": ["<store_item_group_id>",...]
}
]
}2.16.3.1. Error
{
"status": "error",
"message": "<error_message>"
}2.17. Remove Store Item Auth Policy
2.17.1. Endpoint
- /box/srv/1.1/admin/storeitem/removepolicy
- method POST
2.17.2. Request Body
{
"guid":"<store_item_id>",
"authguid":"<policy_id>"
}2.17.3. Response Body
{
"status": "ok"
"list":[
{
"guid": "<app_store_global_unique_id>",
"name": "<app_store_name>",
"description": "<app_store_description>",
"authToken": "<unique_token_used_by_client_to_autheticate>",
"icon": "<base_64_encoded_icon_data>",
"binaries": [
{
"config": {
"bundle_id": "<ios_bundle_id>"
},
"storeItemBinaryVersion": 2,
"sysModified": "Fri Nov 02 10:06:48 GMT 2012",
"type": "iphone | android | ios | ipad",
"url": "http://<domain>/box/srv/1.1/mas/storeitem/install?guid=dweFfHihI616y67aQB4sNGQt",
"versions": [{
"config": {},
"destinationCode": "iphone | android | ios | ipad",
"storeItemBinaryGuid": "Y8a8lFjFufZyqd1tAdjonufw",
"storeItemBinaryModified": "Fri Nov 02 10:44:45 GMT 2012",
"storeItemBinaryVersion": 1,
"url": "http://<domain>/box/srv/1.1/mas/storeitem/downloadvers?guid=o1Z1S_t-hyGMXymqTzIWS4xd"
}]
}],
"authpolicies": [<unique_policy_id>],
"restrictToGroups": true|false,
"groups": ["<store_item_group_id>",...]
}
]
}2.17.3.1. Error
{
"status": "error",
"message": "<error_message>"
}2.18. Get Binary Config
2.18.1. Endpoint
- /box/srv/1.1/admin/storeitem/getbinaryconfig
- method POST | GET
2.18.2. Request Body
{
"guid":"<store_item_guid>",
"type":"<ios|ipad|iphone|android>"
}2.18.3. Response
{
"status":"ok"
"guid":"<store_item_guid>",
"type": "<ios|iphone|ipad|android>",
"config": {
"<config_key>": "<config_value>"
}
}2.18.3.1. Error
{
"status": "error",
"message": "<error_message>"
}2.19. Set Binary Config
2.19.1. Endpoint
- /box/srv/1.1/admin/storeitem/setbinaryconfig
- method POST
2.19.2. Request Body
{
"guid":"<store_item_guid>",
"type":"<ios|ipad|iphone|android>",
"config": {
"<config_key>": "<config_value>"
}
}2.19.3. Response
{
"status":"ok"
"guid":"<store_item_guid>",
"type": "<ios|iphone|ipad|android>",
"config": {
"<config_key>": "<config_value>"
}
}2.19.4. Error
2.19.4.1. Possible error messages:
- invalid_type
- invalid_guid
2.20. Add StoreItem Groups
2.20.1. Endpoint
- /box/srv/1.1/admin/storeitem/addgroups
- method POST
2.20.2. Request Body
{
"guid":"<store_item_id>",
"groups": ["<store_item_group_id>",...]
}2.20.3. Response Body
{
"status": "ok",
"list":[
{
"guid": "<app_store_global_unique_id>",
"name": "<app_store_name>",
"description": "<app_store_description>",
"authToken": "<unique_token_used_by_client_to_autheticate>",
"icon": "<base_64_encoded_icon_data>",
"binaries": [
{
"config": {
"bundle_id": "<ios_bundle_id>"
},
"storeItemBinaryVersion": 2,
"sysModified": "Fri Nov 02 10:06:48 GMT 2012",
"type": "iphone | android | ios | ipad",
"url": "http://<domain>/box/srv/1.1/mas/storeitem/install?guid=dweFfHihI616y67aQB4sNGQt",
"versions": [{
"config": {},
"destinationCode": "iphone | android | ios | ipad",
"storeItemBinaryGuid": "Y8a8lFjFufZyqd1tAdjonufw",
"storeItemBinaryModified": "Fri Nov 02 10:44:45 GMT 2012",
"storeItemBinaryVersion": 1,
"url": "http://<domain>/box/srv/1.1/mas/storeitem/downloadvers?guid=o1Z1S_t-hyGMXymqTzIWS4xd"
}]
}],
"authpolicies": [<unique_policy_id>],
"restrictToGroups": true|false,
"groups": ["<store_item_group_id>",...]
}
]
}2.20.3.1. Error
{
"status": "error",
"message": "<error_message>"
}2.21. Remove StoreItem Groups
2.21.1. Endpoint
- /box/srv/1.1/admin/storeitem/removegroups
- method POST
2.21.2. Request Body
{
"guid":"<store_item_id>",
"groups": ["<store_item_group_id>",...]
}2.21.3. Response Body
{
"guid": "<app_store_global_unique_id>",
"name": "<app_store_name>",
"description": "<app_store_description>",
"authToken": "<unique_token_used_by_client_to_autheticate>",
"icon": "<base_64_encoded_icon_data">,
"binaries": [
{
"type": "<ios|iphone|ipad|android>",
"url": "<url_to_app_binary">
}
],
"authpolicies": [<unique_policy_id>],
"restrictToGroups": true|false,
"groups": ["<store_item_group_id>",...]
}2.21.3.1. Error
{
"status": "error",
"message": "<error_message>"
}2.22. List Audit Log entries
2.22.1. Description
Get a list of the Audit Log entries.
2.22.2. Endpoint
- uri - /box/srv/1.1/admin/auditlog/listlogs
- method - POST | GET
2.22.3. Auth
Restricted - requires sessionId as header.
X-FH-AUTH-SESSION: "<sessionId_returned_from_fh.auth_call>"
2.22.4. Request Body
{
"userId":"<unique user guid>",
"storeItemGuid":"<store_item_global_unique_id>",
"storeItemBinaryType":"ios | iphone | ipad | android",
"limit":"10 | 100 | 1000"
}2.22.5. Response Body
2.22.5.1. Success
{
"status": "ok",
"list": [{
"deviceId":"<device_global_unique_id>",
"domain":"<domain name>",
"guid":"<audit_log_entry_global_unique_id>_RA2E11wCdS>",
"ipAddress":"<downloading host ip address>",
"storeItemBinaryGuid":"<store item binary guid>",
"storeItemBinaryType":"<store item binary type>",
"storeItemBinaryVersion":"<store item binary version>",
"storeItemGuid":"<store_item_global_unique_id>",
"storeItemTitle":"<store item title>",
"sysCreated":"<audit log creation time>",
"sysVersion":"<version>",
"userGuid":"<user guid>",
"userId":"<user_friendly_id>"
},
/* ... */
]
}2.22.5.2. Error
{
"status": "error",
"message": "<error_message>"
}2.22.5.2.1. Possible error messages:
- invalid_type
2.23. Read App Store
2.23.1. Description
Read details of the app store - name, description, icon & supported Auth policies.
2.23.2. Endpoint
- uri - /box/srv/1.1/mas/appstore/read
- method - POST | GET
2.23.3. Auth
Open - a public endpoint which can be called with no authentication.
2.23.4. Request Body
N/A
2.23.5. Response Body
2.23.5.1. Success
{
"status": "ok",
"guid": "<app_store_global_unique_id>",
"name": "<app_store_name>",
"description": "<app_store_description>",
"icon" : "<base64_encoded_representation_of_app_store_icon>"
"authpolicies": [
{
"name": "<auth_policy_name_1>",
"type": "<auth_policy_type_1>"
},
{
"name": "<auth_policy_name_2>",
"type": "<auth_policy_type_2>"
},
...
{
"name": "<auth_policy_name_N>",
"type": "<auth_policy_type_N>"
}
]
}2.23.5.2. Error
{
"status": "error",
"message": "<error_message>"
}2.24. Get App Store Items
2.24.1. Description
Read list of Store Items availabe from the app store. Includes a list of available binaries and their type.
2.24.2. Endpoint
- uri - /box/srv/1.1/mam/appstore/getstoreitems
- method - POST
2.24.3. Auth
Restricted - requires sessionId as header.
X-FH-AUTH-SESSION: "<sessionId_returned_from_fh.auth_call>"
2.24.4. Request Body
{
"appstore": "<app_store_global_unique_id>"
}2.24.5. Response Body
2.24.5.1. Success
{
"status": "ok",
"storeitems": [{
"guid": "<store_item_global_unique_id_1>",
"name": "<store_item_name_1>",
"description": "<store_item_description_2>",
"icon": "<base64_encoded_representation_of_store_item_icon_2>",
"targets" : [
{
"type": "ios | iphone | ipad | android",
"url": "url_of_installable_artifact_1"
},
{
"type": "ios | iphone | ipad | android",
"url": "url_of_installable_artifact_2"
},
...
{
"type": "ios | iphone | ipad | android",
"url": "url_of_installable_artifact_N"
}
]
},
{
"guid": "<store_item_global_unique_id_2>",
"name": "<store_item_name_2>",
"description": "<store_item_description_2>",
"icon": "<base64_encoded_representation_of_store_item_icon_2>",
"targets" : [
{
"type": "ios | iphone | ipad | android",
"url": "url_of_installable_artifact_1"
},
{
"type": "ios | iphone | ipad | android",
"url": "url_of_installable_artifact_2"
},
...
{
"type": "ios | iphone | ipad | android",
"url": "url_of_installable_artifact_N"
}
]
}
...
{
"guid": "<store_item_global_unique_id_N>",
"name": "<store_item_name_N>",
"description": "<store_item_description_N>",
"icon": "<base64_encoded_representation_of_store_item_icon_N>",
"targets" : [
{
"type": "ios | iphone | ipad | android",
"url": "url_of_installable_artifact_1"
},
{
"type": "ios | iphone | ipad | android",
"url": "url_of_installable_artifact_2"
},
...
{
"type": "ios | iphone | ipad | android",
"url": "url_of_installable_artifact_N"
}
]
}
}2.24.5.2. Error
{
"status": "error",
"message": "<error_message>"
}2.25. Install Store Item
2.25.1. Description
Install an App Store Item. Depending on the type requested, this API may return a binary stream or a URL redirect.
2.25.2. Endpoint
- uri - /box/srv/1.1/mas/storeitem/install
- method - POST | GET
2.25.3. Auth
Restricted - requires sessionId as header.
X-FH-AUTH-SESSION: "<sessionId_returned_from_fh.auth_call>"
2.25.4. Request Body
{
"guid": "<store_item_global_unique_id>",
"type": "ios | iphone | ipad | android"
}2.25.5. Response
2.25.5.1. Success
The response will vary depending on the "type" parameter in the request.
2.25.5.1.1. ios | iphone | ipad
iOS Over The Air (OTA) installer page.
2.25.5.1.2. android
Installable binary artifact for android device - .apk file.
2.25.5.2. Error
{
"status": "error",
"message": "<error_message>"
}2.25.5.2.1. Possible error messages:
- invalid_type
- invalid_guid
Chapter 3. Auth Policies API
Auth polices allow you to define different methods for authenticating and authorizing your application users. Different Auth Policies require different authentication configuration options to be defined. The structure of the various authentication configuration options are defined in the Authentication Configuration Options.
3.1. Create Auth Policy
3.1.1. Description
Create a new Auth policy.
3.1.2. Endpoint
- uri - /box/srv/1.1/admin/authpolicy/create
- method - POST
3.1.3. Request Body
{
// required - a unique id for the policy. Used by $fh.auth() to
// specify which Auth policy to use for authenticating/authorizing users
"policyId": "<for example, oauth-google>",
// required - the type of Autheitcation policy
"policyType": "<oauth1 | oauth2 | ldap | openid>",
// required, the configuration parameters for the policy
// See Configuration Options section for full details
"configurations": {<Config JSON Object>},
// optional, default false
// Flag to indicate if a check should be performed to
// validate that the user id of the user being autheticated exists
// in the platform. This should be set to
// true for private apps & false for public apps.
"checkUserExists": true | false,
// Flag to indicate if our User needs to be approved for Auth
"checkUserApproved": true | false
}3.1.4. Response Body
3.1.4.1. Success
{
"status": "ok",
"guid": "<new_auth_policy_global_unique_id>"
}3.1.4.2. Error
{
"status": "error",
"message": "<error_message>"
}3.2. Read Auth Policy
3.2.1. Description
Read details of an existing Auth policy.
3.2.2. Endpoint
- uri - /box/srv/1.1/admin/authpolicy/read
- method - POST
3.2.3. Request Body
{
// required - the unique id the policy to read
"policyId": "<for example, oauth-google>"
}3.2.4. Response Body
3.2.4.1. Success
{
"status": "ok",
"guid": "<auth_policy_global_unique_id>",
"policyId" : "<user_defined_policy_identifier>"
"policyType": "<oauth1 | oauth2 | ldap | openid>",
"configurations": {<Config JSON Object>},
"checkUserExists": true | false,
"checkUserApproved": true | false,
"users" : [<user-id>]
}3.2.4.2. Error
{
"status": "error",
"message": "<error_message>"
}3.3. Update Auth Policy
3.3.1. Description
Update an existing Auth policy.
3.3.2. Endpoint
- uri - /box/srv/1.1/admin/authpolicy/update
- method - POST
3.3.3. Request Body
{
// required - the global unique identifier for the policy to update
"guid" : "<global_unique_identifier>",
// required - a unique id for the policy. Used by $fh.auth() to
// specify which authentication policy to use for authenticating/authorizing users
"policyId": "<for example, oauth-google>",
// required - the type of Auth policy
"policyType": "<oauth1 | oauth2 | ldap | openid>",
// required, the configuration parameters for the policy
// See See Configuration Options section for full details
"configurations": {<Config JSON Object>},
// optional, default false
// Flag to indicate if a check should be performed to
// validate that the user id of the user being authenticated exists
// in the platform. This should be set to
// true for private apps & false for public apps.
"checkUserExists": true | false,
// Flag to indicate if our User needs to be approved for Auth
"checkUserApproved": true | false
}3.3.4. Response Body
3.3.4.1. Success
{
"status": "ok",
"guid": "<auth_policy_global_unique_id>"
}3.3.4.2. Error
{
"status": "error",
"message": "<error_message>"
}3.4. Delete Auth Policy
3.4.1. Description
Delete an existing Auth policy.
3.4.2. Endpoint
- uri - /box/srv/1.1/admin/authpolicy/delete
- method - POST
3.4.3. Request Body
{
// required - the global unique identifier for the policy to delete
"guid" : "<global_unique_identifier>"
}3.4.4. Response Body
3.4.4.1. Success
{
"status": "ok"
}3.4.4.2. Error
{
"status": "error",
"message": "<error_message>"
}3.5. List Auth Policies
3.5.1. Description
List all existing Auth policies.
3.5.2. Endpoint
- uri - /box/srv/1.1/admin/authpolicy/list
- method - POST | GET
3.5.3. Request Body
N/A
3.5.4. Response Body
3.5.4.1. Success
{
"status": "ok",
"list" : [
{
"guid": "<auth_policy_global_unique_id#1>",
"policyId" : "<user_defined_policy_identifier#1>"
"policyType": "<oauth1 | oauth2 | ldap | openid>",
"configurations": {<Config JSON Object>},
"checkUserExists": true | false,
"checkUserApproved": true | false
},
{
"guid": "<auth_policy_global_unique_id#2>",
"policyId" : "<user_defined_policy_identifier#2>"
"policyType": "<oauth1 | oauth2 | ldap | openid>",
"configurations": {<Config JSON Object>},
"checkUserExists": true | false,
"checkUserApproved": true | false
},
...
{
"guid": "<auth_policy_global_unique_id#N>",
"policyId" : "<user_defined_policy_identifier#N>"
"policyType": "<oauth1 | oauth2 | ldap | openid>",
"configurations": {<Config JSON Object>},
"checkUserExists": true | false,
"checkUserApproved": true | false
}
],
"count" : "<number_of_policies>"
}3.5.4.2. Error
{
"status": "error",
"message": "<error_message>"
}3.6. List Policy Users
3.6.1. Description
List all Users associated with an Auth Policy.
3.6.2. Endpoint
- uri - /box/srv/1.1/admin/authpolicy/users
- method - POST
3.6.3. Request Body
{
"guid": "<policy_guid>",
}3.6.4. Response Body
3.6.4.1. Success
{
"status": "ok",
"list" : [
{
"userid": "<user_id>",
"name" : "<user_name>"
"email": "<user_email>",
}
],
"count" : "<number_of_users_for_this_policy>"
}3.6.4.2. Error
{
"status": "error",
"message": "<error_message>"
}3.7. Add Users to a Policy
3.7.1. Description
Associate Users with an Auth Policy.
3.7.2. Endpoint
- uri - /box/srv/1.1/admin/authpolicy/addusers
- method - POST
3.7.3. Request Body
{
"guid": "<policy_guid>",
"users": ["<user_id>"]
}3.7.4. Response Body
3.7.4.1. Success
{
"status": "ok"
}3.7.4.2. Error
{
"status": "error",
"message": "<error_message>"
}3.8. Remove Users from a Policy
3.8.1. Description
Remove Users association with an Auth Policy.
3.8.2. Endpoint
- uri - /box/srv/1.1/admin/authpolicy/removeusers
- method - POST
3.8.3. Request Body
{
"guid": "<policy_guid>",
"users": ["<user_id>"]
}3.8.4. Response Body
3.8.4.1. Success
{
"status": "ok"
}3.8.4.2. Error
{
"status": "error",
"message": "<error_message>"
}3.9. Authentication Configuration Options
3.9.1. OAuth 2.0
- clientId - The public key used to identify the client which is requesting the authentication. This key will be passed to, and used by, the client.
- clientSecret - The secret key assigned by your OAuth provider. This key should never be set to, or stored on the client. It is used for server-to-server communication between the platform and the OAuth Provider.
3.9.1.1. Example:
{
"clientId": "1234567890.apps.example.com",
"clientSecret": "Wfv8DQw80hhyaBqnW37x5R23"
}3.9.2. LDAP
- authmethod - The authentication method to uses when authenticating against the LDAP server. This can be one of: 'simple', 'DIGEST-MD5', 'CRAM-MD5', or 'GSSAPI'.
- url - The LDAP Server url for example, "ldap://foo.example.com:389/".
- dn - The "Distinguished Name" to use. A DN is a sequence of relative distinguished names (RDN) connected by commas - for example, "ou=people,dc=example,dc=com".
- dn_prefix - The prefix to use for authentication for example, "uid" or "cn".
3.9.2.1. Example:
{
"authmethod" : "simple",
"url" : "ldap://foo.example.com:389/",
"dn": "ou=people,dc=example,dc=com",
"dn_prefix": "cn",
}Chapter 4. Cloud Alerts API
4.1. List Alerts
4.1.1. Description
List alerts associated with an app.
4.1.2. Endpoint
- uri - /box/srv/1.1/cm/eventlog/alert/list
- method - POST
4.1.3. Request Body
{
"appGuid":"<24 char String>",
"env":"<environment>"
}4.1.4. Response Body
4.1.4.1. Success
{
"list":[
{
"alertName": "AppTerminated",
"emails": "test@example.com",
"enabled": true,
"env": "dev",
"eventCategories": "APP_STATE",
"eventNames": "",
"eventSeverities": "FATAL",
"guid": "iV5E_ASJcQ_83TOgbDpYbHIp",
"sysCreated": "2013-06-28 11:09:05",
"sysModified": "2013-06-28 11:09:05",
"uid": "ajBTU-_UMtc7ggOCL6MbZRP_"
},
...
],
"status":"ok"
}4.1.4.2. Error
{
"status": "error",
"message": "<error_message>"
}4.2. Create An Alert
4.2.1. Description
Create a new alert for an app.
4.2.2. Endpoint
- uri - /box/srv/1.1/cm/eventlog/alert/create
- method - POST
4.2.3. Request Body
{
"alertName": "<The name of the alert, for example, TestAlert>",
"emails": "<The recipients of the alert>",
"enabled": "<true|false>",
"env": "<environment>",
"eventCategories": "<any of the event categories, for example, APP_STATE>",
"eventNames": "<any of the event name, for example, APP_TERMINATED. NOTE, if this is specified as well as the event categories and severities, need to make sure categories and severies are valid for the events>",
"eventSeverities": "<any of the event severities, for example, FATAL>",
"uid": "<the guid of the app>"
}4.2.4. Response Body
4.2.4.1. Success
{
"alertName": "TestAlert",
"emails": "test@example.com",
"enabled": true,
"env": "dev",
"eventCategories": "APP_STATE",
"eventNames": "TERMINATED",
"eventSeverities": "FATAL",
"guid": "F9zwTLwAwsaTZP7I45sOtRKJ",
"sysCreated": "2013-07-04 15:32:54",
"sysModified": "2013-07-04 15:32:54",
"uid": "ajBTU-_UMtc7ggOCL6MbZRP_",
"status":"ok"
}4.2.4.2. Error
{
"status": "error",
"message": "<error_message>"
}4.3. Update An Alert
4.3.1. Description
Update an existing alert for an app.
4.3.2. Endpoint
- uri - /box/srv/1.1/cm/eventlog/alert/update
- method - POST
4.3.3. Request Body
{
"guid":"<The unique id of the alert>",
"alertName": "<The name of the alert, for example, TestAlert>",
"emails": "<The recipients of the alert>",
"enabled": "<true|false>",
"env": "<environment>",
"eventCategories": "<any of the event categories, for example, APP_STATE>",
"eventNames": "<any of the event name, for example, APP_TERMINATED. NOTE, if this is specified as well as the event categories and severities, need to make sure categories and severies are valid for the events>",
"eventSeverities": "<any of the event severities, for example, FATAL>",
"uid": "<the guid of the app>"
}4.3.4. Response Body
4.3.4.1. Success
{
"alertName": "TestAlert",
"emails": "test@example.com, test1@example.com",
"enabled": true,
"env": "dev",
"eventCategories": "APP_STATE",
"eventNames": "TERMINATED",
"eventSeverities": "FATAL",
"guid": "F9zwTLwAwsaTZP7I45sOtRKJ",
"sysCreated": "2013-07-04 15:32:54",
"sysModified": "2013-07-04 15:32:54",
"uid": "ajBTU-_UMtc7ggOCL6MbZRP_",
"status":"ok"
}4.3.4.2. Error
{
"status": "error",
"message": "<error_message>"
}4.4. Delete An Alert
4.4.1. Description
Delete an existing alert for an app.
4.4.2. Endpoint
- uri - /box/srv/1.1/cm/eventlog/alert/delete
- method - POST
4.4.3. Request Body
{
"guid":"<The unique id of the alert>",
"alertName": "<The name of the alert, for example, TestAlert>",
"emails": "<The recipients of the alert>",
"enabled": "<true|false>",
"env": "<environment>",
"eventCategories": "<any of the event categories, for example, APP_STATE>",
"eventNames": "<any of the event name, for example, APP_TERMINATED. NOTE, if this is specified as well as the event categories and severities, need to make sure categories and severies are valid for the events>",
"eventSeverities": "<any of the event severities, for example, FATAL>",
"uid": "<the guid of the app>"
}4.4.4. Response Body
4.4.4.1. Success
{
"alertName": "TestAlert",
"emails": "test@example.com, test1@example.com",
"enabled": true,
"env": "dev",
"eventCategories": "APP_STATE",
"eventNames": "TERMINATED",
"eventSeverities": "FATAL",
"guid": "F9zwTLwAwsaTZP7I45sOtRKJ",
"sysCreated": "2013-07-04 15:32:54",
"sysModified": "2013-07-04 15:32:54",
"uid": "ajBTU-_UMtc7ggOCL6MbZRP_",
"status":"ok"
}4.4.4.2. Error
{
"status": "error",
"message": "<error_message>"
}4.5. List Email Notifications
4.5.1. Description
List all the email notifications that are sent for an app.
4.5.2. Endpoint
- uri - /box/srv/1.1/cm/eventlog/alert/listAudit
- method - POST
4.5.3. Request Body
{
"appGuid":"<24 char String>",
"env":"<environment>"
}4.5.4. Response Body
4.5.4.1. Success
{
"list":[
{
"alertName": "AppTerminated",
"body": "<Email Content>",
"env": "dev",
"guid": "RD0O6ByAU_BwJRolaZUhXpl8",
"recipients": "wei.li@feedhenry.com",
"subject": "FeedHenry DynoFarm Testing Alert: AppTerminated - EventsTestApp1 (ajBTU-_UMtc7ggOCL6MbZRP_)",
"sysCreated": "2013-07-04 14:24:23",
"sysModified": "2013-07-04 14:24:23",
"uid": "ajBTU-_UMtc7ggOCL6MbZRP_"
},
...
],
"status":"ok"
}4.5.4.2. Error
{
"status": "error",
"message": "<error_message>"
}Chapter 5. Cloud Events API
5.1. List Events
5.1.1. Description
List events from the event log for an app.
5.1.2. Endpoint
- uri - /box/srv/1.1/app/eventlog/listEvents
- method - POST
5.1.3. Request Body
{
"appGuid":"<24 char String>",
"env":"<environment>"
}5.1.4. Response Body
5.1.4.1. Success
{
"list":[{
"fields":
{
"appGuid": "WaD9Fgzx7yMZRfAvQSwO85el",
"category": "APP_STATE",
"dismissed": false,
"env": "dev",
"eventDetails": {message:Completed app deployment},
"message": "Completed app deployment",
"eventType": "DEPLOYED",
"guid": "43f-WyNeI4Wlif07-cgpBZVy",
"message": "Completed app deployment",
"severity": "INFO",
"sysCreated": "2013-07-04 14:47:49:034",
"timestamp": "2013-07-04 14:47:48:977",
"title": "DEPLOYED",
"uid": "WaD9Fgzx7yMZRfAvQSwO85el",
"updatedBy": "System"
},
"guid":"rVfKTjq-YoosmcGUJf96f0xx",
"type":"eventlog_EventLog"
},
...
],
"status":"ok"
}5.1.4.2. Error
{
"status": "error",
"message": "<error_message>"
}Chapter 6. Devices API
6.1. List Devices
6.1.1. Description
Get a list of the devices which have autheticated against the platform.
6.1.2. Endpoint
- uri - /box/srv/1.1/admin/device/list
- method - POST
6.1.3. Request Body
{}6.1.4. Response Body
6.1.4.1. Success
{
"status": "ok",
"count": <total device count>,
"list" : [
{
"guid": "<device_global_unique_id>",
"fields": {
"cuid": "<id_assigned_by_device>",
"name": "<Friendly_name_of_device>",
"disabled": true|false, /* Is this device currently blocked from logging in */
"blacklisted": true|false /* Should data be purged from apps the next time the device authenticates */
}
},
...
]
}6.1.4.2. Error
{
"status": "error",
"message": "<error_message>"
}6.2. Read Device
6.2.1. Description
Read details of a specific device based on its id.
6.2.2. Endpoint
- uri - /box/srv/1.1/admin/device/read
- method - POST
6.2.3. Request Body
{
"cuid": "<id_assigned_by_device>"
}6.2.4. Response Body
6.2.4.1. Success
{
"status": "ok",
"guid": "<global_unique_id>",
"fields": {
"cuid": "<id_assigned_by_device>",
"name": "<Friendly_name_of_device>",
"disabled": true|false, /* Is this device currently blocked from logging in */
"blacklisted": true|false /* Should data be purged from apps the next time the device authenticates */
}
}6.2.4.2. Error
{
"status": "error",
"message": "<error_message>"
}6.3. Update Device
6.3.1. Description
Update details of a specific device based on its guid.
6.3.2. Endpoint
- uri - /box/srv/1.1/admin/device/update
- method - POST
6.3.3. Request Body
{
"cuid": "<id_assigned_by_device>",
"name": "<Friendly_name_of_device>", /* Optional */
"disabled": true|false /* Optional - DEFAULT=false - Is this device currently blocked from logging in */
"blacklisted": true|false /* Optional - DEFAULT=false - Should data be purged from apps the next time the device authenticates */
}6.3.4. Response Body
6.3.4.1. Success
{
"status": "ok",
"guid": "<global_unique_id>",
"fields": {
"cuid": "<id_assigned_by_device>",
"name": "<Friendly_name_of_device>",
"disabled": true|false, /* Is this device currently blocked from logging in */
"blacklisted": true|false /* Should data be purged from apps the next time the device authenticates */
}
}6.3.4.2. Error
{
"status": "error",
"message": "<error_message>"
}6.4. List Apps
6.4.1. Description
Return a list of the apps which have autheticated from the specified device id.
6.4.2. Endpoint
- uri - /box/srv/1.1/admin/device/listapps
- method - POST
6.4.3. Request Body
{
"cuid": "<id_assigned_by_device>"
}6.4.4. Response Body
6.4.4.1. Success
{
"status": "ok",
"count": <total apps count>,
"list" : [
{
"guid": <unique app guid>,
"fields" : {
"name" : <app name>,
"description" : <app description>,
}
},
...
]
}6.4.4.2. Error
{
"status": "error",
"message": "<error_message>"
}6.5. List Users
6.5.1. Description
Return a list of the user ids which have autheticated from the specified device id.
6.5.2. Endpoint
- uri - /box/srv/1.1/admin/device/listusers
- method - POST
6.5.3. Request Body
{
"cuid": "<id_assigned_by_device>"
}6.5.4. Response Body
6.5.4.1. Success
{
"status": "ok",
"count": <total users count>,
"list" : [
{
"guid": <unique user guid>,
"fields" : {
"userId" : <unique user id>,
"email" : <user email>
}
},
...
]
}6.5.4.2. Error
{
"status": "error",
"message": "<error_message>"
}Chapter 7. Endpoint Security API
7.1. getSecureEndpoint
7.1.1. Description
Get the endpoint security data for the specified app and runtime environment.
7.1.2. Endpoint
- uri - /box/srv/1.1/app/endpointsecurity/get
- method - POST
7.1.3. Request Body
{
// required
"appId": "unqiue app identifier",
// required
"environment": "dev",
}7.1.4. Response Body
7.1.4.1. Success
{
"status": "ok",
"appId": "unqiue app identifier",
"environment": "dev",
"default": "https", // can be "https" | "appapikey"
"updatedBy": "user@example.com",
"updatedWhen": "2012-12-04 12:00",
"overrides": {
"<endpoint name 1>": {
"security" : "https", // can be "https" | "appapikey",
"updatedBy": "user@example.com",
"updatedWhen": "2012-12-04 12:00"
},
"<endpoint name 2>": {
"security" : "https", // can be "https" | "appapikey",
"updatedBy": "user@example.com",
"updatedWhen": "2012-12-04 12:00"
},
// ...
"<endpoint name n>": {
"security" : "https", // can be "https" | "appapikey",
"updatedBy": "user@example.com",
"updatedWhen": "2012-12-04 12:00"
}
}
}7.1.4.2. Error
{
"status": "error",
"message": "<error_message>"
}7.2. setSecureEndpoint
7.2.1. Description
Set the endpoint security data for the specified app and runtime environment.
7.2.2. Endpoint
- uri - /box/srv/1.1/app/endpointsecurity/set
- method - POST
7.2.3. Request Body
{
// required
"appId": "unqiue app identifier",
// required
"environment": "dev",
// required
"default": "https", // can be "https" | "appapikey"
"overrides": {
"<endpoint name 1>": {
"security" : "https" // can be "https" | "appapikey"
},
"<endpoint name 2>": {
"security" : "https" // can be "https" | "appapikey"
},
// ...
"<endpoint name n>": {
"security" : "https" // can be "https" | "appapikey"
}
}
}7.2.4. Response Body
7.2.4.1. Success
{
"status": "ok"
}7.2.4.2. Error
{
"status": "error",
"message": "<error_message>"
}7.3. setSecureEndpointOverride
7.3.1. Description
Set the endpoint security data for the specified endpoints of an app and runtime environment. This does not change the default security setting for the app.
7.3.2. Endpoint
- uri - /box/srv/1.1/app/endpointsecurity/setOverride
- method - POST
7.3.3. Request Body
{
// required
"appId": "unqiue app identifier",
// required
"environment": "dev",
// required
"overrides": {
"<endpoint name 1>": {
"security" : "https" // can be "https" | "appapikey"
},
"<endpoint name 2>": {
"security" : "https" // can be "https" | "appapikey"
},
// ...
"<endpoint name n>": {
"security" : "https" // can be "https" | "appapikey"
}
}
}7.3.4. Response Body
7.3.4.1. Success
{
"status": "ok"
}7.3.4.2. Error
{
"status": "error",
"message": "<error_message>"
}7.4. removeSecureEndpointOverride
7.4.1. Description
Remove the endpoint security overrides for the specified endpoints of an app and runtime environment. This does not change the default security setting for the app.
7.4.2. Endpoint
- uri - /box/srv/1.1/app/endpointsecurity/removeOverride
- method - POST
7.4.3. Request Body
{
// required
"appId": "unqiue app identifier",
// required
"environment": "dev",
// required
"endpoint": "<endpoint name>"
}7.4.4. Response Body
7.4.4.1. Success
{
"status": "ok"
}7.4.4.2. Error
{
"status": "error",
"message": "<error_message>"
}7.5. setDefaultSecureEndpoint
7.5.1. Description
Set the default endpoint security for the specified app and runtime environment.
7.5.2. Endpoint
- uri - /box/srv/1.1/app/endpointsecurity/setDefault
- method - POST
7.5.3. Request Body
{
// required
"appId": "unqiue app identifier",
// required
"environment": "dev",
// required
"default": "https" // can be "https" | "appapikey"
}7.5.4. Response Body
7.5.4.1. Success
{
"status": "ok"
}7.5.4.2. Error
{
"status": "error",
"message": "<error_message>"
}7.6. auditLog
7.6.1. Description
Get the Endpoint Security Audit Log data for the specified app and runtime environment.
An optional filter parameter can be specified to filter the returned audit log records by the following criteria:
-
endpoint: the name of an endpoint -
security: can behttpsorappapikey -
updatedBy: a userId -
event: one of "Set App Security", "Add Endpoint", "Remove Endpoint" -
limit: number of records to return
7.6.2. Endpoint
- uri - /box/srv/1.1/app/endpointsecurity/auditLog
- method - POST
7.6.3. Request Body
{
// required
"appId": "unqiue app identifier",
// required
"environment": "dev",
"filter": {
"endpoint": "<endpoint>",
"security": "<security>",
"updatedBy": "<updatedBy>",
"event": "<event>",
"limit": "<num records>"
}
}7.6.4. Response Body
7.6.4.1. Success
{
"list": [
{
"appId": "O_6sZAYZN4O3KsJtJ2-ssvAf",
"endpoint": "getDemo",
"environment": "dev",
"event": "Add Endpoint",
"security": "https",
"updatedBy": "training@example.com",
"updatedWhen": "Thu Dec 13 12:01:33 UTC 2012",
"updatedWhenMillis": 1355400093157
},
{
"appId": "O_6sZAYZN4O3KsJtJ2-ssvAf",
"endpoint": "",
"environment": "dev",
"event": "Set App Security",
"security": "appapikey",
"updatedBy": "training@example.com",
"updatedWhen": "Thu Dec 13 11:57:24 UTC 2012",
"updatedWhenMillis": 1355399844528
}
],
"status": "ok"
}7.6.4.2. Error
{
"status": "error",
"message": "<error_message>"
}Chapter 8. User Roles API
8.1. List User’s Roles
8.1.1. Description
List currently logged in user’s roles.
8.1.2. Endpoint
- uri - /box/srv/1.1/admin/role/list
- method - POST
8.1.3. Request Body
{}8.1.4. Response Body
8.1.4.1. Success
{
"status": "ok",
"list": ["sub", "dev"]
}8.1.4.2. Error
{
"status": "error",
"message": "<error_message>"
}8.2. List User’s Assignable Roles
8.2.1. Description
List currently logged in user’s assignable roles, that is, roles that this user can assign to others.
8.2.2. Endpoint
- uri - /box/srv/1.1/admin/role/listAssignable
- method - POST
8.2.3. Request Body
{}8.2.4. Response Body
8.2.4.1. Success
{
"status": "ok",
"list": ["sub", "dev", "devadmin", "analytics", "portaladmin"]
}8.2.4.2. Error
{
"status": "error",
"message": "<error_message>"
}Chapter 9. Teams Administration API
The Team Administration API allows Users with the required Permissions to manage teams at different levels of the Platform.
9.1. Requirements
To be able to administer teams the user must authenticate to the specific domain, either by logging in and using the returned cookie, or by using an API key located in the API Key Management section of the User Profile in Studio.
In addition, the logged in user must be a Member of a Team(s) with the following permissions:
Reseller
- Administrator (View & Edit)
OR
Customer
- Administrator (View & Edit)
OR
Domain
- Administrator (View & Edit)
9.2. List Teams
9.2.1. Description
Lists the Teams available to the User based on the Permissions assigned to the Teams that the User is a Member of.
9.2.2. JSON Team Definition
The following JSON Object is the JSON definition of a Team referred to in the response bodies in the Teams Administration Platform API.
{
//Team Identifier
"_id": "teamid1234",
//The Business Objects that the Team has access to at different levels of the
//Platform.
"business-objects": {
"cluster": [
"<Cluster Name>"
],
"cluster/reseller": [
"<Reseller Id>"
],
"cluster/reseller/customer": [
"<Customer Id>"
]
},
//Array Of Users IDs Assigned to the Team.
"users": ["userid1234"],
//Permissiions assigned to the Team at Different Levels of the Platform
"perms": {
"cluster/reseller": "read"
"cluster/reseller/customer": "write"
"cluster/reseller/customer/domain": "read"
},
//Is this Team a Default Team or a User Created Team.
"defaultTeam": true/false,
//A User-defined description of a Team.
"desc": "This is a Team.",
//The Name of a Team.
"name": "Team 1",
//Timestamp of the last time the team was updated.
"updated": "<1413466521479>",
//A User-Defined code for the team.
"code": "Team Code"
}9.2.3. Endpoint
-
URI:
/api/v2/admin/teams -
Method:
GET
9.2.4. Request Body
{}9.2.5. Response Body
9.2.5.1. Success
// Array of JSON Objects Representing A Team
[
"<JSON Team Definition>",
"<JSON Team Definition>"
]9.2.5.2. Error
{
"error": {
"error": "<Error Message>"
}
}9.3. List Teams For User
9.3.1. Description
This endpoint lists the Teams that a User with ID userId is a Member of.
9.3.2. Endpoint
-
URI:
/api/v2/admin/users/<userId>/teams -
Method:
GET
9.3.3. Request Body
{}9.3.4. Response Body
9.3.4.1. Success
[
"<JSON Team Definition>"
]9.3.4.2. Error
{
"error": {
"error": "<Error Message>"
}
}9.4. View Team Details
9.4.1. Description
View the full JSON definition for a Team with ID teamId.
9.4.2. Endpoint
-
URI:
/api/v2/admin/teams/<teamId> -
Method:
GET
9.4.3. Request Body
{}9.4.4. Response Body
9.4.4.1. Success
{
"<JSON Team Definition>"
}9.4.4.2. Error
{
"error": {
"error": "<Error Message>"
}
}9.5. Create Team
9.5.1. Description
Create a new User-Defined Team.
9.5.2. Endpoint
-
URI:
/api/v2/admin/teams -
Method:
POST
9.5.3. Request Body
{
//A User-Defined name for the Team.
"name":"User Team",
//A User-Definied code for the Team.
"code":"user-team",
//A User-Definied description of the team.
"desc":"A Team Created By A User",
//Permissions Assigned to the Team at differnent levels of the Platform
"perms":{
"cluster": [
"<Cluster Name>"
],
"cluster/reseller": [
"<Reseller Id>"
],
"cluster/reseller/customer": [
"<Customer Id>"
]
},
//User IDs of Users assigned to the Team.
"users":[],
//IDs of Business Objects assigned to the Team at different levels of the Platform.
"business-objects":{
"cluster/reseller": "read"
}
}9.5.4. Response Body
9.5.4.1. Success
{
"<JSON Team Definition>"
}9.5.4.2. Error
{
"error": {
"error": "<Error Message>"
}
}9.6. Remove Team
9.6.1. Description
Remove a Team with ID teamId.
9.6.2. Endpoint
-
URI:
/api/v2/admin/teams/<teamId> -
Method:
DELETE
9.6.3. Request Body
{}9.6.4. Response Body
9.6.4.1. Success
{
"JSON Team Definition"
}9.6.4.2. Error
{
"error": "<Error Message>"
}9.7. Add User To A Team
9.7.1. Description
Adding a user with ID userId to a Team with ID teamId
9.7.2. Endpoint
-
URI:
/api/v2/admin/teams/<teamId>/user/<userId> -
Method:
POST
9.7.3. Request Body
{
"guid": "<userId>"
}9.7.4. Response Body
9.7.4.1. Success
{
"<JSON Team Definition>"
}9.7.4.2. Error
{
"error": "<Error Message>"
}9.8. Remove User From A Team
9.8.1. Description
Removes a User with ID userId from a Team with ID teamId.
9.8.2. Endpoint
-
URI:
/api/v2/admin/teams/<teamId>/user/<userId> -
Method:
DELETE
9.8.3. Request Body
{}9.8.4. Response Body
9.8.4.1. Success
{
"<JSON Team Definition>"
}9.8.4.2. Error
{
"error": "<Error Message>"
}Chapter 10. Users Administration API
10.1. Requirements
The user must be a member of one or more teams with the following permissions:
Reseller
- Adminisration (View & Edit)
OR
Customer
- Administration (View & Edit)
For more information on Permissions, see Teams & Collaborations.
10.2. Create User
10.2.1. Description
Create a new user belonging to the specified customer.
10.2.2. Endpoint
- uri - /box/srv/1.1/admin/user/create
- method - POST
10.2.3. Request Body
{
// required
"username": "unqiue user identifier",
// optional, default is a randomly generated password
// Useful to leave as default if User is to be sent an activation email,
// allowing them to set the password as required upon activation
"password": "<password>",
//optional
"email": "<email>",
//optional
"name": "<name>",
// optional, default is ""
// comma separated list of roles to assign new user
"roles": "<roles>",
// optional, default is ""
// comma separated list of Auth policy guids to assign new user
"authpolicies": "<authpolicies>",
// optional, default is false
// whether or not an activation invite email should be sent to the user
"invite": false
}10.2.4. Response Body
10.2.4.1. Success
{
"status": "ok",
"username": "<user_name>"
}10.2.4.2. Error
{
"status": "error",
"message": "<error_message>"
}10.3. Update User
10.3.1. Description
Update an existing user belonging to the specified customer.
10.3.2. Endpoint
- uri - /box/srv/1.1/admin/user/update
- method - POST
10.3.3. Request Body
{
//required, and it can not be changed
"username": "<unique user identifier>",
// all fields are optional
// email address of user to update
"email": "<email>",
"name": "<name>",
"password": "<password>",
//user won't be able to login if this is set to true
"enabled": false,
//if this is set to true, if will return a special flag next time the user logged in,
//this flag can be used to delete application data on the device
"blacklisted": false,
// comma separated list of roles to set for this user for example, 'dev, analytics'
"roles": "<roles>",
// comma separated list of Auth policy guids to set for this user
"authpolicies": "<authpolicies>"
}10.3.4. Response Body
10.3.4.1. Success
The teams field is only available if Teams is enabled on the Platform. To view the JSON Team Definition, click here.
{
"status": "ok",
"fields": {
"username": "<unique user identifier>",
"email": "<email>",
"name": "<name>",
"enabled": false,
"blacklisted": false,
"roles": "<roles>",
//An Array of JSON Team Definitions the User is a Member of.
//Note: This is only included if Teams is enabled for the User.
"teams": ["<JSON Team Definition>"]
}
}10.3.4.2. Error
{
"status": "error",
"message": "<error_message>"
}10.4. Delete User
10.4.1. Description
Delete a user. The user must not have any Apps, otherwise the deletion will fail.
10.4.2. Endpoint
- uri - /box/srv/1.1/admin/user/delete
- method - POST
10.4.3. Request Body
{
// required
// username of user to delete
"username": "<unique user identifier>",
}10.4.4. Response Body
10.4.4.1. Success
{
"status": "ok",
"fields": {
"username": "<unique user identifier>",
"email": "<email>",
"name": "<name>",
"enabled": false,
"blacklisted": false,
"roles": "<roles>",
"authpolicies": "<authpolicies>"
}
}10.4.4.2. Error
{
"status": "error",
"message": "<error_message>"
}10.5. Read User
10.5.1. Description
Read a user information based on the user name.
10.5.2. Endpoint
- uri - /box/srv/1.1/admin/user/read
- method - POST
10.5.3. Request Body
{
// required
// user name of the user to delete
"username": "<unique user identifier>",
}10.5.4. Response Body
{
"status": "ok",
"fields": {
"username": "<unique user identifier>",
"email": "<email>",
"name": "<name>",
"enabled": false,
"blacklisted": false,
"roles": [<an array of role string>],
"authpolicies": [<an array of Auth policy guids>],
"lastLogin" : "<timestamp of last login>"
}
}10.5.4.1. Error
{
"status": "error",
"message": "<error_message>"
}10.6. List Users
10.6.1. Description
List users.
10.6.2. Endpoint
- uri - /box/srv/1.1/admin/user/list
- method - POST
10.6.3. Request Body
{}10.6.4. Response Body
10.6.4.1. Success
{
"status": "ok",
"count": "<users total count>",
"list": [{
"fields": {
"username": "<unique user identifier>",
"email": "<email>",
"name": "<name>",
"enabled": false,
"blacklisted": false,
"authpolicies": [<an array of Auth policy guids>],
"lastLogin" : "<timestamp of last login>"
}
}, ...]
}10.6.4.2. Error
{
"status": "error",
"message": "<error_message>"
}10.7. Enable/Disable User
10.7.1. Description
Enable/disable an existing user.
10.7.2. Endpoint
- uri - /box/srv/1.1/admin/user/update
- method - POST
10.7.3. Request Body
{
// required
// username of user to update
"username": "<unique user identifier>",
"enabled": true/false
}10.7.4. Response Body
10.7.4.1. Success
{
"status": "ok",
"fields": {
"username": "<unique user identifier>",
"email": "<email>",
"name": "<name>",
"enabled": false,
"blacklisted": false,
"roles": [<an array of string>],
"authpolicies": [<an array of Auth policy guids>]
}
}10.7.4.2. Error
{
"status": "error",
"message": "<error_message>"
}10.8. Add/Remove Roles
10.8.1. Description
Add new roles or remove existing roles of a user.
10.8.2. Endpoint
- uri - /box/srv/1.1/admin/user/update
- method - POST
10.8.3. Request Body
{
// required
// username of the user to update
"username": "<unique user identifier>",
// comma separated list of roles to set for this user for example, 'dev, analytics'
"roles": "<roles>"
}10.8.4. Response Body
10.8.4.1. Success
{
"status": "ok",
"fields": {
"username": "<unique user identifier>",
"email": "<email>",
"name": "<name>",
"enabled": false,
"blacklisted": false,
"roles": [<an array of string>],
"authpolicies": [<an array of Auth policy guids>]
}
}10.8.4.2. Error
{
"status": "error",
"message": "<error_message>"
}10.9. Add/Remove Auth Policies
10.9.1. Description
Add new Auth policies to or remove existing Auth policies from a user.
10.9.2. Endpoint
- uri - /box/srv/1.1/admin/user/update
- method - POST
10.9.3. Request Body
{
// required
// username of the user to update
"username": "<unique user identifier>",
// comma separated list of Auth policy guids to set for this user
"authpolicies": "<authpolicies>"
}10.9.4. Response Body
10.9.4.1. Success
{
"status": "ok",
"fields": {
"username": "<unique user identifier>",
"email": "<email>",
"name": "<name>",
"enabled": false,
"blacklisted": false,
"roles": [<an array of string>],
"authpolicies": [<an array of Auth policy guids>]
}
}10.9.4.2. Error
{
"status": "error",
"message": "<error_message>"
}10.10. List a user’s devices
10.10.1. Description
List a user’s devices.
10.10.2. Endpoint
- uri - /box/srv/1.1/admin/user/listdevices
- method - POST
10.10.3. Request Body
{
//required
"username": "<unique user identifier>"
}10.10.4. Response Body
10.10.4.1. Success
{
"status" : "ok",
"list" : [{
"guid" : "<device guid>",
"cuid" : "<device id>",
"name" : "<devicel lable>",
"disabled" : "<is the device disabled>",
"blacklisted" : "<is the device blacklisted>"
}, ...]
}10.10.4.2. Error
{
"status": "error",
"message": "<error_message>"
}10.11. List a user’s store items
10.11.1. Description
List a user’s apps he/she has installed (But the app maybe deleted).
10.11.2. Endpoint
- uri - /box/srv/1.1/admin/user/liststoreitems
- method - POST
10.11.3. Request Body
{
//required
"username" : "<unique user identifier>"
}10.11.4. Response Body
10.11.4.1. Success
{
"status" : "ok",
"list" : [{
"guid" : "<app guid>",
"name" : "<app name>",
"description" : "<app description>"
}, ...]
}10.11.4.2. Error
{
"status": "error",
"message": "<error_message>"
}