Applications API¶
The Applications API provides a number of ways for you to interact with apps stored in the Apperian database for your organization. With the Applications API, you can:
- Create, update, and delete apps and App Catalogs without using the Admin Portal web interface.
- Request metadata, version data, and statistical data about your apps and App Catalogs.
- Download a native app’s binary file.
- Enable or disable an app.
- Manage app screenshots, icons, and App Catalog banner graphics.
Common App Data¶
In order to simplify the app publishing process, the response from the following endpoints always returns an application object in JSON form:
- POST /v1/applications/
- POST /v1/applications/<app_id>
- PUT /v2/applications/<app_id>
For more information about fields within the common application object, see Common App Data.
App ID¶
Apperian assigns a unique identifier to each app. Depending on the resource you’re calling, this identifier may appear as
appID
, id
, or app_psk
, and a resource may sometimes include more than one identifier. The appID
and
id
fields have string values with both numbers and letters, and the app_psk
field has an integer value with
numbers only.
When you send a request to any API resources where you need to specify an ID for an app, you can send appID
, id
,
or app_psk
; Apperian accepts the value of any of these parameters.
Note
We recommend that you use id
in all of your API calls, as this makes it easy to remember and helps standardize
the data in your requests.
User Access to Apps¶
The apps available to a user depend on the user’s role and which groups they are assigned to. For example, if a user has the Developer role and is a member of Group A, they will only see apps assigned to Group A, but not to Group B or Group C.
Users with Administrator and App Manager roles can view all apps in their organization. For more information, see Roles.
Resources¶
-
POST
/v1/applications/
¶ Add an Application
Authenticate as an Apperian administrator, app manager, or developer.
Adds an app to your organization. The request requires at least an app file (for native apps) or a URL (for public store apps). All other data is optional, and may be set at a later time by using PUT /v2/applications/.
This endpoint can also assign the newly created app to a list of groups, which matters when the creating user’s role is Developer. Developers are required to specify at least one group that they are a member of, otherwise if the server were to create the app, the developer would be unable to see or change it.
Add a Native App
When adding a native app, you must provide an app file. All other fields are optional.
Apperian automatically determines some values (for example,
app_name
andversion_num
) by analyzing the app file, but you can also provide your own values for any field. You should always consider providing values for as many fields as necessary for your users to have the best experience.Only iOS and Android native apps are supported.
Add an App Catalog
Adding an App Catalog is exactly the same as adding a native app, except you’ll provide an App Catalog app file.
Note
When uploading an iOS App Catalog, you may receive a warning message informing that push notifications will not work until the push certificate is added to the organization. In this case, you can use PUT /v3/organizations/<organization>/ to upload an APNS Push Certificate. This warning may also appear when updating an app or when creating or updating versions.
Note
As it is not possible to have multiple App Catalogs for the same platform, if you try to add an App Catalog while one of the same type already exists, the former App Catalog will become a normal app. In such cases, the API response contains a warning to inform you about the situation.
Add a Public Store App
When adding an app from a public app store (Google Play or Apple App Store), you provide a URL rather than an app file. Otherwise, the interface is the same. When the provided URL is to a public store app, the server recognizes it and automatically populates the app metadata (name, descriptions, icon, screenshots, etc) by pulling it from the public store.
Note
You can optionally choose to upload a custom icon for public store apps. If you do, you must use the multipart/form-data content type, which is explained later in the Sending Files section.
Add a Hybrid App
When adding a hybrid app, you’ll include a hybrid object in the JSON for the request. This takes the place of the
app_file
for regular native apps andurl
for web or store apps.For more information about the hybrid object and its editable fields, see Hybrid App Data.
When you create a hybrid app, the only fields required within the hybrid object are
url
andplatform
, all other fields are optional (and False by default).You can also include any other editable app fields, such as
app_name
,icon_file
, orenabled
, but none are required. However:- If you do not define an
app_name
, the API automatically uses the domain from the URL as the app’s name. For example, if theurl
ishttp://www.example.com
theapp_name
would beexample
. - If you don’t submit an icon, the hybrid app will include a generic web app icon by default.
To rebuild a hybrid app, use POST /v1/applications/<application>.
For more information about hybrid apps in general, see `Hybrid Apps https://docs.digital.ai/bundle/app-management/page/10403643738.html>`_.
Sending Files
When you send a file via the API, whether it’s an app’s binary file or a custom icon for a public app, you need to use the
multipart/form-data
content type header concept. The correct syntax for providing a multipart/form-data content type is different depending on what tool you’re using.For example, using cURL, a request to add a public app might look like this:
curl -X POST https://<server>/applications/ --header "Content-Type: application/json" --header "X-Token: <token>" --data '{"url": "<public_store_url>", "app_name":"My New Application", "short_description":"This is the short description."}'
However, because adding a native app requires a file, the request should look something like this:
curl -X POST https://<server>/applications/ --header "X-Token: <token>" -F 'app_file=@MyNewApp.ipa' -F 'data={ "app_name":"My New Application", "short_description":"This is the short description." }`
The native app example includes two lines that start with
-F
, which indicates that they are parts of a form. Most frameworks will interpret the-F
and automatically understand that you are using the multipart/form-data content type. You do not need to specify it using aContent-Type: multipart/form-data
header parameter.If you want to include a custom icon when adding a public store app, replace
'app_file=
withicon_file=
. For example,'icon_file=@my_icon.png'
.URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/ Europe https://eu01ws.apperian.eu/v1/applications/ Header Parameters
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
- Files
This endpoint also accepts a multipart request with accompanying file(s).
(Optional)
app_file
Include this file when adding a new native app.(Optional)
icon_file
Include this file when associating a custom icon with a public store app. The file must be in PNG (.png
) or JPEG (.jpg
) format.- Content-Type
- (Required) Use
application/json
to identify that the data is being sent in JSON format. - Data Parameters
- For an overview of accepted fields and how to use them, see Common App Data.
- groups
- This field is only required when the API user has the Developer role. Developers must assign apps to at least one group that they are a member of. When this field is included, it must be a list (for example, [<id>, <id>, …]).
Example Requests and Responses
Add a native app
The following example request creates a new iOS app with the provided app file (
MyApp.ipa
) and sets a custom value for some fields. The process is exactly the same when adding an Android app.Note that this example uses the multipart/form-data concept, which is necessary when providing a file.
curl -X POST https://na01ws.apperian.com/v1/applications/ --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A" -F 'app_file=@MyApp.ipa' -F 'data={ "version_num": "1.2", "version_note": "The completely patched first installment!" "short_description": "Install this game for some coffee break fun!", "long_description": "Not just for coffee breaks, this game is challenging and immersive" }'
If the request is successful, the response is an application object in JSON form.
{ "application": { "url_scheme": null, "id": "DzCbyyTyl_cner0hvbmRSA", "is_adhoc": false, "is_hybrid": false, "required_by": "9999-12-31T23:59:59.999999+00:00", "push_enabled": false, "reviews_enabled": true, "latest_version_id": "xYGI30YLRZALvL4PBA13RA", "type": 0, "status": 0, "sort_weight": 1000, "no_auth_delivery_enabled": false, "add_to_start": false, "bundle_id": "com.apperian.Actions", "banner_image_url": null, "operating_system": 1, "required": false, "enabled": false, "required_by_group": false, "is_app_catalog": false, "version": { "app_name": "My favorite app v2", "sign_status": 0, "app_id": "DzCbyyTyl_cner0hvbmRSA", "form_factor": 0, "wrap_status": 0, "long_description": "Not just for coffee breaks, this game is challenging and immersive", "author": "the_admin@my_company.com", "id": "xYGI30YLRZALvL4PBA13RA", "required_by": "9999-12-31T23:59:59.999999+00:00", "short_description": "Install this game for some coffee break fun!", "kryptowire_verification_status": 0, "version_note": "The completely patched first installment!", "binary_version": null, "icon_path": "org_14/iphone_199/version_242/Actions_57.png", "custom_metadata": null, "min_os_version": null, "notify_users": true, "version_num": "1.2", "release_date": "2018-05-07T19:05:13.707781+00:00", "required": false, "latest_install_file_id": "oHhH9eTRqsvMH9jyKtogyA", "install_file": { "apperian_wrapper_version": null, "kryptowire_verification_id": null, "sign_credentials_id": null, "checksum": null, "expires": "2017-07-22T15:13:37+00:00", "app_id": "DzCbyyTyl_cner0hvbmRSA", "version_id": "xYGI30YLRZALvL4PBA13RA", "created": "2018-05-07T19:05:13.712813+00:00", "mime": null, "action": "upload", "path": "org_14/iphone_199/version_242/Actions.ipa", "id": "oHhH9eTRqsvMH9jyKtogyA", "size": 294057, "binary_metadata": { "is_cordova": false "profile": { "DeveloperCertificates": null, "Name": "Profile Name", "architectures": [32], "TeamIdentifier": ["3DT8ND2DH5"], "ExpirationDate": 1500750817, "AppIDName": "Profile Name", "ApplicationIdentifierPrefix": ["3NFOWEK6K19"], "Platform": ["iOS"], "ProvisionsAllDevices": true, "Version": 1, "TimeToLive": 365, "TeamName": "ExampleTeam", "Entitlements": { "get-task-allow": false, "application-identifier": "3NFOWEK6K19.com.apperian.Actions", "keychain-access-groups": ["3NFOWEK6K19.*"], "com.apple.developer.networking.vpn.api": ["allow-vpn"], "com.apple.developer.team-identifier": "3DT8ND2DH5" }, "CreationDate": 1469214817, "UUID": "d0a0112e-fd91-4155-9ca5-f315d8150fa4" }, "signables_info": [ { "bundle_id": "com.apperian.Actions", "type": 1, "name": "Actions", "provisioning_profile": { "DeveloperCertificates": null, "Name": "Actions demo", "TeamIdentifier": ["3DT8ND2DH5"], "ExpirationDate": 1500750817, "AppIDName": "Actions demo", "ApplicationIdentifierPrefix": ["3NFOWEK6K19"], "Platform": ["iOS"], "ProvisionsAllDevices": true, "Version": 1, "TimeToLive": 365, "TeamName": "ExampleTeam", "Entitlements": { "get-task-allow": false, "application-identifier": "3NFOWEK6K19.com.apperian.Actions", "keychain-access-groups": ["3NFOWEK6K19.*"], "com.apple.developer.networking.vpn.api": ["allow-vpn"], "com.apple.developer.team-identifier": "3DT8ND2DH5" }, "CreationDate": 1469214817, "UUID": "d0a0112e-fd91-4155-9ca5-f315d8150fa4" } } ], "plist": { "CFBundleInfoDictionaryVersion": "6.0", "DTXcodeBuild": "5B1008", "CFBundleSupportedPlatforms": ["iPhoneOS"], "CFBundleIdentifier": "com.apperian.Actions", "CFBundleResourceSpecification": "ResourceRules.plist", "DTSDKName": "iphoneos7.1", "DTSDKBuild": "11D167", "CFBundleDisplayName": "Actions", "BuildMachineOSBuild": "14F27", "ApperianVersionPsk": 361, "CFBundleExecutable": "Actions", "MinimumOSVersion": "7.1", "ApperianInstallFilePsk": 434, "CFBundleVersion": "2.0", "CFBundleIconFile": "Actions_57.png", "UIDeviceFamily": [1], "DTPlatformBuild": "11D167", "NSMainNibFile": "MainWindow", "DTXcode": "0511", "CFBundleDevelopmentRegion": "English", "UIStatusBarStyle": "UIStatusBarStyleOpaqueBlack", "DTPlatformName": "iphoneos", "ApperianCloakedEasePsk": "nPel942e3vqzzJ0AoVQ-Gw", "DTCompiler": "com.apple.compilers.llvm.clang.1_0", "CFBundleSignature": "????", "LSRequiresIPhoneOS": true, "DTPlatformVersion": "7.1", "CFBundleName": "Actions", "CFBundlePackageType": "APPL", "ApperianEasePsk": "181", "CFBundleURLTypes": [ { "CFBundleURLName": "com.apperian.ease.urlscheme", "CFBundleURLSchemes": [ "eas181" ] } ] } } } } }, "warnings": [ { "message": "This 32-bit application must be updated to 64-bit or it will not work with iOS 11...", "error": "arch_32_bits" } ] }
Add a public app store app
This example request creates a Google Play app in Apperian, and sets an additional data parameter called
short_description
. The value from this field overrides the store’s default description when the app is created. This is optional, but the concept also extends to all fields listed in Common App Data.curl -X POST https://na01ws.apperian.com/v1/applications/ --header "Content-Type: application/json" --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A" --data '{"url": "https://play.google.com/store/apps/details?id=com.willshiresgames.knights", "short_description": "Install this game for some coffee break fun!"}'
If the request is successful, the response is an application object in JSON form.
- If you do not define an
-
POST
/v1/applications/
(application)¶ Create a New Version of an Application.
Authenticate as an Apperian administrator, app manager, or developer.
Adds a new version to an existing app. This is useful when you have a new version of a binary to publish, or if you need to refresh an app’s metadata from the public app store.
This endpoint’s interface is nearly identical to that of POST /v1/applications/, except that this endpoint creates a new version of an existing app.
In addition to all of the data parameters supported by POST /v1/applications/, this endpoint also accepts
required_by
andnotify_users
, which are meaningful only when creating a new version of an existing app. For more information, see Common App Data.Rebuild a Hybrid App
While you can update the common app data of a hybrid app (
app_name
,enabled
, etc.) using PUT /v2/applications/<application> just like any other app, if you want to make changes to the fields within the hybrid object you must rebuild the hybrid app using this endpoint.Note
If you want to change a hybrid app’s icon at any point after creation, you must use this endpoint to rebuild the app and provide an
icon_file
in the request. If you don’t include an icon, the rebuilt app will reuse the current icon rather than reverting to the default.The only requirement for rebuilding a hybrid app is the hybrid object, which can be empty. This would be useful, for example, if you want to simply update the hybrid app with the latest native code.
URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/<application> Europe https://eu01ws.apperian.eu/v1/applications/<application> URL Parameters
- application
- (Required) Unique ID for the app. DATA TYPE: string
Header Parameters
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
- Files
This endpoint also accepts a multipart request with accompanying file(s).
(Optional)
app_file
Include this file when adding a new native app.(Optional)
icon_file
Include this file when associating a custom icon with a public store app.- Content-Type
- (Required) Use
application/json
to identify that the data is being sent in JSON format. - Data Parameters
- For an overview of accepted fields and how to use them, see Common App Data.
- groups
- This field is only required when the API user has the Developer role. Developers must assign apps to at least one group that they are a member of. When this field is included, it must be a list (for example, [<id>, <id>, …]).
Example Requests and Responses
Create a new version of a native app
The following request will create a new version of an iOS app with the provided app file (
MyApp.ipa
), and sets theversion_num
andversion_note
fields with custom values. The process is the same for an Android app.Note that this example uses the multipart/form-data concept, which is necessary when providing a file.
curl -X POST https://na01ws.apperian.com/v1/applications/DzCbyyTyl_cner0hvbmRSA --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A" -F 'app_file=@MyApp.ipa' -F 'data={ "version_num": "1.3", "version_note": "The completely patched first installment!" }'
If the request is successful, the response is an application object in JSON form.
{ "application": { "url_scheme": null, "id": "DzCbyyTyl_cner0hvbmRSA", "is_adhoc": false, "is_hybrid": false, "required_by": "9999-12-31T23:59:59.999999+00:00", "push_enabled": false, "reviews_enabled": true, "latest_version_id": "xYGI30YLRZALvL4PBA13RA", "type": 0, "status": 0, "sort_weight": 1000, "no_auth_delivery_enabled": false, "add_to_start": false, "bundle_id": "com.apperian.Actions", "banner_image_url": null, "operating_system": 1, "required": false, "enabled": false, "required_by_group": false, "is_app_catalog": false, "version": { "app_name": "My favorite app v2", "sign_status": 0, "app_id": "DzCbyyTyl_cner0hvbmRSA", "form_factor": 0, "wrap_status": 0, "long_description": "Not just for coffee breaks, this game is challenging and immersive", "author": "the_admin@my_company.com", "id": "xYGI30YLRZALvL4PBA13RA", "required_by": "9999-12-31T23:59:59.999999+00:00", "short_description": "Install this game for some coffee break fun!", "kryptowire_verification_status": 0, "version_note": "The completely patched first installment!", "binary_version": null, "icon_path": "org_14/iphone_199/version_242/Actions_57.png", "custom_metadata": null, "min_os_version": null, "notify_users": true, "version_num": "1.3", "release_date": "2018-05-07T19:05:13.707781+00:00", "required": false, "latest_install_file_id": "oHhH9eTRqsvMH9jyKtogyA", "install_file": { "apperian_wrapper_version": null, "kryptowire_verification_id": null, "sign_credentials_id": null, "checksum": null, "expires": "2017-07-22T15:13:37+00:00", "app_id": "DzCbyyTyl_cner0hvbmRSA", "version_id": "xYGI30YLRZALvL4PBA13RA", "created": "2018-05-07T19:05:13.712813+00:00", "mime": null, "action": "upload", "path": "org_14/iphone_199/version_242/Actions.ipa", "id": "oHhH9eTRqsvMH9jyKtogyA", "size": 294057, "binary_metadata": { "is_cordova": false "profile": { "DeveloperCertificates": null, "Name": "Profile Name", "architectures": [32], "TeamIdentifier": ["3DT8ND2DH5"], "ExpirationDate": 1500750817, "AppIDName": "Profile Name", "ApplicationIdentifierPrefix": ["3NFOWEK6K19"], "Platform": ["iOS"], "ProvisionsAllDevices": true, "Version": 1, "TimeToLive": 365, "TeamName": "ExampleTeam", "Entitlements": { "get-task-allow": false, "application-identifier": "3NFOWEK6K19.com.apperian.Actions", "keychain-access-groups": ["3NFOWEK6K19.*"], "com.apple.developer.networking.vpn.api": ["allow-vpn"], "com.apple.developer.team-identifier": "3DT8ND2DH5" }, "CreationDate": 1469214817, "UUID": "d0a0112e-fd91-4155-9ca5-f315d8150fa4" }, "signables_info": [ { "bundle_id": "com.apperian.Actions", "type": 1, "name": "Actions", "provisioning_profile": { "DeveloperCertificates": null, "Name": "Actions demo", "TeamIdentifier": ["3DT8ND2DH5"], "ExpirationDate": 1500750817, "AppIDName": "Actions demo", "ApplicationIdentifierPrefix": ["3NFOWEK6K19"], "Platform": ["iOS"], "ProvisionsAllDevices": true, "Version": 1, "TimeToLive": 365, "TeamName": "ExampleTeam", "Entitlements": { "get-task-allow": false, "application-identifier": "3NFOWEK6K19.com.apperian.Actions", "keychain-access-groups": ["3NFOWEK6K19.*"], "com.apple.developer.networking.vpn.api": ["allow-vpn"], "com.apple.developer.team-identifier": "3DT8ND2DH5" }, "CreationDate": 1469214817, "UUID": "d0a0112e-fd91-4155-9ca5-f315d8150fa4" } } ], "plist": { "CFBundleInfoDictionaryVersion": "6.0", "DTXcodeBuild": "5B1008", "CFBundleSupportedPlatforms": ["iPhoneOS"], "CFBundleIdentifier": "com.apperian.Actions", "CFBundleResourceSpecification": "ResourceRules.plist", "DTSDKName": "iphoneos7.1", "DTSDKBuild": "11D167", "CFBundleDisplayName": "Actions", "BuildMachineOSBuild": "14F27", "ApperianVersionPsk": 361, "CFBundleExecutable": "Actions", "MinimumOSVersion": "7.1", "ApperianInstallFilePsk": 434, "CFBundleVersion": "2.0", "CFBundleIconFile": "Actions_57.png", "UIDeviceFamily": [1], "DTPlatformBuild": "11D167", "NSMainNibFile": "MainWindow", "DTXcode": "0511", "CFBundleDevelopmentRegion": "English", "UIStatusBarStyle": "UIStatusBarStyleOpaqueBlack", "DTPlatformName": "iphoneos", "ApperianCloakedEasePsk": "nPel942e3vqzzJ0AoVQ-Gw", "DTCompiler": "com.apple.compilers.llvm.clang.1_0", "CFBundleSignature": "????", "LSRequiresIPhoneOS": true, "DTPlatformVersion": "7.1", "CFBundleName": "Actions", "CFBundlePackageType": "APPL", "ApperianEasePsk": "181", "CFBundleURLTypes": [ { "CFBundleURLName": "com.apperian.ease.urlscheme", "CFBundleURLSchemes": [ "eas181" ] } ] } } } } }, "warnings": [ { "message": "This 32-bit application must be updated to 64-bit or it will not work with iOS 11...", "error": "arch_32_bits" } ] }
Create a new version of a Google Play app while refreshing its data from the store
The following request creates a new version of the app and sets all metadata according to its current state in the public app store.
curl -X POST https://na01ws.apperian.com/v1/applications/66RU9BR5QA4cmvIsv-AlFw --data '{"url": "https://play.google.com/store/apps/details?id=com.willshiresgames.knights"}' --header "Content-Type: application/json" --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
If the request is successful, the response is an application object in JSON form.
Rebuild a hybrid app
The following request rebuilds the specified hybrid app to change one hybrid option and change the app’s name.
curl -X POST https://na01ws.apperian.com/v1/applications/nV-nTom0tWbHY37ECoNyEQ -H 'Content-Type: application/json' -H 'X-TOKEN: 3JA9mNPVTIOFr2e5m6TljA' -d '{ "hybrid": { "show_navbar": true }, "app_name": "Google Search" }'
If the request is successful, the response is an application object in JSON form. The hybrid object is nested within the app’s
binary_metadata
object.
-
PUT
/v2/applications/
(application)/
¶ Update an Application
Authenticate as an Apperian administrator, app manager, or developer.
Update an app in your organization without creating a new version. This is useful for changing metadata about an app, or uploading a new icon. Specify the app to be updated with its unique identifier in the URL. The
<application>
is returned asid
from every endpoint that returns data about an app.If you submit an entire application object, the service understands which fields were changed, and will only update those modified fields.
Upload a new Icon
You can use this resource to upload an icon that will display for the app in both the App Catalog and the Applications page in the Admin Portal. This icon can be different than the icon bundled with the app binary. For example, you can upload an icon with a “NEW” or “IMPROVED” sticker to draw your users’ attention to a particular app in the catalog.
Note
Regardless of the icon uploaded to Apperian, the icon bundled with the app binary is the image that appears on the device after the app is installed.
Send the icon using multipart/form-data type, just as you would when adding an app file or icon using POST /v1/applications. See the Upload an Icon example later in this section for more information.
Apperian supports PNG (
.png
) and JPEG (.jpg
but not.jpeg
) file formats. The image should be a minimum of 114 x 114 pixels.Note
To update an icon for a hybrid app, use POST /applications/<application>.
URLs
Environment URL North America https://na01ws.apperian.com/v2/applications/<application> Europe https://eu01ws.apperian.eu/v2/applications/<application> URL Parameters
- application
- (Required) Unique ID for the app. DATA TYPE: string
Header Parameters
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
- Files
This endpoint also accepts a multipart request with accompanying file(s).
(Optional)
icon_file
Include this file when uploading a new icon. The file must be in PNG (.png
) or JPEG (.jpg
) format.- Content-Type
- (Required) Use
application/json
to identify that the data is being sent in JSON format. - Data Parameters
- For an overview of accepted fields and how to use them, see Common App Data.
- groups
- This field is only required when the API user has the Developer role. Developers must assign apps to at least one group that they are a member of. When this field is included, it must be a list (for example, [<id>, <id>, …]).
Example Requests and Responses
Disable an app
The following request disables an app in your organization.
curl -X PUT https://na01ws.apperian.com/v1/applications/iK_IGgYBkTXBHkXT1GVVeQ --data '{"enabled": false}' --header "Content-Type: application/json" --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
If the request is successful the response is an application object. In this case, you can see that the returned app is disabled because the
enabled
field’s value isfalse
.{ "application": { "id": "66RU9BR5QA4cmvIsv-AlFw", "latest_version_id": "3ymkiEqFAAve0FA_s3ZGtQ", "enabled": false, "is_adhoc": false, "is_hybrid": false, "required_by": "2019-04-02T17:16:14.134652+00:00", "push_enabled": false, "reviews_enabled": false, "type": 5, "status": 1, "sort_weight": 1000, "no_auth_delivery_enabled": false, "add_to_start": false, "bundle_id": "com.willshiresgames.knights", "banner_image_url": null, "operating_system": 100, "required": false, "required_by_group": false, "is_app_catalog": false, "url_scheme": null, "version": { "id": "3ymkiEqFAAve0FA_s3ZGtQ", "latest_install_file_id": "zwOwONrtaVMVHduIpHU2XA", "app_id": "66RU9BR5QA4cmvIsv-AlFw", "app_name": "Knights Errant", "sign_status": 0, "form_factor": 3, "wrap_status": 0, "long_description": "Take on the role of a wandering knight! Travel the countryside and rid the world of evil, one quest at a time. Slay dragons, save damsels, and save the world!", "author": "Willshire Games", "required_by": "0001-01-01T00:00:00+00:00", "short_description": "Slay dragons, save damsels, and save the world!", "kryptowire_verification_status": 0, "version_note": "* Various bug fixes and smaller improvements", "binary_version": null, "icon_path": "org_2/android_market_91/version_123/com.willshiresgames.knights_icon.png", "custom_metadata": null, "min_os_version": "4.4", "notify_users": true, "version_num": "1.11.3", "release_date": "2018-04-02T17:16:14.144500+00:00", "required": false, "install_file": { "id": "zwOwONrtaVMVHduIpHU2XA", "app_id": "66RU9BR5QA4cmvIsv-AlFw", "version_id": "3ymkiEqFAAve0FA_s3ZGtQ", "apperian_wrapper_version": null, "kryptowire_verification_id": null, "sign_credentials_id": null, "checksum": null, "expires": "9999-12-31T23:59:59.999999+00:00", "created": "2018-04-02T17:16:14.160752+00:00", "mime": "", "binary_metadata": null, "action": null, "path": "https://play.google.com/store/apps/details?id=com.willshiresgames.knights", "size": 0 } } }, "warnings": [] }
Specify custom metadata
The following request sends four custom metadata fields.
curl -X PUT https://na01ws.apperian.com/v1/applications/iK_IGgYBkTXBHkXT1GVVeQ --data '{"custom_metadata": {"category": "RPG", "multiplayer": "No", "language": "English", "website": "www.willshiregames.com"}}' --header "Content-Type: application/json" --header "X-TOKEN: zH2syg3cSmip4EU5Md8a1A"
When the custom metadata is successfully stored in the Apperian database, the app in the response reflects this in its
custom_metadata
field."application": { "id": "66RU9BR5QA4cmvIsv-AlFw", "latest_version_id": "3ymkiEqFAAve0FA_s3ZGtQ", "enabled": true, "is_adhoc": false, "is_hybrid": false, "required_by": "2019-04-02T17:16:14.134652+00:00", "push_enabled": false, "reviews_enabled": false, "type": 5, "status": 1, "sort_weight": 1000, "no_auth_delivery_enabled": false, "add_to_start": false, "bundle_id": "com.willshiresgames.knights", "banner_image_url": null, "operating_system": 100, "required": false, "required_by_group": false, "is_app_catalog": false, "url_scheme": null, "version": { "id": "3ymkiEqFAAve0FA_s3ZGtQ", "latest_install_file_id": "zwOwONrtaVMVHduIpHU2XA", "app_id": "66RU9BR5QA4cmvIsv-AlFw", "app_name": "Knights Errant", "sign_status": 0, "form_factor": 3, "wrap_status": 0, "long_description": "Take on the role of a wandering knight! Travel the countryside and rid the world of evil, one quest at a time. Slay dragons, save damsels, and save the world!", "author": "Willshire Games", "required_by": "0001-01-01T00:00:00+00:00", "short_description": "Install this game for some coffee break fun!", "kryptowire_verification_status": 0, "version_note": "* Various bug fixes and smaller improvements", "binary_version": null, "icon_path": "org_2/android_market_91/version_123/com.willshiresgames.knights_icon.png", "custom_metadata": "custom_metadata": { "category": "RPG", "multiplayer": "No", "language": "English", "website": "www.willshiregames.com" }, "min_os_version": "4.4", "notify_users": true, "version_num": "1.11.3", "release_date": "2018-04-02T17:16:14.144500+00:00", "required": false, "install_file": { "id": "zwOwONrtaVMVHduIpHU2XA", "app_id": "66RU9BR5QA4cmvIsv-AlFw", "version_id": "3ymkiEqFAAve0FA_s3ZGtQ", "apperian_wrapper_version": null, "kryptowire_verification_id": null, "sign_credentials_id": null, "checksum": null, "expires": "9999-12-31T23:59:59.999999+00:00", "created": "2018-04-02T17:16:14.160752+00:00", "mime": "", "binary_metadata": null, "action": null, "path": "https://play.google.com/store/apps/details?id=com.smallgiantgames.empires", "size": 0 } } }
Upload a New Icon
The following request uploads a new icon for an app.
curl -X PUT https://na01ws.apperian.com/v1/applications/iK_IGgYBkTXBHkXT1GVVeQ -F 'icon_file=@my_icon.png' --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
If the request is successful the response is an application object. In this case, you can see that the
icon_path
now shows themy_icon.png
file.{ "application": { "id": "66RU9BR5QA4cmvIsv-AlFw", "latest_version_id": "3ymkiEqFAAve0FA_s3ZGtQ", "enabled": false, "is_adhoc": false, "is_hybrid": false, "required_by": "2019-04-02T17:16:14.134652+00:00", "push_enabled": false, "reviews_enabled": false, "type": 5, "status": 1, "sort_weight": 1000, "no_auth_delivery_enabled": false, "add_to_start": false, "bundle_id": "com.willshiresgames.knights", "banner_image_url": null, "operating_system": 100, "required": false, "required_by_group": false, "is_app_catalog": false, "url_scheme": null, "version": { "id": "3ymkiEqFAAve0FA_s3ZGtQ", "latest_install_file_id": "zwOwONrtaVMVHduIpHU2XA", "app_id": "66RU9BR5QA4cmvIsv-AlFw", "app_name": "Knights Errant", "sign_status": 0, "form_factor": 3, "wrap_status": 0, "long_description": "Take on the role of a wandering knight! Travel the countryside and rid the world of evil, one quest at a time. Slay dragons, save damsels, and save the world!", "author": "Willshire Games", "required_by": "0001-01-01T00:00:00+00:00", "short_description": "Slay dragons, save damsels, and save the world!", "kryptowire_verification_status": 0, "version_note": "* Various bug fixes and smaller improvements", "binary_version": null, "icon_path": "org_2/android_market_91/version_123/my_icon.png", "custom_metadata": null, "min_os_version": "4.4", "notify_users": true, "version_num": "1.11.3", "release_date": "2018-04-02T17:16:14.144500+00:00", "required": false, "install_file": { "id": "zwOwONrtaVMVHduIpHU2XA", "app_id": "66RU9BR5QA4cmvIsv-AlFw", "version_id": "3ymkiEqFAAve0FA_s3ZGtQ", "apperian_wrapper_version": null, "kryptowire_verification_id": null, "sign_credentials_id": null, "checksum": null, "expires": "9999-12-31T23:59:59.999999+00:00", "created": "2018-04-02T17:16:14.160752+00:00", "mime": "", "binary_metadata": null, "action": null, "path": "https://play.google.com/store/apps/details?id=com.willshiresgames.knights", "size": 0 } } }, "warnings": [] }
-
PUT
/v1/applications/
(application)/
¶ Update Application (Enable/Disable or Specify Custom Metadata)
Requires administrator privileges. Authenticate as an Apperian administrator.
Attention
There is a newer and improved version of this resource available: PUT /v2/applications/<application>/. This v1 version will be deprecated eventually; you should modify your code to use the latest V2 version. If you have any questions, contact support@arxan.com.
Use this API to enable/disable an application in your organization, or to specify custom metadata about an application. Specify the app with app_psk. The app_psk for each app in your organization is included in the data returned by the GET /applications resource.
Enable or Disable an Application
When the application is enabled-or “published”-it means that users who are members of the groups assigned to that app will have access to it in the App Catalog. You should not enable an app until it is ready for users to install. For example, do not enable an app that was wrapped but has not yet been re-signed. You may wish to disable an app if you plan to inspect it, apply policies to it, or sign it before making it available to users. For more information on the implications of disabling an app in Apperian, see Disabled App Behavior.
Specify Custom Metadata for an Application
When you add an application to Apperian using the publishing API, you specify standard application metadata, such as name, version, and description. Using this API, you can specify additional custom metadata that is unique and meaningful to your business. For example, say your organization is a university and you manage multiple apps for students and faculty. You can use custom metadata to associate custom metadata for School, Major, Year of Study, Campus, and so on.
Note
You can view an application’s custom metadata in the Admin Portal only if you define a Custom Metadata Template for your organization on the Settings page. For instructions, see Define a Custom Metadata Template. Note that defining a Custom Metadata Template enables you to add/edit/view custom metadata in the Admin Portal, but it is not required to send/receive custom metadata through the API.
Enable or Disable Application Reviews
When you add an application to Apperian using the publishing API, whether the Reviews feature is enabled for the app will depend on the default setting for your organization. Using this API, you can override that default to enable/disable Reviews. When the Reviews feature is enabled for an application, your App Catalog users have the option to Like/Dislike (rate) the app, review the app, and browse reviews written by other catalog users. When the Reviews feature is disabled for an application, the Like/Dislike buttons are hidden and the Reviews tab is grayed out.
For more information on the Reviews feature, see App Ratings and Reviews. For instructions on changing the Application Reviews default setting, see Change the Application Reviews Default Setting.
URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/<application> Europe https://eu01ws.apperian.eu/v1/applications/<application> URL Parameters
- application
- (Required) Unique ID for the app. DATA TYPE: string
Header Parameter
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
- Content-Type
- (Required) Specifies the content type of the body of data sent with the request. Set to:
application/json
Data Parameters
- enabled
- (Required if enabling/disabling the app) Set to
true
to enable the application. Set tofalse
to disable the application. - custom_metadata
(Required if sending custom metadata) An array of name-value pairs for the custom metadata field that will be stored in the Apperian database. If you are matching a data object defined in a custom metadata template for your organization, be sure to enter the id (not the label) of the JSON data object exactly as it is defined in the template. For example:
"city": "Boston"
Separate each metadata field with a comma and enclose all the metadata fields with brackets. For example:
{"custom_metadata": {"city": "Boston", "firstname": "Diane", "lastname": "Harrelson", "restaurants":
"Cheers,Vips"}
- reviews_enabled
(Optional) Set to
true
to enable users to rate (Like/Dislike) and review the application in the App Catalog.Set to
false
to prohibit users from rating and review the application in the App Catalog. In the App Catalog, the Like/Dislike buttons will be hidden and the Reviews tab will be grayed out for the application.Note that you can enable/disable reviews for any application type except Windows Phone apps.
Example Requests and Responses
Disable an Application
The following request disables an application.
curl -X PUT https://na01ws.apperian.com/v1/applications/123 --data '{"enabled": false}' --header "Content-Type: application/json" --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
If the request is successful, whether enabling or disabling the app, the response is
true
.{ "update_application_result": true }
Specify Custom Metadata
The following request sends four custom metadata fields.
curl -X PUT https://na01ws.apperian.com/v1/applications/123 --data '{"custom_metadata": {"city": "Boston", "firstname": "Diane", "restaurants": "Cheers,Vips"}}' --header "Content-Type: application/json" --header "X-TOKEN: zH2syg3cSmip4EU5Md8a1A"
When the custom metadata is successfully stored in the Apperian database, the response indicates
true
.{ "update_application_result": true }
Disable Application Reviews
The following request disables the Reviews feature for the application. In the App Catalog, the Like/Dislike buttons will be hidden and the Reviews tab will be grayed out for the application.
curl -X PUT https://na01ws.apperian.com/v1/applications/123 --data '{"reviews_enabled": false}' --header "Content-Type: application/json" --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
If the request is successful, whether enabling or disabling the app, the response is true.
{ "update_application_result": true }
-
DELETE
/v1/applications/
(application)/
¶ Delete Application
Requires user context. Authenticate as a valid Apperian user.
Deletes a specific app from your Apperian organization so that it is no longer available in any of your users’ App Catalogs or available for any user to download with a Direct Install link.
Specify the app with application. The application for each app in your organization is included in the data returned by the GET /applications resource.
URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/<application> Europe https://eu01ws.apperian.eu/v1/applications/<application> URL Parameters
- application
- (Required) Unique ID assigned by Apperian to the app. DATA TYPE: string
Header Parameter
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
Data Parameters
None
Example Request
curl -X DELETE https://na01ws.apperian.com/v1/applications/22735 --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
Example Response
This response indicates that the application was successfully deleted.
{ "deleted_application": 22735 }
This response indicates that the application could not be deleted because the authenticated user does not have access to the specified application.
{ "error": { "code": 11, "message": "User is not allowed to access resource id 2735", "guid": "75789468-c488-4bae-864f-0eb29f9079de", "error_details": null } }
-
GET
/v2/applications/
¶ List All Applications
Requires user context. Authenticate as a valid Apperian user.
Returns data about all the native applications stored in the Apperian database for the authenticated user’s organization. To identify whether an application is enabled, look at the value of the
status
parameter in the response:0
indicates disabled;1
indicates enabled.Note
For each application, the response includes a direct_download_binary_url field. Send a GET request to the URL provided in that field to download the app’s binary file. For more information, see GET /downloads/direct/applications/<application>.
URLs
Environment URL North America https://na01ws.apperian.com/v2/applications/ Europe https://eu01ws.apperian.eu/v2/applications/ URL Parameters
When you send a GET request to this resource, you can specify URL parameters to search, sort, and paginate the JSON data returned in the response. For more information, see Controlling GET Responses.
Header Parameter
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
Data Parameters
None
Example Request
curl -X GET https://na01ws.apperian.com/v2/applications/ --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
Example Response
This example shows a portion of the response. With the
status
parameter,0
indicates disabled;1
indicates enabled.{ "applications": [ { "operating_system": 1, "url_scheme": "", "is_adhoc": false, "is_hybrid": false, "required_by": "3099-12-31T00:00:00+00:00", "is_app_catalog": false, "latest_version_id": "Qll-img_ThVgPUS9hRS4Yw", "version": { "id": "Qll-img_ThVgPUS9hRS4Yw", "version_note": "This is the newest version!", "version_num": "2.0", "form_factor": 3, "long_description": "Get organized! Use this app to manage your TO DO list.", "latest_install_file_id": "Qll-img_ThVgPUS9hRS4Yw", "release_date": "2016-03-22T13:42:03.678841+00:00", "required": false, "required_by": "9999-12-31T23:59:59.999999", "icon_path": "org_11/iphone_75/Actions_57.png", "app_id": "Qll-img_ThVgPUS9hRS4Yw", "wrap_status": 2, "custom_metadata": null, "min_os_version": "7.1", "sign_status": 0, "short_description": "Manage your TO DO list", "kryptowire_verification_status": 0, "notify_users": false, "app_name": "Actions", "install_file": { "apperian_wrapper_version": 17, "kryptowire_verification_id": null, "app_id": "Qll-img_ThVgPUS9hRS4Yw", "size": 965423, "id": "Qll-img_ThVgPUS9hRS4Yw", "expires": null, "mime": "application/itunes+zip", "path": "org_2/android_4/Actions.apk", "created": "2016-03-22T14:04:12.120484+00:00", "version_id": "Qll-img_ThVgPUS9hRS4Yw", "checksum": null, "sign_credentials_id": null, "action": "wrap", "binary_metadata": null } }, "reviews_enabled": true, "type": 0, "status": 0, "id": "Qll-img_ThVgPUS9hRS4Yw", "sort_weight": 1000, "no_auth_delivery_enabled": true, "add_to_start": false, "bundle_id": "com.apperian.Actions", "banner_image_url": null, "categories": [ { "constant": "COMPANY", "name": "Company Wide", "icon_path": "/icons/categories/company_wide.png", "description": "", "id": "XTBEV_SGPlI0oI8ozGTh0A", "org_id": "Ynm4meEuG4HOIOu7zwtC3A" } ], "direct_download_binary_url": "https://na01ws.apperian.com/v1/downloads/direct/applications/8f92x99Kw8qfHxeDkcK8fA", "required": false, "push_enabled": false }, { "operating_system": 102, "url_scheme": "", "is_adhoc": false, "is_hybrid": false, "required_by": "9999-12-31T23:59:59.999999", "is_app_catalog": false, "version": { "id": "Qll-img_ThVgPUS9hRS4Yw", "description": "The latest version", "version_num": "1.0", "form_factor": 3, "long_description": "Access all things related to Example Company benefits.", "latest_install_file_id": "Qll-img_ThVgPUS9hRS4Yw", "release_date": "2016-03-22T15:24:13.668336+00:00", "short_description": "Example Company Benefits", "required": false, "required_by": "9999-12-31T23:59:59.999999", "app_id": "Qll-img_ThVgPUS9hRS4Yw", "wrap_status": 1, "custom_metadata": null, "icon_path": "org_11/android_76/appicon.png", "sign_status": 0, "min_os_version": "3", "kryptowire_verification_status": 0, "notify_users": true, "app_name": "Benefits", "install_file": { "apperian_wrapper_version": 20, "kryptowire_verification_id": null, "app_id": "Qll-img_ThVgPUS9hRS4Yw", "size": 2649824, "id": "Qll-img_ThVgPUS9hRS4Yw", "expires": null, "mime": "application/vnd.android.package-archive", "created": "2016-03-22T18:14:16.418391+00:00", "version_id": "Qll-img_ThVgPUS9hRS4Yw", "checksum": "e16f266dcdbf600acd53f7a2bf55babe1d36c896a7c8e4c687a2d012bf6dd297", "sign_credentials_id": null, "action": "sign_with_package", "binary_metadata": null } }, "reviews_enabled": true, "type": 3, "status": 0, "id": "Qll-img_ThVgPUS9hRS4Yw", "sort_weight": 1000, "no_auth_delivery_enabled": true, "add_to_start": false, "bundle_id": "com.example.benefits", "banner_image_url": null, "categories": [ { "constant": "COMPANY", "name": "Company Wide", "icon_path": "/icons/categories/company_wide.png", "description": "" "id": "XTBEV_SGPlI0oI8ozGTh0A", "org_id": "Ynm4meEuG4HOIOu7zwtC3A" } ], "direct_download_binary_url": "https://na01ws.apperian.com/v1/downloads/direct/applications/6fCatAVv29awTRDAudfL0A", "required": false, "push_enabled": false } ], "total_available": 2 }
-
GET
/v2/applications/app_catalogs/
¶ List App Catalog Data
Requires user context. Authenticate as a valid Apperian user.
Returns data about all the App Catalogs in the authenticated user’s organization. This resource is similar to the GET /applications/ resource, except that it returns data on App Catalogs only.
URLs
Environment URL North America https://na01ws.apperian.com/v2/applications/app_catalogs/ Europe https://eu01ws.apperian.eu/v2/applications/app_catalogs/ URL Parameters
None
Header Parameters
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
Data Parameters
None
Example Request
curl -X GET https://na01ws.apperian.com/v2/applications/app_catalogs/ --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
Example Response
The following example shows the portion of the response that lists data for the iOS App Catalog in the user’s organization.
{ "app_catalogs": [ { "add_to_start": false, "banner_image_url": "", "bundle_id": "com.apperian.appcatalog", "direct_download_binary_url": "https://na.apperian.com/v1/downloads/direct/applications/AN2Tdx54tQ", "id": "AN2TTLCbhdHl_M1aNJ4ltQ", "is_adhoc": false, "is_app_catalog": true, "is_hybrid": false, "latest_version": 17632, "latest_version_id": "KJfUfgCwzUfeF9iwd2zl3w", "no_auth_delivery_enabled": false, "operating_system": 1, "psk": 6852, "push_enabled": false, "required": false, "required_by": "9999-12-31T23:59:59.999999", "required_by_group": false, "reviews_enabled": true, "sort_weight": -30000, "status": 1, "type": 0, "url_scheme": "appcatalog", "version": { "app_id": "AN2TTLCbhdHl_M1aNJ4ltQ", "app_name": "App Catalog", "app_psk": 6852, "author": "Example Company", "binary_version": "3.0.504", "custom_metadata": null, }, "form_factor": 3, "icon_path": "org_45/iphone_6852/AppIcon76x76@2x~ipad.png", "id": "KJfUfgCwzUfeF9iwd2zl3w", "install_file": { "action": "sign", "app_id": "AN2TTLCbhdHl_M1aNJ4ltQ", "app_psk": 6852, "apperian_wrapper_version": null, "checksum": "debc12ad7c0861422e8c2a1d0d305902061878aa8029a92ebe6b8a758bbe0a29", "created": "2017-01-30T21:43:56+00:00", "expires": "2017-09-03T19:04:52+00:00", "id": "GuW2ysq4B9qLa5UK2CsSdA", "kryptowire_verification_id": null, "mime": "application/itunes+zip", "path": "org_2/android_5/AppCatalog3QA.apk", "psk": 21797, "sign_credentials_id": "uPSpAolBHnylXEx8HIhnPA", "sign_credentials_psk": 444, "size": 10666103, "version_id": "KJfUfgCwzUfeF9iwd2zl3w", "version_psk": 17632, "binary_metadata": null }, "kryptowire_verification_status": 0, "latest_install_file": 21797, "latest_install_file_id": "GuW2ysq4B9qLa5UK2CsSdA", "long_description": "app cat", "min_os_version": "6.0", "notify_users": true, "psk": 17632, "release_date": "2017-01-30T21:43:56+00:00", "required": false, "required_by": "9999-12-31T23:59:59.999999", "short_description": "iOS App Catalog", "sign_status": 1, "version_note": "latest", "version_num": "3.0.504", "wrap_status": 0 } }
-
GET
/v2/applications/user/
¶ List Applications for a Specific User
Requires user context. Authenticate as a valid Apperian user.
Returns data about all the applications available in EASE to the authenticated user. An application is available if it is assigned to a group to which the user belongs.
Mandatory Applications
If an application is mandatory for any groups of which the user is a member, then the value of the
required_by_group
parameter will betrue
. If an application is mandatory for all assigned groups, then both therequired
andrequired_by_group
parameters will betrue
.URLs
Environment URL North America https://na01ws.apperian.com/v2/applications/user/ Europe https://eu01ws.apperian.eu/v2/applications/user/ URL Parameters
None
Header Parameter
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
Data Parameters
None
Example Request
curl -X GET https://na01ws.apperian.com/v2/applications/user --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
Example Response
The following example shows the portion of a response that lists information about the Actions application. The Actions application is not mandatory for all groups to which it is assigned, so the
required
parameter is set tofalse
. The application is mandatory for one group, however, and the authenticated user is a member of that group. Therefore, therequired_by_group
parameter is set totrue
.NOTE: The
required_by
parameter is unrelated to an application’s mandatory setting;required_by
identifies the date by which users will be required to install an update of the app if one is available to them (in this case, the date is in the distant future to indicate that an update is optional and not required).{ "applications": [ { "add_to_start": false, "banner_image_url": "", "bundle_id": "com.apperian.demo.actions", "id": "MCYv1NLWlStmdT3DIsZX-Q", "is_adhoc": false, "is_app_catalog": false, "is_hybrid": false, "latest_version": 17505, "latest_version_id": "M9Kr-th6C1B3t8NTNJVsoA", "no_auth_delivery_enabled": false, "operating_system": 103, "psk": 6766, "push_enabled": false, "required": false, "required_by": "3099-12-31T00:00:00+00:00", "required_by_group": true, "reviews_enabled": true, "sort_weight": 1000, "status": 1, "type": 3, "url_scheme": "", "version": { "app_id": "MCYv1NLWlStmdT3DIsZX-Q", "app_name": "Actions", "app_psk": 6766, "author": "Example Company", "binary_version": "1.0", "custom_metadata": null, "form_factor": 2, "icon_path": "org_45/android_6766/appicon.png", "id": "M9Kr-th6C1B3t8NTNJVsoA", "kryptowire_verification_status": 0, "latest_install_file": 21505, "latest_install_file_id": "VxvMyQ__IhFgVGpX_7gA5w", "long_description": "Get organized today with the Actions app!", "min_os_version": "11", "notify_users": true, "psk": 17505, "release_date": "2016-12-08T22:56:21+00:00", "required": false, "required_by": "9999-12-31T23:59:59.999999", "short_description": "Manage your TO DO list", "sign_status": 1, "version_note": "latest", "version_num": "1.0", "wrap_status": 0, "install_file": { "psk": 1061, "created": "2017-09-15T18:01:58.842322+00:00", "kryptowire_verification_id": null, "apperian_wrapper_version": null, "sign_credentials_id": null, "version_psk": 433, "checksum": "82fe2fe4529434dbbe4dbacf70e896ce5ae29d74caea75535d53a67610cc884e", "expires": "9999-12-31T23:59:59.999999+00:00", "app_id": "a0D0xt0bgfXUt1cLA6Z0qA", "version_id": "IY0bzB2-6o-hgaj17FtQxg", "sign_credentials_psk": null, "mime": "application/vnd.android.package-archive", "binary_metadata": { "warning_keys": [], "errors": [], "warnings": [], "metadata": { "is_cordova": false, "manifest": { "sdkVersion": "11", "densities": [ "120", "160", "240" ], "package": { "versionCode": "1", "name": "com.apperian.demo.actions", "versionName": "1.0" }, "application": { "label": "Actions", "icon": "res/drawable-hdpi/appicon.png" }, "supports-any-density": true, "uses-feature": [ "android.hardware.wifi", "android.hardware.touchscreen" ], "uses-permission": [ "android.permission.INTERNET", "android.permission.ACCESS_WIFI_STATE" ], "locales": [ "--_--" ] } } }, "path": "org_14/android_191/version_433/Actions.apk", "action": "upload", "app_psk": 191, "id": "7JQlAmx32e3LjFzKXr5yqg", "size": 159054 } } } ] }
-
GET
/v2/applications/
(application)¶ List Data for a Specific Application
Requires user context. Authenticate as a valid Apperian user.
Returns data about the specified application. Specify the app with application. The application for each app in your organization is included as the id parameter in the data returned by the GET /applications resource.
The response lists many details about the application, including its:
Direct Download URL: Send a GET request to the URL provided in the direct_download_binary_url field to download the app’s binary.
Signing Status: After you send a PUT request to /applications/<application>/credentials/<credentials>, use the following fields to monitor signing status
Field Description signing_status The current status of the signing process. Valid values include:
- in_progress
- signed
- cancelled
- error
Note that a
sign_status
field is also returned, but can be ignored. It returns a number value for one of the statuses above.signing_status_details Additional information about the signing status. This field is useful primarily when the signing status is
error
. For example:The cert or profile is expired and will not run on any device.
See the Example Response below to view all the data returned about each app. To identify whether an application is enabled, look at the value of the
status
parameter:0
indicates disabled;1
indicates enabled.URLs
Environment URL North America https://na01ws.apperian.com/v2/applications/<application> Europe https://eu01ws.apperian.eu/v2/applications/<application> URL Parameters
- application
- (Required) Unique ID of the app. DATA TYPE: string
Header Parameters
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
Data Parameters
None.
Example Request
curl -X GET https://na01ws.apperian.com/v2/applications/Da7X7EENA0D82j5vA9T5KQ --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
Example Response
Note that the following response includes custom metadata that was specified for the app using the PUT /applications/<application> API. The
status
parameter has a value of0
, which indicates that the app is disabled.{ "application": { "operating_system": 1, "url_scheme": "", "is_adhoc": false, "is_hybrid": false, "required_by": "3099-12-31T00:00:00+00:00", "is_app_catalog": false, "latest_version_id": "g-zL5G6YkxZOrbJHd0j9zA", "version": { "id": "akqL5G2YkxZOrbJHd0j9zB", "form_factor": 3, "long_description": "Come on. Get organized! Use this app to manage your TO DO list.", "custom_metadata": { "city": "Boston", "name": "Diane", "lastname": "Harrelson", "restaurants": "Cheers" }, "icon_path": "org_11/iphone_75/Actions_57.png", "short_description": "Manage your To DO list.", "min_os_version": "7.1", "version_note": "Latest version", "version_num": "2.0", "latest_install_file_id": "3FQNPpmrGTjviMiJ5vNOxA", "release_date": "2016-03-22T13:42:03.678841+00:00", "required": false, "notify_users": false, "required_by": "9999-12-31T23:59:59.999999", "signing_status_details": "The application was signed successfully.", "signing_status": "signed", "app_id": "Skhyo45wxzMEiZVlgBkaZw", "app_name": "Training", "sign_status": 0, "kryptowire_verification_status": 0, "wrap_status": 2, "install_file": { "apperian_wrapper_version": 17, "kryptowire_verification_id": null, "app_id": "Skhyo45wxzMEiZVlgBkaZw", "size": 965423, "id": "3FQNPpmrGTjviMiJ5vNOxA", "expires": null, "mime": "application/itunes+zip", "path": "org_2/iphone_43/Training.ipa", "created": "2016-03-22T14:04:12.120484+00:00", "version_id": "g-zL5G6YkxZOrbJHd0j9zA", "checksum": null, "sign_credentials_id": null, "action": "wrap", "binary_metadata": null } }, "reviews_enabled": true, "type": 0, "status": 0, "id": "Da7X7EENA0D82j5vA9T5KQ", "sort_weight": 1000, "no_auth_delivery_enabled": true, "add_to_start": false, "bundle_id": "com.apperian.Actions", "banner_image_url": null, "direct_download_binary_url": "https://na01ws.apperian.com/v1/downloads/direct/applications/8f92x99Kw8qfHxeDkcK8fA", "required": false, "push_enabled": false } }
For a list of messages that may be returned in the
signing_status_details
field, see Signing Status Messages.
-
GET
/v3/applications/
(application)/versions/
¶ List Version Information for an Application
Requires user context. Authenticate as a valid Apperian user.
Returns information about all versions of the specified app, and lists all version information, including install file data. Specify the app with application. The application for each app in your organization is included as the id parameter in the data returned by the GET /applications resource.
A new version of an app is stored in Apperian whenever a new application file is added to Apperian, either when adding a new app or editing an existing app.
This resource allows for the full functionality of searching, sorting, and paginating the JSON response, as described in Controlling GET Responses.
URLs
Environment URL North America https://na01ws.apperian.com/v3/applications/<application>/versions/ Europe https://eu01ws.apperian.eu/v3/applications/<application>/versions/ URL Parameters
- application
- (Required) Unique ID for the app. DATA TYPE: string
Header Parameters
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
Data Parameters
None
Example Request
curl -X GET https://na01ws.apperian.com/v3/applications/Cc4YIy2wgpvfieqGdRkOyQ/versions --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
Example Response
In this example there are two versions of the app.
{ "total_available": 2, "versions": [ { "app_name": "Actions", "install_file": { "apperian_wrapper_version": 20, "kryptowire_verification_id": null, "sign_credentials_id": null, "checksum": "ef6400290a64433dd634b89afb8d72e2d79f8ee804cee4417107ea3b46bd6170", "expires": "9999-12-31T23:59:59.999999+00:00", "app_id": "Cc4YIy2wgpvfieqGdRkOyQ", "version_id": "JFg0IHji5Z3sAHwLhK-gcg", "created": "2017-12-01T17:26:53.878012+00:00", "mime": "application/vnd.android.package-archive", "binary_metadata": { "warning_keys": [], "errors": [], "warnings": [], "metadata": { "is_cordova": false, "manifest": { "sdkVersion": "11", "densities": [ "120", "160", "240" ], "package": { "versionCode": "1", "name": "com.apperian.demo.actions", "versionName": "1.0" }, "supports-screens": { "large": true, "small": true, "xlarge": true, "normal": true }, "application": { "label": "Actions", "icon": "res/drawable-hdpi/appicon.png" }, "supports-any-density": true, "uses-feature": [ "android.hardware.wifi", "android.hardware.touchscreen" ], "uses-permission": [ "android.permission.INTERNET", "android.permission.ACCESS_WIFI_STATE" ], "locales": [ "--_--" ] } } }, "action": "sign_with_package", "path": "org_1/android_30752/version_77129/signed/Actions.apk", "id": "-PMIt02_SlSIkQ6iVVzUDg", "size": 159054 }, "form_factor": 2, "app_id": "Cc4YIy2wgpvfieqGdRkOyQ", "sign_status": 0, "wrap_status": 1, "id": "JFg0IHji5Z3sAHwLhK-gcg", "author": "Me", "long_description": "long description", "required_by": "9999-12-31T23:59:59.999999+00:00", "short_description": "short description", "kryptowire_verification_status": 0, "version_note": "some notes go here", "binary_version": "1.0", "icon_path": "org_1/android_30752/version_77129/appicon.png", "custom_metadata": { "city": "Valladolid", "name": "default value", "description": "default value", "enabled": "true", "password": "default value", "restaurants": [ "Restaurant A", "Restaurant C" ] }, "min_os_version": "11", "notify_users": true, "version_num": "1.0", "release_date": "2017-12-01T17:27:13.827582+00:00", "required": false, "latest_install_file_id": "-PMIt02_SlSIkQ6iVVzUDg" }, { "app_name": "Actions 2.0", "install_file": { "apperian_wrapper_version": null, "kryptowire_verification_id": null, "sign_credentials_id": null, "checksum": "ef6400290a64433dd634b89afb8d72e2d79f8ee804cee4417107ea3b46bd6170", "expires": "9999-12-31T23:59:59.999999+00:00", "app_id": "Cc4YIy2wgpvfieqGdRkOyQ", "version_id": "uh6GskPsEQMqThzDx7o9yA", "created": "2018-06-11T14:39:16.047816+00:00", "mime": "application/vnd.android.package-archive", "binary_metadata": { "warning_keys": [], "errors": [], "warnings": [], "metadata": { "is_cordova": false, "manifest": { "sdkVersion": "11", "densities": [ "120", "160", "240" ], "package": { "versionCode": "1", "name": "com.apperian.demo.actions", "versionName": "1.0" }, "supports-screens": { "large": true, "small": true, "xlarge": true, "normal": true }, "application": { "label": "Actions", "icon": "res/drawable-hdpi-v4/appicon.png" }, "supports-any-density": true, "uses-feature": [ "android.hardware.wifi", "android.hardware.touchscreen" ], "uses-permission": [ "android.permission.INTERNET", "android.permission.ACCESS_WIFI_STATE", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.ACCESS_NETWORK_STATE" ], "locales": [ "--_--" ] } } }, "action": "upload", "path": "org_1/android_30752/version_78238/Actions.apk", "id": "aiTEEexGbmWQYZOu6wxHww", "size": 1363923 }, "form_factor": 2, "app_id": "Cc4YIy2wgpvfieqGdRkOyQ", "sign_status": 0, "wrap_status": 4, "id": "uh6GskPsEQMqThzDx7o9yA", "author": "Me", "long_description": "long description", "required_by": "9999-12-31T23:59:59.999999+00:00", "short_description": "short description", "kryptowire_verification_status": 0, "version_note": "All new version 2.0!", "binary_version": "1.0", "icon_path": "org_1/android_30752/version_78238/appicon.png", "custom_metadata": { "city": "Valladolid", "name": "default value", "description": "default value", "enabled": "true", "password": "default value", "restaurants": [ "Restaurant A", "Restaurant C" ] }, "min_os_version": "11", "notify_users": true, "version_num": "2.0", "release_date": "2018-06-11T14:39:39.201938+00:00", "required": false, "latest_install_file_id": "aiTEEexGbmWQYZOu6wxHww" } ] }
-
GET
/v1/applications/versions/
(version)¶ List Data for a Specific Version of an Application
Requires user context. Authenticate as a valid Apperian user.
Returns information about a specific version of an app.
Specify the version with
<version>
. Theversion
value is contained within the version object as returned by most of the Application API resources, however, you can use GET /applications/<application>/versions to quickly view all the versions of a specific app.The response from this resource is similar to the data that you would find within the version object returned by GET /applications/<application>, except that GET /applications/<application> only returns details about the latest version of an app.
You can use this resource to view the details about any version of an app, including previous versions.
URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/versions/<version> Europe https://eu01ws.apperian.eu/v1/applications/versions/<version> URL Parameters
- version
- (Required) Unique ID of the version. DATA TYPE: string
Header Parameters
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
Data Parameters
None.
Example Request
curl -X GET https://na01ws.apperian.com/v1/applications/version/uh6GskPsEQMqThzDx7o9yA --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
Example Response
{ "version": { "app_name": "Actions 2.0", "install_file": { "apperian_wrapper_version": null, "kryptowire_verification_id": null, "sign_credentials_id": null, "checksum": "ef6400290a64433dd634b89afb8d72e2d79f8ee804cee4417107ea3b46bd6170", "expires": "9999-12-31T23:59:59.999999+00:00", "app_id": "Cc4YIy2wgpvfieqGdRkOyQ", "version_id": "uh6GskPsEQMqThzDx7o9yA", "created": "2018-06-11T14:39:16.047816+00:00", "mime": "application/vnd.android.package-archive", "binary_metadata": { "warning_keys": [], "errors": [], "warnings": [], "metadata": { "is_cordova": false, "manifest": { "sdkVersion": "11", "densities": [ "120", "160", "240" ], "package": { "versionCode": "1", "name": "com.apperian.demo.actions", "versionName": "1.0" }, "supports-screens": { "large": true, "small": true, "xlarge": true, "normal": true }, "application": { "label": "Actions", "icon": "res/drawable-hdpi-v4/appicon.png" }, "supports-any-density": true, "uses-feature": [ "android.hardware.wifi", "android.hardware.touchscreen" ], "uses-permission": [ "android.permission.INTERNET", "android.permission.ACCESS_WIFI_STATE", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.ACCESS_NETWORK_STATE" ], "locales": [ "--_--" ] } } }, "action": "upload", "path": "org_1/android_30752/version_78238/Actions.apk", "id": "aiTEEexGbmWQYZOu6wxHww", "size": 1363923 }, "form_factor": 2, "app_id": "Cc4YIy2wgpvfieqGdRkOyQ", "sign_status": 0, "wrap_status": 4, "id": "uh6GskPsEQMqThzDx7o9yA", "author": "Me", "long_description": "long description", "required_by": "9999-12-31T23:59:59.999999+00:00", "short_description": "short description", "kryptowire_verification_status": 0, "version_note": "All new version 2.0!", "binary_version": "1.0", "icon_path": "org_1/android_30752/version_78238/appicon.png", "custom_metadata": { }, "min_os_version": "11", "notify_users": true, "version_num": "2.0", "release_date": "2018-06-11T14:39:39.201938+00:00", "required": false, "latest_install_file_id": "aiTEEexGbmWQYZOu6wxHww" } }
-
PUT
/v1/applications/versions/
(version)¶ Update Data for a Specific Version of an Application
Requires user context. Authenticate as a valid Apperian user.
Modify the metadata for a specific version of an app.
Specify the version with
version
. Theversion
value is contained within the version object as returned by most of the Application API resources, however, you can use GET /applications/<application>/versions to quickly view all the versions of a specific app.You can use this resource to modify the metadata for any previous version of an app.
URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/versions/<version> Europe https://eu01ws.apperian.eu/v1/applications/versions/<version> URL Parameters
- version
- (Required) Unique ID of the version. DATA TYPE: string
Header Parameters
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
Data Parameters
The request can include any of the following parameters:
- app_name
- version_num
- version_note
- author
- short_description
- long_description
- custom_metadata
- icon_file
Example Request
curl -X GET https://na01ws.apperian.com/v1/applications/versions/uh6GskPsEQMqThzDx7o9yA --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A" --data '{"app_name": "Actions 2.0", "version_num": "2.0", "version_note": "All new version 2.0!"}'
Example Response
{ "version": { "app_name": "Actions 2.0", "install_file": { "apperian_wrapper_version": null, "kryptowire_verification_id": null, "sign_credentials_id": null, "checksum": "ef6400290a64433dd634b89afb8d72e2d79f8ee804cee4417107ea3b46bd6170", "expires": "9999-12-31T23:59:59.999999+00:00", "app_id": "Cc4YIy2wgpvfieqGdRkOyQ", "version_id": "uh6GskPsEQMqThzDx7o9yA", "created": "2018-06-11T14:39:16.047816+00:00", "mime": "application/vnd.android.package-archive", "binary_metadata": { "warning_keys": [], "errors": [], "warnings": [], "metadata": { "is_cordova": false, "manifest": { "sdkVersion": "11", "densities": [ "120", "160", "240" ], "package": { "versionCode": "1", "name": "com.apperian.demo.actions", "versionName": "1.0" }, "supports-screens": { "large": true, "small": true, "xlarge": true, "normal": true }, "application": { "label": "Actions", "icon": "res/drawable-hdpi-v4/appicon.png" }, "supports-any-density": true, "uses-feature": [ "android.hardware.wifi", "android.hardware.touchscreen" ], "uses-permission": [ "android.permission.INTERNET", "android.permission.ACCESS_WIFI_STATE", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.ACCESS_NETWORK_STATE" ], "locales": [ "--_--" ] } } }, "action": "upload", "path": "org_1/android_30752/version_78238/Actions.apk", "id": "aiTEEexGbmWQYZOu6wxHww", "size": 1363923 }, "form_factor": 2, "app_id": "Cc4YIy2wgpvfieqGdRkOyQ", "sign_status": 0, "wrap_status": 4, "id": "uh6GskPsEQMqThzDx7o9yA", "author": "Me", "long_description": "long description", "required_by": "9999-12-31T23:59:59.999999+00:00", "short_description": "short description", "kryptowire_verification_status": 0, "version_note": "All new version 2.0!", "binary_version": "1.0", "icon_path": "org_1/android_30752/version_78238/appicon.png", "custom_metadata": { }, "min_os_version": "11", "notify_users": true, "version_num": "2.0", "release_date": "2018-06-11T14:39:39.201938+00:00", "required": false, "latest_install_file_id": "aiTEEexGbmWQYZOu6wxHww" }, "warnings": [] }
-
GET
/v1/applications/
(application)/stats/
¶ List Download and Usage Count for a Specific Application
Requires user context. Authenticate as a valid Apperian user.
Returns Download Count and Usage Count for an application during a specified statistical time period (
start_date
throughend_date
).- Download Count identifies the number of times the app was downloaded to a device during the statistical time
- period.
- Usage Count identifies the number of times the app was used during the statistical time period. This count is
- calculated only if the app is wrapped with the App Usage policy. The count is incremented when a user opens the app, brings the app to the foreground, or returns to the app from the lock screen.
URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/<application>/stats/ Europe https://eu01ws.apperian.eu/v1/applications/<application>/stats/ URL Parameters
- application
- (Required) Unique ID for the app. DATA TYPE: string
- start_date
- (Required) Start date for the statistical period. For example:
2014-01-15
DATA TYPE: date inyyyy-mm-dd
format - end_date
- (Required) End date for the statistical period. For example:
2014-01-30
DATA TYPE: date inyyyy-mm-dd
format
Header Parameter
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
Data Parameters
None
Example Request
Be sure to surround the URL with quotes.
curl -X GET "https://na01ws.apperian.com/v1/applications/23/stats?start_date=2014-01-15&end_date=2014-03-30" --header "X-TOKEN: yCczCnsNSJyW_3JyS6YwAQ"
Example Response
This example shows a portion of the response.
{ "app_stats": "app_stats": { "is_web_app": false, "download_count": [ { "count": 1, "date": "2012-03-13T00:00:00+00:00" }], "no_auth_download_count": 3, "type": 0, "usage_count": [] } }
-
GET
/v1/downloads/direct/applications/
(application)/
¶ Download the Most Recent Version of an Application File
Authenticate as a user with the Administrator, App Manager, or Developer role. Use the session token returned from POST /users/authenticate.
Returns a 302 redirect link to download the latest version of a native app’s binary file. Use this resource, for example, to download an app that was signed through Apperian but needs to be distributed to users through a system other than Apperian.
You can download any native app that you manage in Apperian, including native apps that were created as hybrid applications.
URLs
Environment URL North America https://na01ws.apperian.com/v1/downloads/direct/applications/<application> Europe https://eu01ws.apperian.eu/v1/downloads/direct/applications/<application> URL Parameters
- application
- (Required) Unique ID provided with the
direct_download_binary_url
parameter returned for the app by GET /applications. DATA TYPE: string
Header Parameters
- X-TOKEN
- (Required) Session token returned by POST /users/authenticate.
Data Parameters
None
Example Requests
The following request returns the 302 redirect link:
curl -X GET https://na01ws.apperian.com/v1/downloads/direct/applications/tauo-ZZD2jqXJL1QY2GppQ --header "X-TOKEN: ahHJC6O5STCQyXFAfb-EQ"
Use the
-L
and--output
flags to automatically follow the redirect link and save the output to a file on disk. In the following example, the command saves the file to thefilename.ipa
file:curl -L -X GET https://na01ws.apperian.com/v1/downloads/direct/applications/tauo-ZZD2jqXJL1QY2GppQ --header "X-TOKEN: ahHJC6O5STCQyXFAfb-EQ" --output filename.ipa
Example Response
This response shows the 302 redirect link.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>Redirecting...</title> <h1>Redirecting...</h1> <p>You should be redirected automatically to target URL: <a href="https://fdownload.qa.apperian.com/? download_token=eGaN0ykNR6WGW4X6PXjqWQ">https://fdownload.qa.apperian.com/?download_token=eGaN0yW4X6PXjqWQ</a>. If not click the link.
-
GET
/v1/downloads/direct/versions/
(version)/original/
¶
-
GET
/v1/downloads/direct/versions/
(version)/
¶ Download a Specific Version of an Application File
Authenticate as a user with the Administrator, App Manager, or Developer role. Use the session token returned from POST /users/authenticate.
Returns a 302 redirect to download the binary file for a specific version of a native app (including hybrid apps), similar to how you would use GET /downloads/direct/applications/<application>.
By adding
/original
at the end of the URL, you can specify that you are requesting the file that was originally uploaded for this version. Otherwise, this endpoint will return the latest file, which may have policies applied or be signed differently from the originally uploaded file.URLs
Environment URL North America https://na01ws.apperian.com/v1/downloads/direct/versions/<version> North America https://na01ws.apperian.com/v1/downloads/direct/versions/<version>/original Europe https://eu01ws.apperian.eu/v1/downloads/direct/versions/<version> Europe https://eu01ws.apperian.eu/v1/downloads/direct/versions/<version>/original URL Parameters
- version
- (Required) Unique ID identifying the specific version to download. DATA TYPE: string
Header Parameters
- X-TOKEN
- (Required) Session token returned by POST /users/authenticate.
Data Parameters
None
Example Requests
The following request returns the 302 redirect link:
curl -X GET https://na01ws.apperian.com/v1/downloads/direct/versions/z3fwe-ZZD2jqXJL1QY2l2d --header "X-TOKEN: ahHJC6O5STCQyXFAfb-EQ"
Use the
-L
and--output
flags to direct cURL to automatically follow the redirect link and save the output to a file on disk. In the following example, the command saves the file to thefilename.ipa
file:curl -L -X GET https://na01ws.apperian.com/v1/downloads/direct/versions/z3fwe-ZZD2jqXJL1QY2l2d --header "X-TOKEN: ahHJC6O5STCQyXFAfb-EQ" --output filename.ipa
Example Response
This response shows the 302 redirect link.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>Redirecting...</title> <h1>Redirecting...</h1> <p>You should be redirected automatically to target URL: <a href="https://fdownload.qa.apperian.com/? download_token=eGaN0ykNR6WGW4X6PXjqWQ">https://fdownload.qa.apperian.com/?download_token=eGaN0yW4X6PXjqWQ</a>. If not click the link.
-
GET
/v1/applications/
(application)/screenshots/
¶ List Screenshots for an Application
Requires user context. Authenticate as a valid Apperian user.
Returns the list of screenshots for the specified application. Specify the app with application. The application for each app in your organization is included in the data returned by the GET /applications resource.
URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/<application>/screenshots/ Europe https://eu01ws.apperian.eu/v1/applications/<application>/screenshots/ URL Parameters
- application
- (Required) Unique ID assigned by Apperian to the app. DATA TYPE: string
Header Parameter
- X-TOKEN
- (Required) Session token returned by POST /users/authenticate.
Data Parameters
None
Example Request
curl -X GET https://na01ws.apperian.com/v1/applications/123/screenshots/ --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
Example Response
In this example, there are three regular screenshots and two tablet screenshots associated with the specified application.
{ "screenshot_paths": { "phone": [ "org_11/iphone_79/action-item.png", "org_11/iphone_79/splash-2.png", "org_11/iphone_79/menu-phone.png" ], "tablet": [ "org_11/iphone_79/__tablet007__menu-tablet.PNG", "org_11/iphone_79/__tablet007__action-item-tablet.PNG" ] } }
-
POST
/v1/applications/
(application)/screenshots/phone/
(int: slot)/
¶ Upload a Phone Screenshot for An Application
Requires administrator privileges. Authenticate as an Apperian administrator.
You can associate screenshots with any native applications in your organization. These screenshots display on the details page for the application when a user views it in the App Catalog, and can be used to show examples of the app’s user interface or other images that will provide useful information about the app-similar to a user’s experience when viewing apps in a public app store.
Use this API resource to upload a screenshot as a multipart form that contains a single file. Apperian supports PNG (
.png
) and JPEG (.jpg
or.jpeg
) formats. You can upload up to 10 screenshots, one at a time. Five phone screenshots and five tablet screenshots. When a user views the screenshots, the App Catalog will display only those files uploaded for the correct form factor (phone or tablet). The order in which screenshots display in the App Catalog is determined by a slot number (1-5) that you must specify as a URL parameter in the API request. If you add multiple screenshots for the same form factor to the same slot, the most recently added will overwrite those previously added.In the Admin Portal, you can edit an application to view the screenshots associated with it. For instructions on editing an application, see Edit or Update an Application.
URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/<application>/screenshots/phone/<slot> Europe https://eu01ws.apperian.eu/v1/applications/<application>/screenshots/phone/<slot> phone
adds a screenshot that will display when the App Catalog is running on a phone.URL Parameters
- application
- (Required) Unique ID for the app. DATA TYPE: string
- slot
- (Required) Order in which the screenshot will display on the app’s details page in the App Catalog. If you specify the same slot of a screenshot that is already stored for the same form factor (phone or tablet), the new file will overwrite the previously added file. DATA TYPE: integer Valid values: 1-5
Header Parameter
- X-TOKEN
- (Required) Session token returned by POST /users/authenticate.
- Content-Type
- (Required) Specifies the content type of the body of data sent with the request. Set to:
multipart/form-data
Form Parameters
- screenshot
- (Required) Specifies the screenshot file. The file must be in PNG (
.png
) or JPEG (.jpg
or.jpeg
) format and the filename cannot exceed 120 characters.
Data Parameters
None
Example Request
Use the
-v
(verbose) argument if you want to return detailed status of the request issued withcurl
. Without-v
, a successful request returns a blank response.curl -v https://na01ws.apperian.com/applications/16776/screenshots/phone/1 -F "screenshot=@appimage.png" --header "X-Token:wBZ99s1fQpyK7tZ0bYAHdA"
Example Response
This is an example of a verbose response to a
curl
command. An HTTP 201 response indicates that the file was successfully uploaded.* Trying 192.237.212.215... * Connected to ws-ease.apperian.com (192.237.212.215) port 443 (#0) * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 * Server certificate: *.qa.apperian.com * Server certificate: RapidSSL CA * Server certificate: GeoTrust Global CA > POST /applications/16776/screenshots/phone/1 HTTP/1.1 > Host: na01ws.apperian.com > User-Agent: curl/7.43.0 > Accept: */* > X-Token:wBZ99s1fQpyK7tZ0bYAHdA > Content-Length: 70281 > Expect: 100-continue > Content-Type: multipart/form-data; boundary=------------------------2c7826b9f3e94b93 > < HTTP/1.1 100 Continue < HTTP/1.1 201 CREATED < Date: Thu, 21 Jan 2016 23:58:50 GMT < Server: Apache < Content-Length: 0 < Access-Control-Allow-Origin: null < Vary: Accept-Encoding < Connection: close < Content-Type: text/html; charset=utf-8 < * Closing connection 0
-
POST
/v1/applications/
(application)/screenshots/tablet/
(int: slot)/
¶ Upload a Tablet Screenshot for An Application
Requires administrator privileges. Authenticate as an Apperian administrator.
You can associate screenshots with any native applications in your organization. These screenshots display on the details page for the application when a user views it in the App Catalog, and can be used to show examples of the app’s user interface or other images that will provide useful information about the app-similar to a user’s experience when viewing apps in a public app store.
Use this API resource to upload a screenshot as a multipart form that contains a single file. Apperian supports PNG (
.png
) and JPEG (.jpg
or.jpeg
) formats. You can upload up to 10 screenshots, one at a time. Five phone screenshots and five tablet screenshots. When a user views the screenshots, the App Catalog will display only those files uploaded for the correct form factor (phone or tablet). The order in which screenshots display in the App Catalog is determined by a slot number (1-5) that you must specify as a URL parameter in the API request. If you add multiple screenshots for the same form factor to the same slot, the most recently added will overwrite those previously added.In the Admin Portal, you can edit an application to view the screenshots associated with it. For instructions on editing an application, see Edit or Update an Application.
URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/<application>/screenshots/tablet/<slot> Europe https://eu01ws.apperian.eu/v1/applications/<application>/screenshots/tablet/<slot> tablet
adds a screenshot that will display when the App Catalog is running on a tablet.URL Parameters
- application
- (Required) Unique ID for the app. DATA TYPE: string
- slot
- (Required) Order in which the screenshot will display on the app’s details page in the App Catalog. If you specify the same slot of a screenshot that is already stored for the same form factor (phone or tablet), the new file will overwrite the previously added file. DATA TYPE: integer, Valid values: 1-5
Header Parameter
- X-TOKEN
- (Required) Session token returned by POST /users/authenticate.
- Content-Type
- (Required) Specifies the content type of the body of data sent with the request. Set to:
multipart/form-data
Form Parameters
- screenshot
- (Required) Specifies the screenshot file. The file must be in PNG (
.png
) or JPEG (.jpg
or.jpeg
) format and the filename cannot exceed 120 characters.
Data Parameters
None
Example Request
Use the
-v
(verbose) argument if you want to return detailed status of the request issued withcurl
. Without-v
, a successful request returns a blank response.curl -v https://na01ws.apperian.com/applications/16776/screenshots/phone/1 -F "screenshot=@appimage.png" --header "X-Token:wBZ99s1fQpyK7tZ0bYAHdA"
Example Response
This is an example of a verbose response to a
curl
command. An HTTP 201 response indicates that the file was successfully uploaded.* Trying 192.237.212.215... * Connected to ws-ease.apperian.com (192.237.212.215) port 443 (#0) * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 * Server certificate: *.qa.apperian.com * Server certificate: RapidSSL CA * Server certificate: GeoTrust Global CA > POST /applications/16776/screenshots/tablet/1 HTTP/1.1 > Host: na01ws.apperian.com > User-Agent: curl/7.43.0 > Accept: */* > X-Token:wBZ99s1fQpyK7tZ0bYAHdA > Content-Length: 70281 > Expect: 100-continue > Content-Type: multipart/form-data; boundary=------------------------2c7826b9f3e94b93 > < HTTP/1.1 100 Continue < HTTP/1.1 201 CREATED < Date: Thu, 21 Jan 2016 23:58:50 GMT < Server: Apache < Content-Length: 0 < Access-Control-Allow-Origin: null < Vary: Accept-Encoding < Connection: close < Content-Type: text/html; charset=utf-8 < * Closing connection 0
-
DELETE
/v1/applications/
(application)/screenshots/phone/
(int: slot)/
¶ Delete an Application Phone Screenshot
Requires administrator privileges. Authenticate as an Apperian administrator.
Use this API resource to delete a screenshot associated with an application. An application can have up to 10 screenshots: five phone screenshots and five table screenshots. Each screenshot is tied to a slot number that determines the order in which the screenshot displays in the App Catalog.
For more information on screenshot slots and how to upload screenshots for an application, see POST /applications/<application>/screenshots/phone/<slot>.
URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/<application>/screenshots/phone/<slot> Europe https://eu01ws.apperian.eu/v1/applications/<application>/screenshots/phone/<slot> URL Parameters
- application
- (Required) Unique ID for the app. DATA TYPE: string
- slot
(Required) Specify the slot of the screenshot you want to delete. You can view a list with slot number of all the screenshots stored for an app by returning details about the app with the GET /applications/<application> resource. DATA TYPE: integer,
Valid values: 1-5
Header Parameter
- X-TOKEN
- (Required) Session token returned by POST /users/authenticate.
Form Parameters
None
Data Parameters
None
Example Request
Use the
-v
(verbose) argument if you want to return detailed status of the request issued withcurl
. Without-v
, a successful request returns a blank response.curl -v -X DELETE https://na01ws.apperian.com/applications/16776/screenshots/phone/1 --header "X-Token:wBZ99s1fQpyK7tZ0bYAHdA"
Example Response
This is an example of a verbose response to a
curl
command. An HTTP 200 response indicates that the request was completed successfully.* Trying 192.237.212.215... * Connected to na01ws.apperian.com (192.237.212.215) port 443 (#0) * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 * Server certificate: *.qa.apperian.com * Server certificate: RapidSSL CA * Server certificate: GeoTrust Global CA > DELETE /applications/16776/screenshots/phone/1 HTTP/1.1 > Host: na01ws.apperian.com > User-Agent: curl/7.43.0 > Accept: */* > X-Token:TWK-D2-tSyiJ_6pQSwmyvQ > < HTTP/1.1 200 OK < Date: Fri, 22 Jan 2016 00:45:37 GMT < Server: Apache < Content-Length: 0 < Access-Control-Allow-Origin: null < Vary: Accept-Encoding < Connection: close < Content-Type: text/html; charset=utf-8 < * Closing connection 0
-
DELETE
/v1/applications/
(application)/screenshots/tablet/
(int: slot)/
¶ Delete an Application Tablet Screenshot
Requires administrator privileges. Authenticate as an Apperian administrator.
Use this API resource to delete a screenshot associated with an application. An application can have up to 10 screenshots: five phone screenshots and five table screenshots. Each screenshot is tied to a slot number that determines the order in which the screenshot displays in the App Catalog.
For more information on screenshot slots and how to upload screenshots for an application, see POST /applications/<application>/screenshots/tablet/<slot>.
URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/<application>/screenshots/tablet/<slot> Europe https://eu01ws.apperian.eu/v1/applications/<application>/screenshots/tablet/<slot> URL Parameters
- application
- (Required) Unique ID for the app. DATA TYPE: string
- slot
(Required) Specify the slot of the screenshot you want to delete. You can view a list with slot number of all the screenshots stored for an app by returning details about the app with the GET /applications/<application> resource. DATA TYPE: integer
Valid values: 1-5
Header Parameter
- X-TOKEN
- (Required) Session token returned by POST /users/authenticate.
Form Parameters
None
Data Parameters
None
Example Request
Use the
-v
(verbose) argument if you want to return detailed status of the request issued withcurl
. Without-v
, a successful request returns a blank response.curl -v -X DELETE https://na01ws.apperian.com/applications/16776/screenshots/phone/1 --header "X-Token:wBZ99s1fQpyK7tZ0bYAHdA"
Example Response
This is an example of a verbose response to a
curl
command. An HTTP 200 response indicates that the request was completed successfully.* Trying 192.237.212.215... * Connected to na01ws.apperian.com (192.237.212.215) port 443 (#0) * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 * Server certificate: *.qa.apperian.com * Server certificate: RapidSSL CA * Server certificate: GeoTrust Global CA > DELETE /applications/16776/screenshots/tablet/1 HTTP/1.1 > Host: na01ws.apperian.com > User-Agent: curl/7.43.0 > Accept: */* > X-Token:TWK-D2-tSyiJ_6pQSwmyvQ > < HTTP/1.1 200 OK < Date: Fri, 22 Jan 2016 00:45:37 GMT < Server: Apache < Content-Length: 0 < Access-Control-Allow-Origin: null < Vary: Accept-Encoding < Connection: close < Content-Type: text/html; charset=utf-8 < * Closing connection 0
List Related Media for an Application
Requires user context. Authenticate as a valid Apperian user.
Returns the list of related media for the specified application. Specify the app with application. The application for each app in your organization is included as the id parameter in the data returned by the GET /applications resource.
URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/<application>/related_media/ Europe https://eu01ws.apperian.eu/v1/applications/<application>/related_media/ URL Parameters
- application
- (Required) Unique ID assigned by Apperian to the app. DATA TYPE: string
Header Parameter
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
Data Parameters
None
Example Request
curl -X GET https://na01ws.apperian.com/v1/applications/123/related_media --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
Example Response
In this example, there is one media file associated with the specified application.
{ "related_media": [ { "psk": 28481, "description": "How To Video", "upload_date": "2015-07-22T23:26:11.122131+00:00", "deleted": false, "parts_done": 1, "no_parts": 1, "file_type": "MEDIAVIDEO", "version": 22536, "mime": "video/mp4", "hash_type": "none", "complete": true, "created_date": "2015-07-22T23:26:11.122131+00:00", "app_psk": 2377, "author": "Michael Harrison", "path": "https://ws-ease.apperian.com/catalog/assets/org_20/iphone_2377/flicker.mp4", "hash_value": null, "size": 9656292 } ] }
-
POST
/v1/applications/
(application)/icon/
¶ Attention
We recommend using the new PUT /v2/applications/<application> resource to upload app icons, rather than this method.
Upload an Icon for An Application
Requires administrator privileges. Authenticate as an Apperian administrator.
Use this resource to upload an application icon that will display for the application in both the App Catalog and the Applications page in the Admin Portal. This icon can be different than the icon bundled with the application binary. For example, you can upload an icon with a “NEW” or “IMPROVED” sticker to draw your users’ attention to a particular app in the catalog. Note that regardless of the icon uploaded to Apperian, the icon bundled with the application binary is what will display on the device when the app is installed.
Send the API request as a multipart form that contains a single file. Apperian supports PNG (
.png
) and JPEG (.jpg
but not.jpeg
) file formats. The image should be a minimum of 114 x 114 pixels.URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/<application>/icon/ Europe https://eu01ws.apperian.eu/v1/applications/<application>/icon/ URL Parameters
- application
- (Required) Unique ID for the app. DATA TYPE: string
Header Parameters
- X-TOKEN
- (Required) Session token returned by POST /users/authenticate.
- Content-Type
- (Required) Specifies the content type of the body of data sent with the request. Set to:
application/json
Form Parameters
- icon
- (Required) Specifies the icon file. The file must be in PNG (
.png
) or JPEG (.jpg
) format and the file name cannot exceed 120 characters.
The dimensions of the file will not be validated with the request, but the image should be at least 114 x 114 pixels for optimal performance.
Data Parameters
None
Example Request
Use the
-i
(include) argument if you want to return the HTTP header in the output so that you can see the HTTP status message. Without-i
, a successful request returns a blank response.curl -i https://na01ws.apperian.com/applications/16776/icon -F icon=@newapp.png --header "X-Token:wBZ99s1fQpyK7tZ0bYAHdA"
Example Response
This is an example of a response to a
curl
command with the-i
argument. The HTTP 201 message indicates that the file was successfully uploaded.HTTP/1.1 100 Continue HTTP/1.1 201 CREATED Date: Tue, 09 Feb 2016 18:37:05 GMT Server: Apache Content-Length: 0 Access-Control-Allow-Origin: null Vary: Accept-Encoding Connection: close Content-Type: text/html; charset=utf-8
Add or Update Banner Image for an Application
Requires administrator privileges. Authenticate as an Apperian administrator.
You can associate a banner image with an application and then display that image in your custom App Catalog (a catalog built using the Catalog API). Note that you cannot display application banner images if you are using a standard branded catalog.
Use this API resource to add or update the banner image for an application. Specify the app with application. The application for each app in your organization is included as the id parameter in the data returned by the GET /applications resource.
An application can have only one banner image associated with it; if you upload an image for an app that already has a banner image, Apperian will update that image.
The URL of an application’s banner image is returned in the
banner_image_url
parameter when you send a GET request to Applications API or Catalog API resources:"banner_image_url": "/org_15/iphone_125/myappbanner.jpg"
URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/<application>/banner_image Europe https://eu01ws.apperian.eu/v1/applications/<application>/banner_image URL Parameters
- application
- (Required) Unique ID assigned by Apperian to the app.
- DATA TYPE: string
Header Parameter
- X-TOKEN
- (Required) Session token returned by POST /users/authenticate.
Data Parameters
None
Form Parameters
- banner_image
- (Required) Specifies the banner image file. The file must be in PNG (
.png
) or JPEG (.jpg
or.jpeg
) format. There are no required dimensions or resolution requirements, but you should consider the design of your custom App Catalog and where the image will be displayed.
Example Request
curl -X POST https://na01ws.apperian.com/v1/applications/22735/banner_image --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A" -F "banner_image=@/root/src/image.jpg"
Example Response
This response indicates that the banner image was successfully added or updated for the application.
{ "banner_image_path": /uploads/org_11/iphone_85/image.jpg }
This response indicates that the banner image for the application could not be added because the specified application doesn’t exist or is not in the authenticated user’s organization.
{ "error": { "code": 11, "message": "User is not allowed to access resource id 12011", "guid": "ca35efb3-c7a8-40b4-8915-1e68fca446ba", "error_details": null } }
Delete Banner Image for an Application
Requires administrator privileges. Authenticate as an Apperian administrator.
Use this API resource to delete the banner image for an application. Specify the app with application. The application for each app in your organization is included as the id parameter in the data returned by the GET /applications resource.
URLs
Environment URL North America https://na01ws.apperian.com/v1/applications/<application>/banner_image Europe https://eu01ws.apperian.eu/v1/applications/<application>/banner_image URL Parameters
- application
- (Required) Unique ID assigned by Apperian to the app. DATA TYPE: integer
Header Parameter
- X-TOKEN
- (Required) Session token returned by POST /users/authenticate.
Data Parameters
None
Form Parameters
None
Example Request
curl -X DELETE https://na01ws.apperian.com/v1/applications/22735/banner_image --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
Example Response
This response indicates that the banner image was successfully deleted. A response of
false
indicates that the application does not have an associated banner image so there was nothing to delete.{ "deleted_banner_image": true }
This response indicates that the banner image for the application could not be deleted because the specified application does not exist or is not in the authenticated user’s organization.
{ "error": { "code": 11, "message": "User is not allowed to access resource id 12011", "guid": "ca35efb3-c7a8-40b4-8915-1e68fca446ba", "error_details": null } }
-
GET
/v2/applications/
(application)/versions/
¶ Attention
There is a newer version of this resource available: GET /v3/applications/<application>/versions/. This v2 version will be deprecated in Q3 of 2018. If you currently interface with this v2 resource, modify your code to point to the latest V3 version. If you have any questions, contact Customer Support.
List Version Information for an Application
Requires user context. Authenticate as a valid Apperian user.
Returns information about all versions of the specified application. Specify the app with application. The application for each app in your organization is included in the data returned by the GET /applications resource.
A new version of an app is stored in EASE whenever a new application file is added to EASE, either when adding a new app or editing an existing app.
The following lists the version information returned in the API response.
- id
- Unique identifier created by EASE for the version.
- version_note
- Version note provided by the administrator when the version was created.
- version_num
- Version number provided by the administrator when the version was created. This value will have defaulted to the version included in the application binary.
- release_date
- Date when the version was created in EASE.
- expires
- Date when the application expires.
- app_id
- Unique identifier of the app for which the version information is returned.
URLs
Environment URL North America https://na01ws.apperian.com/v2/applications/<application>/versions/ Europe https://eu01ws.apperian.eu/v2/applications/<application>/versions/ URL Parameters
- application
- (Required) Unique ID for the app. DATA TYPE: string
Header Parameters
- X-TOKEN
- (Required) API token or User token (POST /users/authenticate). For more information, see Authentication.
Data Parameters
None
Example Request
curl -X GET https://na01ws.apperian.com/v2/applications/HtiJL5SOblmu9NMVhN8NXA/versions --header "X-TOKEN: eTg8ktZXRqKIBJTHunwP6A"
Example Response
In this example, there are three versions of the application.
{ "versions": [ { "app_id": "HtiJL5SOblmu9NMVhN8NXA", "app_psk": 6119, "expires": "2017-07-26T12:52:15+00:00", "id": "o3KEKEizIoJIhap0t9UoWA", "psk": 17640, "release_date": "2017-02-02T21:00:24.143208+00:00", "version_note": "Latest production release", "version_num": "3.0", "custom_metadata": { "city": "Boston", "name": "Diane", "lastname": "Harrelson", "restaurants": "Cheers" } }, { "app_id": "HtiJL5SOblmu9NMVhN8NXA", "app_psk": 6119, "expires": "2017-07-26T12:52:15+00:00", "id": "uu8JNzWeMqsiMJunptZH_A", "psk": 16856, "release_date": "2016-08-16T21:30:35+00:00", "version_note": "Fixes UI bugs", "version_num": "2.0", "custom_metadata": null }, { "app_id": "HtiJL5SOblmu9NMVhN8NXA", "app_psk": 6119, "expires": "2016-08-20T00:48:06+00:00", "id": "oRfVDizQVUrEGp_8lZpTPA", "psk": 16574, "release_date": "2016-08-16T21:26:00+00:00", "version_note": "First versions", "version_num": "1.0", "custom_metadata": null } ] }