In this document:

The considered APS type (download)
extends the Resource APS type(s) and looks as follows:
{
"name": "CBStoreSubsystem",
"id": "http://com.ingrammicro/appstore/cbstore-subsystem/1.0",
"apsVersion": "2.0",
"implements": [
"http://aps-standard.org/types/core/resource/1.0"
],
"access": {
"global": true
},
"operations": {
"applications": {
"path": "/applications",
"verb": "GET",
"response": {
"type": "array",
"items": {
"type": "CBStoreApplication"
}
},
"errorResponse": {
"type": "object"
}
},
"application": {
"path": "/applications/{appId}",
"verb": "GET",
"response": {
"type": "CBStoreApplicationInformation"
},
"errorResponse": {
"type": "object"
},
"parameters": {
"appId": {
"kind": "path",
"type": "string",
"required": true
}
}
},
"install": {
"path": "/applications/{appId}/install",
"verb": "POST",
"response": {
"type": "object"
},
"errorResponse": {
"type": "object"
},
"parameters": {
"appId": {
"kind": "path",
"type": "string",
"required": true
},
"payload": {
"kind": "body",
"type": "object"
}
}
},
"uninstall": {
"path": "/applications/{appId}/uninstall",
"verb": "POST",
"response": {
"type": "object"
},
"errorResponse": {
"type": "object"
},
"parameters": {
"appId": {
"kind": "path",
"type": "string",
"required": true
}
}
},
"update": {
"path": "/applications/{appId}/update",
"verb": "POST",
"response": {
"type": "object"
},
"errorResponse": {
"type": "object"
},
"parameters": {
"appId": {
"kind": "path",
"type": "string",
"required": true
},
"payload": {
"kind": "body",
"type": "object"
}
}
}
},
"structures": {
"CBStoreApplication": {
"type": "object",
"properties": {
"storeAppId": {
"type": "string",
"description": "App identifier (unique in subsystem)",
"required": true
},
"status": {
"type": "string",
"description": "App status (installed_latest represents installed, regardless of version)",
"required": true,
"enum": [
"not_installed",
"provisioning",
"installed_latest",
"installation_not_available"
]
},
"version": {
"type": "string",
"description": "Installed version. Should be returned if app is installed and versionDisplayMode is not display_none"
},
"versionDisplayMode": {
"type": "string",
"description": "Allows to specify if versions are not supported (and should not be displayed). If not set, display_all is assumed",
"enum": [
"display_all",
"display_none"
]
},
"applicationViewId": {
"type": "string",
"description": "UX1 view id of the installed app"
},
"applicationViewType": {
"type": "string",
"description": "Type of view that is opened during navigation to applicationViewId",
"enum": [
"open",
"manage"
]
}
}
},
"AttachmentInfo": {
"type": "object",
"properties": {
"mimeType": {
"type": "string",
"description": "Attachment mime type"
},
"fileName": {
"type": "string",
"description": "If specified, attachment with this exact filename is expected"
}
}
},
"CBStoreApplicationInformation": {
"type": "object",
"properties": {
"storeAppId": {
"type": "string",
"description": "App identifier (unique in subsystem)",
"required": true
},
"status": {
"type": "string",
"description": "App status (installed_latest represents installed, regardless of version)",
"required": true,
"enum": [
"not_installed",
"provisioning",
"installed_latest",
"installation_not_available"
]
},
"version": {
"type": "string",
"description": "Installed version. Should be returned if app is installed and versionDisplayMode is not display_none"
},
"versionDisplayMode": {
"type": "string",
"description": "Allows to specify if versions are not supported (and should not be displayed). If not set, display_all is assumed",
"enum": [
"display_all",
"display_none"
]
},
"applicationViewId": {
"type": "string",
"description": "UX1 view id of the installed app"
},
"applicationViewType": {
"type": "string",
"description": "Type of view that is opened during navigation to applicationViewId",
"enum": [
"open",
"manage"
]
},
"installationMethod": {
"type": "string",
"description": "App installation method",
"required": true,
"enum": [
"api",
"view",
"view_and_api",
"not_available"
]
},
"uninstallationMethod": {
"type": "string",
"description": "App uninstallation method",
"required": true,
"enum": [
"api",
"view",
"view_and_api",
"not_available"
]
},
"appId": {
"type": "string",
"description": "App id for installation shared component"
},
"installComponentName": {
"type": "string",
"description": "Component name for installation shared component"
},
"statusReasonMessage": {
"type": "string",
"description": "Status reason message"
},
"statusReasonMessageParameters": {
"type": "object",
"description": "Key-value dictionary with parameters for status reason message"
},
"uninstallStatusReasonMessage": {
"type": "string",
"description": "Uninstall status reason message"
},
"uninstallStatusReasonMessageParameters": {
"type": "object",
"description": "Key-value dictionary with parameters for uninstall status reason message"
},
"attachmentInfo": {
"type": "AttachmentInfo",
"description": "Information about attachment expected by install method"
}
}
}
}
}
OPERATION |
VERB |
PATH |
RETURNS |
Description |
|---|---|---|---|---|
GET |
/applications |
An array of CBStoreApplication structures. |
Return a list of apps that are known to a subsystem. |
|
GET |
/applications/{appId} |
A CBStoreApplicationInformation structure. |
Return detailed information on an app of a subsystem.
If the app specified in the appID parameter is unknown but that app can be installed, the status property must be set to not_installed in the CBStoreApplicationInformation structure. For example, the UI and Branding component can install new skins as they are released.
If the app specified in the appID parameter cannot be installed, in addition to setting the status property to installation_not_available in the CBStoreApplicationInformation structure, the statusReasonMessage property must contain an explanatory message that will be displayed in the CloudBlue Store for that app.
|
|
POST |
/applications/{appId}/install |
An HTTP status code. |
Install an app of a subsystem. This custom operation must be implemented if the component of the subsystem supports the API or View and API installation method for the app. |
|
POST |
/applications/{appId}/uninstall |
An HTTP status code. |
Uninstall an app of a subsystem. This custom operation must be implemented if the component of the subsystem supports the API or View and API uninstallation method for the app. |
|
POST |
/applications/{appId}/update |
This custom operation is reserved for future use. |
HTTP Request
GET /aps/2/resources/{aps-id}/applications
Description
Return a list of apps that are known to a subsystem.
Returns
An array of CBStoreApplication structures.
HTTP Request
GET /aps/2/resources/{aps-id}/applications/{appId}
Description
Parameters
PARAMETER |
TYPE |
DESCRIPTION |
|---|---|---|
appId |
String |
The CloudBlue Store identifier of the app. |
Returns
A CBStoreApplicationInformation structure.
HTTP Request
POST /aps/2/resources/{aps-id}/applications/{appId}/install
Description
Install an app of a subsystem. This custom operation must be implemented if the component of the subsystem supports the API or View and API installation method for the app.
Parameters
PARAMETER |
TYPE |
DESCRIPTION |
|---|---|---|
appId |
String |
The CloudBlue Store identifier of the app. |
payload |
Object |
The payload of the custom operation. For details, see The Format of Payload for the install Custom Operation in the Examples section.
The CloudBlue Store prepares that payload for the app and passes it to the custom operation.
|
Returns
An HTTP status code.
HTTP Request
POST /aps/2/resources/{aps-id}/applications/{appId}/uninstall
Description
Uninstall an app of a subsystem. This custom operation must be implemented if the component of the subsystem supports the API or View and API uninstallation method for the app.
Parameters
PARAMETER |
TYPE |
DESCRIPTION |
|---|---|---|
appId |
String |
The CloudBlue Store identifier of the app. |
Returns
An HTTP status code.
HTTP Request
POST /aps/2/resources/{aps-id}/applications/{appId}/update
Description
This custom operation is reserved for future use.
Parameters
PARAMETER |
TYPE |
DESCRIPTION |
|---|---|---|
appId |
String |
Reserved for future use. |
payload |
Object |
Reserved for future use. |
Returns
A structure of this kind represents an app of a subsystem and contains basic information on that app.
NAME |
TYPE |
ATTRIBUTES |
DEFAULT |
DESCRIPTION |
|---|---|---|---|---|
storeAppId |
String |
Required |
The CloudBlue Store identifier of the app. |
|
status |
Enum |
Required |
The status of the app.
The following values are supported:
not_installed - The app is not installed.provisioning - The app is being installed or uninstalled.installed_latest - The app is installed. This status must be used for an installed app regardless of whether the latest app version is installed or not.installation_not_available - The app cannot be installed. For example, if there are two mutually exclusive apps in a subsystem and one of them is already installed, the other app cannot be installed. |
|
version |
String |
Not Required |
The current version of the installed app.
This property must be returned if status is installed_latest and versionDisplayMode is display_all.
|
|
versionDisplayMode |
Enum |
Not Required |
The version display mode of the app.
The following values are supported:
display_all - The app supports versioning. The CloudBlue Store displays versions of the app.display_none - The app does not support versioning. The CloudBlue Store does not display versions of the app. |
|
applicationViewId |
String |
Not Required |
The identifier of the view that must be opened in the CloudBlue Store when the Open or Manage button is clicked for the app. If not specified, no button is displayed in the CloudBlue Store for the app. |
|
applicationViewType |
Enum |
Not Required |
Defines which button must be displayed in the CloudBlue Store for the app. This property must be specified if applicationViewId is specified.
The following values are supported:
open - The Open button must be displayed.manage - The Manage button must be displayed. |
A structure of this kind represents an attachment of an app. That attachment is retrieved by the CloudBlue Store from the JIRA issue that belongs to the latest app version and is passed to the install custom operation during app installation.
NAME |
TYPE |
ATTRIBUTES |
DEFAULT |
DESCRIPTION |
|---|---|---|---|---|
mimeType |
String |
Not Required |
The MIME type of the attachment. |
|
fileName |
String |
Not Required |
The file name of the attachment. |
A structure of this kind represents an app of a subsystem and contains detailed information on that app.
NAME |
TYPE |
ATTRIBUTES |
DEFAULT |
DESCRIPTION |
|---|---|---|---|---|
storeAppId |
String |
Required |
The CloudBlue Store identifier of the app. |
|
status |
Enum |
Required |
The status of the app.
The following values are supported:
not_installed - The app is not installed.provisioning - The app is being installed or uninstalled.installed_latest - The app is installed. This status must be used for an installed app regardless of whether the latest app version is installed or not.installation_not_available - The app cannot be installed. For example, if there are two mutually exclusive apps in a subsystem and one of them is already installed, the other app cannot be installed. |
|
version |
String |
Not Required |
The current version of the installed app.
This property must be returned if status is installed_latest and versionDisplayMode is display_all.
|
|
versionDisplayMode |
Enum |
Not Required |
The version display mode of the app.
The following values are supported:
display_all - The app supports versioning. The CloudBlue Store displays versions of the app.display_none - The app does not support versioning. The CloudBlue Store does not display versions of the app. |
|
applicationViewId |
String |
Not Required |
The identifier of the view that must be opened in the CloudBlue Store when the Open or Manage button is clicked for the app. If not specified, no button is displayed in the CloudBlue Store for the app. |
|
applicationViewType |
Enum |
Not Required |
Defines which button must be displayed in the CloudBlue Store for the app. This property must be returned if applicationViewId is specified.
The following values are supported:
open - The Open button must be displayed.manage - The Manage button must be displayed. |
|
installationMethod |
Enum |
Required |
| The installation method supported by the component that the subsystem of the app belongs to.
Note: In the current version of CloudBlue Store, an app can be uninstalled only with the uninstall custom operation.
The following values are supported:
view - The component provides a shared component view for configurable installation and uninstallation. That shared component view is embedded in the CloudBlue Store UI. After the user provides the necessary information in the CloudBlue Store, the component must install the app using the provided information. Uninstallation is also performed with the shared component. For this installation method, the appId and installComponentName properties must be specified.api - The component provides the install and uninstall custom operations for non-configurable installation and uninstallation. The CloudBlue Store calls the respective custom operation after the user starts the installation or uninstallation of the app in the CloudBlue Store.view_and_api - The component provides a shared component view that is embedded in the CloudBlue Store UI and is used to gather installation information. After the user provides the necessary information, the CloudBlue Store calls the install custom operation of the component and passes the gathered information to that custom operation. Uninstallation is performed with the uninstall custom operation. For this installation method, the appId and installComponentName properties must be specified.not_available - The component does not provide any method to install the app through the CloudBlue Store. Optionally, details can be specified in the statusReasonMessage property. |
|
uninstallationMethod |
Enum |
Required |
| The uninstallation method supported by the component that the subsystem of the app belongs to.
Note: In the current version of CloudBlue Store, an app can be uninstalled only with the uninstall custom operation.
The following values are supported:
view - The component provides a shared component view for configurable installation and uninstallation. That shared component view is embedded in the CloudBlue Store UI. After the user provides the necessary information in the CloudBlue Store, the component must install the app using the provided information. Uninstallation is also performed with the shared component. For this installation method, the appId and installComponentName properties must be specified.api - The component provides the install and uninstall custom operations for non-configurable installation and uninstallation. The CloudBlue Store calls the respective custom operation after the user starts the installation or uninstallation of the app in the CloudBlue Store.view_and_api - The component provides a shared component view that is embedded in the CloudBlue Store UI and is used to gather installation information. After the user provides the necessary information, the CloudBlue Store calls the install custom operation of the component and passes the gathered information to that custom operation. Uninstallation is performed with the uninstall custom operation. For this installation method, the appId and installComponentName properties must be specified.not_available - The component does not provide any method to install the app through the CloudBlue Store. Optionally, details can be specified in the statusReasonMessage property. |
|
appId |
String |
Not Required |
The Application ID of the APS application of the component that the subsystem of the app belongs to. That Application ID can be obtained in APP-META.xml.
This property must be specified for the view and view_and_api installation or uninstallation methods.
|
|
installComponentName |
String |
Not Required |
The name of the UI component that represents the shared component view of the app.
This property must be specified for the view and view_and_api installation or uninstallation methods.
|
|
statusReasonMessage |
String |
Not Required |
A message that explains the reason why the app cannot be installed. It is shown in the CloudBlue Store. That message can contain placeholders that are filled based on the values specified in the statusReasonMessageParameters property. |
|
statusReasonMessageParameters |
Object |
Not Required |
The values for the placeholders that are used in the message specified in the statusReasonMessage property. It must be a JSON object that consists of key-value pairs, where each pair is a placeholder name and a placeholder value. |
|
uninstallStatusReasonMessage |
String |
Not Required |
A message that explains the reason why the app cannot be uninstalled. That message can contain placeholders that are filled based on the values specified in the uninstallStatusReasonMessageParameters property. |
|
uninstallStatusReasonMessageParameters |
Object |
Not Required |
The values for the placeholders that are used in the message specified in the uninstallStatusReasonMessage property. |
|
attachmentInfo |
Not Required |
If specified, defines which attachment the CloudBlue Store must retrieve from the JIRA issue that belongs to the latest app version. The CloudBlue Store passes that attachment to the install custom operation during app installation. |
Since the considered APS type contains custom operations, refer to Custom Operations for the general explanation of their structure and examples of operation calls.