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.

Note

The resources described on this page represent a RESTful approach for adding and managing apps, which is a vast improvement over the older Publishing API. The Publishing API is based on an outdated framework.

We recommend using this REST API to work with your apps, and encourage all customers to migrate away from the older Publishing API.

We plan to deprecate the existing Publishing API later this year.

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 and version_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/(org_id)/ 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 and url 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 and platform, all other fields are optional (and False by default).

You can also include any other editable app fields, such as app_name, icon_file, or enabled, 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 the url is http://www.example.com the app_name would be example.
  • 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/<app_id>.

For more information about hybrid apps in general, see Hybrid Apps.

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 a Content-Type: multipart/form-data header parameter.

If you want to include a custom icon when adding a public store app, replace 'app_file= with icon_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,
        "update_compliance_period_in_days": null,
        "sort_weight": 1000,
        "no_auth_delivery_enabled": false,
        "is_email_config_profile": 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.

POST /v1/applications/(app_psk)

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 and notify_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/<app_id> 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/<app_id>
Europe https://eu01ws.apperian.eu/v1/applications/<app_id>

URL Parameters

app_id
(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 the version_num and version_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,
        "update_compliance_period_in_days": null,
        "sort_weight": 1000,
        "no_auth_delivery_enabled": false,
        "is_email_config_profile": 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/(app_psk)/

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 <app_id> is returned as id 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/<app_id>.

URLs

Environment URL
North America https://na01ws.apperian.com/v2/applications/<app_id>
Europe https://eu01ws.apperian.eu/v2/applications/<app_id>

URL Parameters

app_id
(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 is false.

{
     "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,
         "update_compliance_period_in_days": null,
         "sort_weight": 1000,
         "no_auth_delivery_enabled": false,
         "is_email_config_profile": 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,
     "update_compliance_period_in_days": null,
     "sort_weight": 1000,
     "no_auth_delivery_enabled": false,
     "is_email_config_profile": 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 the my_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,
         "update_compliance_period_in_days": null,
         "sort_weight": 1000,
         "no_auth_delivery_enabled": false,
         "is_email_config_profile": 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/(app_psk)/

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/<app_id>/. 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/<app_psk>
Europe https://eu01ws.apperian.eu/v1/applications/<app_psk>

URL Parameters

app_psk
(Required) Unique ID for the app. DATA TYPE: integer

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 to false 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/(app_psk)/

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 app_psk. The app_psk 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/<app_psk>
Europe https://eu01ws.apperian.eu/v1/applications/<app_psk>

URL Parameters

app_psk or appID
(Required) Unique ID assigned by Apperian to the app. You can provide either the app_psk or appID. DATA TYPE: integer

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 app_psk.

{
  "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/<app_id>.

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,
      "update_compliance_period_in_days": null,
      "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,
      "is_email_config_profile": false,
      "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,
      "update_compliance_period_in_days": null,
      "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,
      "is_email_config_profile": false,
      "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_email_config_profile": false,
            "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,
            "update_compliance_period_in_days": null,
            "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 be true. If an application is mandatory for all assigned groups, then both the required and required_by_group parameters will be true.

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 to false. The application is mandatory for one group, however, and the authenticated user is a member of that group. Therefore, the required_by_group parameter is set to true.

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_email_config_profile": 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,
            "update_compliance_period_in_days": null,
            "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/(app_id)

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 app_id. The app_id 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/<app_id>/credentials/<credentials_psk>, 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/<int:app_id>
Europe https://eu01ws.apperian.eu/v2/applications/<int:app_id>

URL Parameters

app_id
(Required) Unique ID of the app. DATA TYPE: integer

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/<app_psk> API. The status parameter has a value of 0, which indicates that the app is disabled.

{
      "application": {
        "operating_system": 1,
        "update_compliance_period_in_days": null,
        "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,
        "is_email_config_profile": false,
        "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/(app_id)/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 app_id. The app_id 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 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/<app_id>/versions/
Europe https://eu01ws.apperian.eu/v3/applications/<app_id>/versions/

URL Parameters

app_id
(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_id)

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_id>. The version_id value is contained within the version object as returned by most of the Application API resources, however, you can use GET /applications/<app_id>/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/<app_id>, except that GET /applications/<app_id> 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_id>
Europe https://eu01ws.apperian.eu/v1/applications/versions/<version_id>

URL Parameters

version_id
(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_id)

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_id. The version_id value is contained within the version object as returned by most of the Application API resources, however, you can use GET /applications/<app_id>/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/<int:version_id>
Europe https://eu01ws.apperian.eu/v1/applications/versions/<int:version_id>

URL Parameters

version_id
(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/(app_psk)/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 through end_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/<int:app_psk>/stats/
Europe https://eu01ws.apperian.eu/v1/applications/<int:app_psk>/stats/

URL Parameters

app_psk
(Required) Unique ID for the app. DATA TYPE: integer
start_date
(Required) Start date for the statistical period. For example: 2014-01-15 DATA TYPE: date in yyyy-mm-dd format
end_date
(Required) End date for the statistical period. For example: 2014-01-30 DATA TYPE: date in yyyy-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/(app_id)/

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/<app_id>
Europe https://eu01ws.apperian.eu/v1/downloads/direct/applications/<app_id>

URL Parameters

app_id
(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 the filename.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_id)/original/
GET /v1/downloads/direct/versions/(version_id)/

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/<app_id>.

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_id>
North America https://na01ws.apperian.com/v1/downloads/direct/versions/<version_id>/original
Europe https://eu01ws.apperian.eu/v1/downloads/direct/versions/<version_id>
Europe https://eu01ws.apperian.eu/v1/downloads/direct/versions/<version_id>/original

URL Parameters

version_id
(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 the filename.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/(app_psk)/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 app_psk. The app_psk 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/<app_psk>/screenshots/
Europe https://eu01ws.apperian.eu/v1/applications/<app_psk>/screenshots/

URL Parameters

app_psk
(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

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/(app_psk)/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/<app_psk>/screenshots/phone/<slot>
Europe https://eu01ws.apperian.eu/v1/applications/<app_psk>/screenshots/phone/<slot>

phone adds a screenshot that will display when the App Catalog is running on a phone.

URL Parameters

app_psk
(Required) Unique ID for the app. DATA TYPE: integer
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 with curl. 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/(app_psk)/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/<app_psk>/screenshots/tablet/<slot>
Europe https://eu01ws.apperian.eu/v1/applications/<app_psk>/screenshots/tablet/<slot>

tablet adds a screenshot that will display when the App Catalog is running on a tablet.

URL Parameters

app_psk
(Required) Unique ID for the app. DATA TYPE: integer
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 with curl. 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/(app_psk)/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/<app_psk>/screenshots/phone/<slot>.

URLs

Environment URL
North America https://na01ws.apperian.com/v1/applications/<app_psk>/screenshots/phone/<slot>
Europe https://eu01ws.apperian.eu/v1/applications/<app_psk>/screenshots/phone/<slot>

URL Parameters

app_psk
(Required) Unique ID for the app. DATA TYPE: integer
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/<app_psk> 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 with curl. 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/(app_psk)/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/<app_psk>/screenshots/tablet/<slot>.

URLs

Environment URL
North America https://na01ws.apperian.com/v1/applications/<app_psk>/screenshots/tablet/<slot>
Europe https://eu01ws.apperian.eu/v1/applications/<app_psk>/screenshots/tablet/<slot>

URL Parameters

app_psk
(Required) Unique ID for the app. DATA TYPE: integer
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/<app_psk> 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 with curl. 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 app_psk. The app_psk 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/<app_psk>/related_media/
Europe https://eu01ws.apperian.eu/v1/applications/<app_psk>/related_media/

URL Parameters

app_psk
(Required) Unique ID assigned by Apperian to the app. DATA TYPE: integer

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/(app_psk)/icon/

Attention

We recommend using the new PUT /v2/applications/<app_id> 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/<app_psk>/icon/
Europe https://eu01ws.apperian.eu/v1/applications/<app_psk>/icon/

URL Parameters

app_psk
(Required) Unique ID for the app. DATA TYPE: integer

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
POST /v1/applications/(app_psk)/banner_image

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 a specific application. Specify the app with its app_psk or appID. The app_psk for each app in your organization is included in the data returned by the GET /applications resource. The appID is returned by the publishing API.

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/<app_psk>/banner_image
Europe https://eu01ws.apperian.eu/v1/applications/<app_psk>/banner_image

URL Parameters

app_psk or appID
(Required) Unique ID assigned by Apperian to the app. You can provide either the app_psk or appID.
DATA TYPE: integer

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 app_psk 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 /v1/applications/(app_psk)/banner_image

Delete Banner Image for an Application

Requires administrator privileges. Authenticate as an Apperian administrator.

Use this API resource to delete the banner image for a specific application. Specify the app with its app_psk or appID. The app_psk for each app in your organization is included in the data returned by the GET /applications resource. The appID is returned by the publishing API.

URLs

Environment URL
North America https://na01ws.apperian.com/v1/applications/<app_psk>/banner_image
Europe https://eu01ws.apperian.eu/v1/applications/<app_psk>/banner_image

URL Parameters

app_psk or appID
(Required) Unique ID assigned by Apperian to the app. You can provide either the app_psk or appID. 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 app_psk 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/(app_id)/versions/

Attention

There is a newer version of this resource available: GET /v3/applications/<app_id>/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 app_id. The app_id 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/<app_id>/versions/
Europe https://eu01ws.apperian.eu/v2/applications/<app_id>/versions/

URL Parameters

app_id
(Required) Unique ID for the app. DATA TYPE: integer

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
       }
   ]
}