Applications (HIDApprove) REST API
The Application/HIDApprove endpoint allows creating and managing all the definitions (device type, credential type and authentication policy) required for HID Approve authentication.
The API version supported by HID Authentication Service is
Previous versions of the API are also supported with the corresponding functionality.
Method Details
| HTTPS Method | Entity Action | Request URI | Description |
|---|---|---|---|
|
Read |
/configuration/{tenant}/v2/Application/HIDApprove |
Retrieve the list of all HIDApprove Applications |
|
|
Read |
/configuration/{tenant}/v2/ Application/HIDApprove/{uid} |
Retrieve a HIDApprove Application |
|
|
Create |
/configuration/{tenant}/v2/ Application/HIDApprove |
Create a HIDApprove Application |
|
|
Replace |
/configuration/{tenant}/v2/ Application/HIDApprove/{uid} |
Fully replace a known HIDApprove Application |
|
|
Delete |
/configuration/{tenant}/v2/ Application/HIDApprove/{uid} |
Delete a HIDApprove Application |
Payload Descriptions
| Name | Default Value | Description |
|---|---|---|
|
schemas |
|
Schemas of the application Possible values:
The schema, if used, MUST be consistent with the extension used. If you want to use the:
|
|
id |
None |
Unique ID of the application
|
|
name |
None |
Common name of the application
|
|
notes |
None |
Description of the application Maximum length is 500 characters |
|
deviceTypeCode |
None |
Unique Device type created for the push application
|
|
deviceAuthenticationTypeCode |
None |
Unique Authentication shared policy for device authentication of the application
|
|
maximumDevicePerUser |
5 |
The maximum number of this type of device that can be assigned to a user. |
|
opMode |
default |
Operation mode used Possible values:
|
|
keysRefreshPeriod |
365 |
Validity of keys before renewal |
|
8 |
Default value for challenge length of each OCRA credential This value is READ ONLY and is returned based on the challengeLength of the first OATH OCRA CHALLENGE_RESPONSE SIGNATURE OCRA suite encountered If no OCRA suites are provided, the default value will be used as a placeholder |
|
|
registrationSecret |
Registration parameters for QR code information secret |
|
|
rules |
See Rules Payload |
Rules for provisioning and authentication |
|
containersProtectionPolicy |
Configuration of containers protection policy |
|
|
oathKeys |
See OATHKey Payload |
OATH credentials configuration Array of OATHKey object |
|
publicKeys |
PUSH PKI credentials configuration Array of PKIKEY |
|
|
urn:hid:scim:api:idp:2.0:application:HIDApprove:APP OR urn:hid:scim:api:idp:2.0:application:HIDApprove:SDK |
HIDApproveAPPExtension |
Extension for this application Only one of the extensions is supported See HIDApproveAPPExtension Payload and HIDApproveSDKExtension Payload |
RegistrationSecret Payload
| Name | Default | Description |
|---|---|---|
|
registrationAuthenticationTypeCode |
None |
Unique Authentication Policy created for the push application device registration.
|
|
length |
10 |
QR code secret length: mobile/device authentication for registration, kdflen parameter on Devicetype |
|
charset |
ALPHA |
Alphanumeric only or ASCII with a length of 94 characters Possible values are :
|
|
validityPeriod |
1200 |
Validity of QR code secret |
|
retries |
1 |
Number of times the QR code secret can be used for registration |
|
registrationCredTypeCode |
None |
Unique Registration Credential Type code The value is auto-generated based on the application ID if it is not present |
|
registrationDeviceTypeCode |
None |
Unique Registration Device Type code The value is auto-generated based on the application ID if it is not present |
Rules Payload
The values here are not managed by the server but by approve. Updating this payload in a PUT call will override the whole Rules payload and replace it.
| Name | Default | Description |
|---|---|---|
|
version |
1 |
Version of the rules |
|
provisioning |
Copy
|
List of provisioning rules |
|
authentication |
None |
List of authentication rules |
RuleDefinition Payload
| Name | Default | Description |
|---|---|---|
|
ruleid |
See Rules Payload |
Unique ID for the rule |
|
phonestates |
See Rules Payload |
A list of platform characteristics containing one or more of the optional parameters |
|
outcome |
See Rules Payload |
Outcome of the rule |
|
message |
See Rules Payload |
Message for the rule |
|
bioclass |
Biometric class for authentication |
PhoneStates payload
| Name | Default | Description |
|---|---|---|
|
os |
Android |
The targeted operating system Possible values are:
|
|
osversion |
The major version of the targeted OS |
|
|
isRooted |
true |
The rooted/jailbroken state of the mobile device (Android and iOS only) Possible values are:
|
|
keystore |
sw |
The key store mode (Android only) Possible values are:
|
|
minosversion |
None |
Minimum OS version |
|
maxosversion |
None |
Maximum OS version |
ContainersProtectionPolicy Payload
| Name | Default | Description |
|---|---|---|
|
type |
biometricorpassword |
Type of key protection Possible values:
|
|
lockPolicy |
Lock policy settings |
|
|
passwordPolicy |
Password policy settings |
|
|
cachingPolicy |
Caching policy settings |
LockPolicy Payload
| Name | Default | Description |
|---|---|---|
|
type |
Delay |
Type of lock policy Possible values are:
|
|
initialDelay |
2 |
Initial delay for lock policy |
|
maxCounterValue |
6 |
Maximum counter value for lock policy |
PasswordPolicy Payload
| Name | Default | Description |
|---|---|---|
|
minLength |
8 |
Minimum length for password |
|
maxLength |
64 |
Maximum length for password |
|
restriction |
Password restrictions |
|
|
historyPolicy |
Password history policy |
PasswordPolicyRestrictions Payload
| Name | Default | Description |
|---|---|---|
|
minUpperCase |
0 |
Minimum number of uppercase letters |
|
minLowerCase |
0 |
Minimum number of lowercase letters |
|
minNumeric |
0 |
Minimum number of numeric characters |
|
minAlpha |
0 |
Minimum number of alphabetic characters |
|
minNonAlpha |
0 |
Minimum number of non-alphabetic characters |
|
maxUpperCase |
64 |
Maximum number of uppercase letters |
|
maxLowerCase |
64 |
Maximum number of lowercase letters |
|
maxNumeric |
64 |
Maximum number of numeric characters |
|
maxAlpha |
64 |
Maximum number of alphabetic characters |
|
maxNonAlpha |
64 |
Maximum number of non-alphabetic characters |
|
sequence |
deny |
Allow or deny sequence of number / characters Possible values are:
A sequence is a determined suite of numbers (1234 or 4321 or 1357) or letters (abc or ABC or aBc or cba) |
HistoryPolicy Payload
| Name | Default | Description |
|---|---|---|
|
maxHistory |
1 |
Maximum number of previous passwords to remember |
|
minAge |
0 |
Minimum age for password reuse |
|
maxAge |
0 |
Maximum age for password reuse |
CachingPolicy Payload
| Name | Default | Description |
|---|---|---|
|
enabled |
true |
Whether caching is enabled |
|
timeout |
30 |
Timeout for the caching policy |
OATHKey Payload
| Name | Default | Description |
|---|---|---|
|
protectionPolicyType |
container |
Specifies the type of protection policy for the key Possible values are:
|
|
keyLabel |
totpkey |
A unique label for the key, used for identification
|
|
algo |
totp |
Algorithm used for the key Possible values are:
|
|
otpLen |
8 |
Length of the OTP (One-Time Password). Valid for:
Ignored for other use cases. |
|
validityWindow |
30 |
Time window in seconds during which the OTP is valid |
|
authenticatorPolicyId |
None |
Unique identifier for the authentication policy
|
|
sessionValidPeriod |
3600000 |
Duration in milliseconds for which the session remains valid |
|
levelOfAssurance |
None |
Level of assurance for the authenticator, typically an ACR (Authentication Context Class Reference) value |
|
timestep |
30 |
Time step in seconds for TOTP (Time-based One-Time Password) >= 1 Valid for:
Ignored for other use cases. |
|
modes |
if algo=ocra; and no value passed here:
|
Modes of operation for OCRA keys Possible values are:
Valid for:
Ignored for other use cases. |
|
if algo=ocra and no value passed here:
|
Specifies the OCRA suite used for the key Valid for:
Ignored for other use cases. For a CHALLENGE_RESPONSE OCRA suite, the challenge length provided at the end of the suite will be used in the challengeLength payload field. |
PublicKey Payload
| Name | Default | Description |
|---|---|---|
|
protectionPolicyType |
container |
Specifies the type of protection policy for the key Possible values are:
|
|
keyLabel |
authkey |
A unique label for the key, used for identification
|
|
keyUsage |
authentication |
Usage of the key, either for signature or authentication Possible values are:
|
|
otpLen |
8 |
Length of the OTP (One-Time Password). |
|
authenticatorPolicyId |
None |
Unique identifier for the authentication policy
|
|
approvalStatus |
accept|deny|report |
The default approval status to be sent to the device Any string items are separated by | |
|
sessionValidPeriod |
3600000 |
Duration in milliseconds for which the session remains valid |
|
levelOfAssurance |
None |
Level of assurance for the authenticator, typically an ACR (Authentication Context Class Reference) value |
|
challengeTimeoutPeriod |
3600 |
Time in seconds during which a push request can be approved or denied |
|
challengeDisableThreshold |
8 |
Maximum number of unsigned requests before the authenticator's counter must be reset |
|
flaggedTransaction |
{ blockAuthenticator: true, autoUnblockCooldownPeriod: 900} |
Flagged transaction properties |
FlaggedTransaction Payload
| Name | Default | Description |
|---|---|---|
|
blockAuthenticator |
true |
If the authenticator is blocked when the user flags a transaction as suspicious |
|
autoUnblockCooldownPeriod |
|
Number of seconds (the cool-down period) after which a temporarily blocked authenticator will be automatically unblocked where:
|
HIDApproveAPPExtension Payload
| Name | Default | Description |
|---|---|---|
|
hidApproveCustomization |
Approve APP customization. |
HIDApproveCustomization Payload
The values here are not managed by the server but by approve. Updating this payload in a PUT call will override the whole HIDApproveCustomization payload and replace it.
| Name | Default | Description |
|---|---|---|
|
uiCustomization |
See UICutsomization |
Customization settings for the user interface |
|
contactDetails |
See ContactDetails |
Contact details configuration |
|
fileName |
None |
Store the customization JSON filename if a file is used instead of a JSON payload |
UICutsomization
| Name | Description |
|---|---|
|
version |
Version of the UI customization. |
|
label |
Label customization. |
|
label.id |
ID for the label. |
|
label.value |
Value for the label. |
|
color |
Color customization. |
|
color.id |
ID for the color. |
|
color.value |
Value for the color. |
|
bitmap |
Bitmap customization. |
|
bitmap.id |
ID for the bitmap. |
|
bitmap.value |
Value for the bitmap. |
|
fontColor |
Font color customization. |
|
fontColor.id |
ID for the font color. |
|
fontColor.value |
Value for the font color. |
|
ocrafields |
List of OCR fields. |
|
ocrafields[x].label |
Label for each OCR field. |
|
ocrafields[x].label.id |
ID for each OCR field label. |
|
ocrafields[x].label.value |
Value for each OCR field label. |
|
ocraAllowScan |
Whether OCR scanning is allowed. |
ContactDetails
| Name | Description |
|---|---|
|
phoneNumber |
Phone number for contact. |
|
|
Email configuration. |
|
email.address |
Email address. |
|
email.subject |
Email subject template. |
|
website |
Website URL. |
|
deviceId |
Whether to include device ID. |
|
deviceSN |
Whether to include device serial number. |
HIDApproveSDKExtension Payload
| Name | Default | Description |
|---|---|---|
|
pushNotifications |
Default push notifications messages, titles and Azure hub configuration |
PushNotifications Payload
| Name | Default | Description |
|---|---|---|
|
notificationTitle |
HID Approve notification |
Customization of the delivery gateway template for the notification title |
|
notificationMessage |
Validate transaction |
Customization of the delivery gateway template for the notification message |
|
AzureHub |
See AzureHub Payload |
Configuration for Azure hub credentials
|
AzureHub Payload
| Name | Default | Description |
|---|---|---|
|
hub |
<APP_ID>_azurehub |
The name of the Azure hub |
|
connectionString |
None |
The connection string for the Azure hub Mandatory |
|
ttl |
0 |
Time To Live for the Azure hub configuration |
Get an HIDApprove Application
GET /Application/HIDApprove/{uid}
where {uid} is the application ID.
Sample Response for HID Approve app
{
"schemas": [
"urn:hid:scim:api:idp:2.0:application:HIDApprove",
"urn:hid:scim:api:idp:2.0:application:HIDApprove:APP"
],
"id": "myAppApprove",
"name": "My Approve Application",
"notes" : "Description",
"devicetypeCode": "DT_APPROVE",
"maximumDevicePerUser" : 5,
"deviceAuthenticationTypeCode": "AT_SMK",
"challengeLength": 8,
"opMode": "default",
"registrationSecret": {
"length": 10,
"charset": "ALPHA",
"validityPeriod": 1200,
"registrationAuthenticationTypeCode": "AT_TDSOOB",
"registrationCredTypeCode": "CT_XXX",
"registrationDeviceTypeCode": "DT_XXX",
"retries": 1
},
"keysRefreshPeriod": 365,
"rules": {
"version": 1,
"provisioning": [
{
"ruleid": 1,
"phonestates": [
{
"os": "Android",
"osversion": "8",
"isRooted": "true"
},
{
"os": "Android",
"keystore": "sw"
}
],
"outcome": "deny",
"message": "Not allowed to provision for Android version 8 rooted phone or Android device with software key store"
},
{
"ruleid": 2,
"phonestates": [
{
"os": "iOS",
"minosversion": "13"
}
],
"outcome": "deny",
"message": "Not allowed to provision for iOS version below 13"
}
],
"authentication": [
{
"ruleid": 3,
"bioclass": 2,
"outcome": "allow"
}
]
},
"containersProtectionPolicy": {
"type": "biometricorpassword",
"lockPolicy": {
"type": "Delay",
"initialDelay": 2,
"maxCounterValue": 6
},
"passwordPolicy": {
"minLength": 6,
"maxLength": 64,
"restriction": {
"minUpperCase": 1,
"minLowerCase": 1,
"minNumeric": 1,
"minAlpha": 1,
"minNonAlpha": 1,
"maxUpperCase": 64,
"maxLowerCase": 64,
"maxNumeric": 64,
"maxAlpha": 64,
"maxNonAlpha": 64,
"sequence": "deny"
},
"historyPolicy": {
"maxHistory": 1,
"minAge": 1,
"maxAge": 180
}
},
"cachingPolicy": {
"enabled": true,
"timeout": 30
}
},
"oathKeys": [
{
"protectionPolicyType": "container/password/devicelockorpassword/biometricorpassword",
"keyLabel": "totpkey",
"algo": "totp",
"otpLen": 8,
"timestep": 30,
"validityWindow": 20,
"authenticatorPolicyId": "AT_OTP",
"sessionValidPeriod": 3600000,
"levelOfAssurance": "urn:hidaaas:policy:at_otp"
}
],
"publicKeys": [
{
"protectionPolicyType": "container",
"keyLabel": "authkey",
"keyUsage": "authentication",
"otpLen": 8,
"approvalStatus": "accept|deny|report",
"authenticatorPolicyId": "AT_PASA",
"sessionValidPeriod": 3600000,
"levelOfAssurance": "urn:hidaaas:policy:at_push",
"challengeTimeoutPeriod": 3600,
"challengeDisableThreshold": 8,
"flaggedTransaction": {
"blockAuthenticator": true,
"autoUnblockCooldownPeriod": 900
}
}
],
"urn:hid:scim:api:idp:2.0:application:HIDApprove:APP" {
"pushNotifications": {
"notificationTitle": "New Transaction",
"notificationMessage": "Validate transaction"
},
"hidApproveCustomization": {
"uicustomization": {
"version": 1,
"label": {
"id": "1",
"value": "Development Bank"
},
"color": {
"id": "2",
"value": "#032569"
},
"bitmap": {
"id": "3",
"value": "/9O/znDIq1z3el3lpL7WU/ +fWPmc89pnK945r32uVe GQxM2QwN2NlZDU3NWViMzA4MmFiODE3NTY3jE92bu3V4/mUl/Tp8f372nuo3Y/GQxM2QwN2NlZDU3NWViMzA4MmFiODE3NTY3"
},
"fontcolor": {
"id": "4",
"value": "#02597F"
},
"ocrafields": [
{
"label": {
"id": "5",
"value": "AccountId"
}
},
{
"label": {
"id": "6",
"value": "Date"
}
},
{
"label": {
"id": "7",
"value": "Amount"
}
}
],
"ocraallowscan": true
},
"contactdetails": {
"phonenumber": "+33612345678",
"email": {
"address": "user@hidglobal.com",
"subject": "Message from {$userid} for {$service}"
},
"website": "https:/website.com",
"deviceid": true,
"devicesn": true
}
}
}
}
Sample response for HID Approve SDK
{
"schemas": [
"urn:hid:scim:api:idp:2.0:application:HIDApprove",
"urn:hid:scim:api:idp:2.0:application:HIDApprove:SDK"
],
"id": "myAppApprove",
"name": "My Approve Application",
"notes" : "Description",
"devicetypeCode": "DT_APPROVE",
"maximumDevicePerUser" : 5,
"deviceAuthenticationTypeCode": "AT_SMK",
"challengeLength": 8,
"opMode": "default",
"registrationSecret": {
"length": 10,
"charset": "ALPHA",
"validityPeriod": 1200,
"registrationAuthenticationTypeCode": "AT_TDSOOB",
"registrationCredTypeCode": "CT_XXX",
"registrationDeviceTypeCode": "DT_XXX",
"retries": 1
},
"keysRefreshPeriod": 365,
"rules": {
"version": 1,
"provisioning": [
{
"ruleid": 1,
"phonestates": [
{
"os": "Android",
"osversion": "8",
"isRooted": "true"
},
{
"os": "Android",
"keystore": "sw"
}
],
"outcome": "deny",
"message": "Not allowed to provision for Android version 8 rooted phone or Android device with software key store"
},
{
"ruleid": 2,
"phonestates": [
{
"os": "iOS",
"minosversion": "13"
}
],
"outcome": "deny",
"message": "Not allowed to provision for iOS version below 13"
}
],
"authentication": [
{
"ruleid": 3,
"bioclass": 2,
"outcome": "allow"
}
]
},
"containersProtectionPolicy": {
"type": "biometricorpassword",
"lockPolicy": {
"type": "Delay",
"initialDelay": 2,
"maxCounterValue": 6
},
"passwordPolicy": {
"minLength": 6,
"maxLength": 64,
"restriction": {
"minUpperCase": 1,
"minLowerCase": 1,
"minNumeric": 1,
"minAlpha": 1,
"minNonAlpha": 1,
"maxUpperCase": 64,
"maxLowerCase": 64,
"maxNumeric": 64,
"maxAlpha": 64,
"maxNonAlpha": 64,
"sequence": "deny"
},
"historyPolicy": {
"maxHistory": 1,
"minAge": 1,
"maxAge": 180
}
},
"cachingPolicy": {
"enabled": true,
"timeout": 30
}
},
"oathKeys": [
{
"protectionPolicyType": "container/password/devicelockorpassword/biometricorpassword",
"keyLabel": "totpkey",
"algo": "totp",
"otpLen": 8,
"timestep": 30,
"validityWindow": 20,
"authenticatorPolicyId": "AT_OTP",
"sessionValidPeriod": 3600000,
"levelOfAssurance": "urn:hidaaas:policy:at_otp"
}
],
"publicKeys": [
{
"protectionPolicyType": "container",
"keyLabel": "authkey",
"keyUsage": "authentication",
"otpLen": 8,
"approvalStatus": "accept|deny|report",
"authenticatorPolicyId": "AT_PASA",
"sessionValidPeriod": 3600000,
"levelOfAssurance": "urn:hidaaas:policy:at_push",
"challengeTimeoutPeriod": 3600,
"challengeDisableThreshold": 8,
"flaggedTransaction": {
"blockAuthenticator": true,
"autoUnblockCooldownPeriod": 900
}
}
],
"urn:hid:scim:api:idp:2.0:application:HIDApprove:SDK" {
"pushNotifications": {
"notificationTitle": "New Transaction",
"notificationMessage": "Validate transaction",
"AzureHub": {
"hub": "myAzureHub",
"connectionString": "...",
"TTL": 0
}
}
}
}
Create an HIDApprove Application
POST /Application/HIDApprove
Sample Request for HID Approve app with the minimal set of parameters
{
"id": "AppID",
"name": "My Approve Application"
}
Sample request for the HID Approve SDK with the minimal set of parameters
POST /configuration/{tenant}/v2/Application/HIDApprove
{
"schemas": [
"urn:hid:scim:api:idp:2.0:application:HIDApprove:SDK"
],
"id": "AppID",
"name": "My Approve SDK application"
}
Sample request for HID Approve app with the full set of parameters
POST /configuration/{tenant}/v2/Application/HIDApprove
{
"id": "myAppId",
"name": "My Approve Application",
"notes" : "Description",
"maximumDevicePerUser" : 5,
"opMode": "default",
"registrationSecret": {
"length": 10,
"charset": "ALPHA",
"validityPeriod": 1200,
"retries": 1
},
"keysRefreshPeriod": 365,
"rules": {
"version": 1,
"provisioning": [
{
"ruleid": 1,
"phonestates": [
{
"os": "Android",
"osversion": "8",
"isRooted": "true"
},
{
"os": "Android",
"keystore": "sw"
}
],
"outcome": "deny",
"message": "Not allowed to provision for Android version 8 rooted phone or Android device with software key store"
},
{
"ruleid": 2,
"phonestates": [
{
"os": "iOS",
"minosversion": "13"
}
],
"outcome": "deny",
"message": "Not allowed to provision for iOS version below 13"
}
],
"authentication": [
{
"ruleid": 3,
"bioclass": 2,
"outcome": "allow"
}
]
},
"containersProtectionPolicy": {
"type": "password",
"lockPolicy": {
"type": "Delay",
"initialDelay": 2,
"maxCounterValue": 6
},
"passwordPolicy": {
"minLength": 6,
"maxLength": 64,
"restriction": {
"minUpperCase": 1,
"minLowerCase": 1,
"minNumeric": 1,
"minAlpha": 1,
"minNonAlpha": 1,
"maxUpperCase": 64,
"maxLowerCase": 64,
"maxNumeric": 64,
"maxAlpha": 64,
"maxNonAlpha": 64,
"sequence": "deny"
},
"historyPolicy": {
"maxHistory": 1,
"minAge": 1,
"maxAge": 180
}
},
"cachingPolicy": {
"enabled": true,
"timeout": 30
}
},
"oathKeys": [
{
"protectionPolicyType": "container",
"keyLabel": "totpkey",
"algo": "totp",
"otpLen": 8,
"timestep": 30,
"validityWindow": 20,
"sessionValidPeriod": 3600000,
"levelOfAssurance": "urn:hidaaas:policy:at_otp"
}
],
"publicKeys": [
{
"protectionPolicyType": "container",
"keyLabel": "authkey",
"keyUsage": "authentication",
"otpLen": 8,
"approvalStatus": "accept|deny|report",
"sessionValidPeriod": 3600000,
"levelOfAssurance": "urn:hidaaas:policy:at_push",
"challengeTimeoutPeriod": 3600,
"challengeDisableThreshold": 8,
"flaggedTransaction": {
"blockAuthenticator": true,
"autoUnblockCooldownPeriod": 900
}
}
],
"urn:hid:scim:api:idp:2.0:application:HIDApprove:APP" : {
"hidApproveCustomization": {
"uicustomization": {
"version": 1,
"label": {
"id": "1",
"value": "Development Bank"
},
"color": {
"id": "2",
"value": "#032569"
},
"bitmap": {
"id": "3",
"value": "/9O/znDIq1z3el3lpL7WU/ +fWPmc89pnK945r32uVe GQxM2QwN2NlZDU3NWViMzA4MmFiODE3NTY3jE92bu3V4/mUl/Tp8f372nuo3Y/GQxM2QwN2NlZDU3NWViMzA4MmFiODE3NTY3"
},
"fontcolor": {
"id": "4",
"value": "#02597F"
},
"ocrafields": [
{
"label": {
"id": "5",
"value": "AccountId"
}
},
{
"label": {
"id": "6",
"value": "Date"
}
},
{
"label": {
"id": "7",
"value": "Amount"
}
}
],
"ocraallowscan": true
},
"contactdetails": {
"phonenumber": "+33612345678",
"email": {
"address": "user@hidglobal.com",
"subject": "Message from {$userid} for {$service}"
},
"website": "https:/website.com",
"deviceid": true,
"devicesn": true
}
}
}
}
Sample request for HID Approve SDK with the full set of parameters
{
"id": "appid",
"name": "My Approve SDK Application",
"notes" : "Description",
"maximumDevicePerUser" : 5,
"opMode": "default",
"registrationSecret": {
"length": 10,
"charset": "ALPHA",
"validityPeriod": 1200,
"retries": 1
},
"keysRefreshPeriod": 365,
"rules": {
"version": 1,
"provisioning": [
{
"ruleid": 1,
"phonestates": [
{
"os": "Android",
"osversion": "8",
"isRooted": "true"
},
{
"os": "Android",
"keystore": "sw"
}
],
"outcome": "deny",
"message": "Not allowed to provision for Android version 8 rooted phone or Android device with software key store"
},
{
"ruleid": 2,
"phonestates": [
{
"os": "iOS",
"minosversion": "13"
}
],
"outcome": "deny",
"message": "Not allowed to provision for iOS version below 13"
}
],
"authentication": [
{
"ruleid": 3,
"bioclass": 2,
"outcome": "allow"
}
]
},
"containersProtectionPolicy": {
"type": "device",
"lockPolicy": {
"type": "Delay",
"initialDelay": 2,
"maxCounterValue": 6
},
"passwordPolicy": {
"minLength": 6,
"maxLength": 64,
"restriction": {
"minUpperCase": 1,
"minLowerCase": 1,
"minNumeric": 1,
"minAlpha": 1,
"minNonAlpha": 1,
"maxUpperCase": 64,
"maxLowerCase": 64,
"maxNumeric": 64,
"maxAlpha": 64,
"maxNonAlpha": 64,
"sequence": "deny"
},
"historyPolicy": {
"maxHistory": 1,
"minAge": 1,
"maxAge": 180
}
},
"cachingPolicy": {
"enabled": true,
"timeout": 30
}
},
"oathKeys": [
{
"protectionPolicyType": "container",
"keyLabel": "totpkey",
"algo": "totp",
"otpLen": 8,
"timestep": 30,
"validityWindow": 20,
"sessionValidPeriod": 3600000,
"levelOfAssurance": "urn:hidaaas:policy:at_otp"
}
],
"publicKeys": [
{
"protectionPolicyType": "container",
"keyLabel": "authkey",
"keyUsage": "authentication",
"otpLen": 8,
"approvalStatus": "accept|deny|report",
"sessionValidPeriod": 3600000,
"levelOfAssurance": "urn:hidaaas:policy:at_push",
"challengeTimeoutPeriod": 3600,
"challengeDisableThreshold": 8,
"flaggedTransaction": {
"blockAuthenticator": true,
"autoUnblockCooldownPeriod": 900
}
}
],
"urn:hid:scim:api:idp:2.0:application:HIDApprove:SDK" : {
"pushNotifications": {
"notificationTitle": "New Transaction",
"notificationMessage": "Validate transaction",
"azureHub": {
"hub": "myAzureHub",
"connectionString": "...",
"ttl": 0
}
}
}
}
The application object is created with the following:
-
Channel - CH_APPROVE
-
Device Type (deviceTypeCode) - DT_XXX, automatically generated if not defined in the request (based on the urn:hid:scim:api:idp:2.0:device:type:Push extension)
-
Authentication Policy for registration - AT_TDSOOB (based on the urn:hid:scim:api:idp:2.0:policy:authenticator:OOB extension)
-
Credential Type for registration - CT_XXX (based on the urn:hid:scim:api:idp:2.0:credential:type:PushOOB extension)
-
Device Type for registration - DT_XXX (based on the urn:hid:scim:api:idp:2.0:device:type:Virtual:OOB extension)
-
Authentication Policy shared key - AT_SMK (based on the urn:hid:scim:api:idp:2.0:policy:authenticator:PUSH extension)
-
Credential Type shared key - CT_SMK (based on the urn:hid:scim:api:idp:2.0:credential:type:PushSMK extension)
-
The newly created policies (AT_TDSOOB, AT_SMK) are allowed on the CH_APPROVE channel
-
If silent lock is defined:
-
A new mobile operation protection credential type (CT_OPPRO) is created
-
-
If oathKeys are defined:
-
An authentication policy (AT_OTP, based on the urn:hid:scim:api:idp:2.0:policy:authenticator:OTP extension) is created
-
A Credential Type per key (CT_TDSOT, based on the urn:hid:scim:api:idp:2.0:credential:type:PushOATH extension) is created
-
-
If publicKeys are defined:
-
The push authentication policy AT_PASA/AT_TDS (based on the urn:hid:scim:api:idp:2.0:policy:authenticator:PUSH extension) is reused
-
A Credential Type per key PUSH_OATH (based on the CT_PASAV4/CT_TDSV4, urn:hid:scim:api:idp:2.0:credential:type:PushPKI extension) is created
-
The policies are allowed on the CH_APPROVE channel
-
-
A new Delivery Gateway is created
Sample Response for HID Approve app with a full set of parameters
{
"schemas": [
"urn:hid:scim:api:idp:2.0:application:HIDApprove",
"urn:hid:scim:api:idp:2.0:application:HIDApprove:APP"
],
"id": "myAppApprove",
"name": "My Approve Application",
"notes" : "Description",
"devicetypeCode": "DT_APPROVE",
"maximumDevicePerUser" : 5,
"deviceAuthenticationTypeCode": "AT_SMK",
"challengeLength": 8,
"opMode": "default",
"registrationSecret": {
"length": 10,
"charset": "ALPHA",
"validityPeriod": 1200,
"registrationAuthenticationTypeCode": "AT_TDSOOB",
"registrationCredTypeCode": "CT_XXX",
"registrationDeviceTypeCode": "DT_XXX",
"retries": 1
},
"keysRefreshPeriod": 365,
"rules": {
"version": 1,
"provisioning": [
{
"ruleid": 1,
"phonestates": [
{
"os": "Android",
"osversion": "8",
"isRooted": "true"
},
{
"os": "Android",
"keystore": "sw"
}
],
"outcome": "deny",
"message": "Not allowed to provision for Android version 8 rooted phone or Android device with software key store"
},
{
"ruleid": 2,
"phonestates": [
{
"os": "iOS",
"minosversion": "13"
}
],
"outcome": "deny",
"message": "Not allowed to provision for iOS version below 13"
}
],
"authentication": [
{
"ruleid": 3,
"bioclass": 2,
"outcome": "allow"
}
]
},
"containersProtectionPolicy": {
"type": "biometricorpassword",
"lockPolicy": {
"type": "Delay",
"initialDelay": 2,
"maxCounterValue": 6
},
"passwordPolicy": {
"minLength": 6,
"maxLength": 64,
"restriction": {
"minUpperCase": 1,
"minLowerCase": 1,
"minNumeric": 1,
"minAlpha": 1,
"minNonAlpha": 1,
"maxUpperCase": 64,
"maxLowerCase": 64,
"maxNumeric": 64,
"maxAlpha": 64,
"maxNonAlpha": 64,
"sequence": "deny"
},
"historyPolicy": {
"maxHistory": 1,
"minAge": 1,
"maxAge": 180
}
},
"cachingPolicy": {
"enabled": true,
"timeout": 30
}
},
"oathKeys": [
{
"protectionPolicyType": "container/password/devicelockorpassword/biometricorpassword",
"keyLabel": "totpkey",
"algo": "totp",
"otpLen": 8,
"timestep": 30,
"validityWindow": 20,
"authenticatorPolicyId": "AT_OTP",
"sessionValidPeriod": 3600000,
"levelOfAssurance": "urn:hidaaas:policy:at_otp"
}
],
"publicKeys": [
{
"protectionPolicyType": "container",
"keyLabel": "authkey",
"keyUsage": "authentication",
"otpLen": 8,
"approvalStatus": "accept|deny|report",
"authenticatorPolicyId": "AT_PASA",
"sessionValidPeriod": 3600000,
"levelOfAssurance": "urn:hidaaas:policy:at_push",
"challengeTimeoutPeriod": 3600,
"challengeDisableThreshold": 8,
"flaggedTransaction": {
"blockAuthenticator": true,
"autoUnblockCooldownPeriod": 900
}
}
],
"urn:hid:scim:api:idp:2.0:application:HIDApprove:APP" {
"pushNotifications": {
"notificationTitle": "New Transaction",
"notificationMessage": "Validate transaction"
},
"hidApproveCustomization": {
"uicustomization": {
"version": 1,
"label": {
"id": "1",
"value": "Development Bank"
},
"color": {
"id": "2",
"value": "#032569"
},
"bitmap": {
"id": "3",
"value": "/9O/znDIq1z3el3lpL7WU/ +fWPmc89pnK945r32uVe GQxM2QwN2NlZDU3NWViMzA4MmFiODE3NTY3jE92bu3V4/mUl/Tp8f372nuo3Y/GQxM2QwN2NlZDU3NWViMzA4MmFiODE3NTY3"
},
"fontcolor": {
"id": "4",
"value": "#02597F"
},
"ocrafields": [
{
"label": {
"id": "5",
"value": "AccountId"
}
},
{
"label": {
"id": "6",
"value": "Date"
}
},
{
"label": {
"id": "7",
"value": "Amount"
}
}
],
"ocraallowscan": true
},
"contactdetails": {
"phonenumber": "+33612345678",
"email": {
"address": "user@hidglobal.com",
"subject": "Message from {$userid} for {$service}"
},
"website": "https:/website.com",
"deviceid": true,
"devicesn": true
}
}
}
}
Sample response for HID Approve SDK with a full set of parameters
{
"schemas": [
"urn:hid:scim:api:idp:2.0:application:HIDApprove",
"urn:hid:scim:api:idp:2.0:application:HIDApprove:SDK"
],
"id": "myAppApprove",
"name": "My Approve Application",
"notes" : "Description",
"devicetypeCode": "DT_APPROVE",
"maximumDevicePerUser" : 5,
"deviceAuthenticationTypeCode": "AT_SMK",
"challengeLength": 8,
"opMode": "default",
"registrationSecret": {
"length": 10,
"charset": "ALPHA",
"validityPeriod": 1200,
"registrationAuthenticationTypeCode": "AT_TDSOOB",
"registrationCredTypeCode": "CT_XXX",
"registrationDeviceTypeCode": "DT_XXX",
"retries": 1
},
"keysRefreshPeriod": 365,
"rules": {
"version": 1,
"provisioning": [
{
"ruleid": 1,
"phonestates": [
{
"os": "Android",
"osversion": "8",
"isRooted": "true"
},
{
"os": "Android",
"keystore": "sw"
}
],
"outcome": "deny",
"message": "Not allowed to provision for Android version 8 rooted phone or Android device with software key store"
},
{
"ruleid": 2,
"phonestates": [
{
"os": "iOS",
"minosversion": "13"
}
],
"outcome": "deny",
"message": "Not allowed to provision for iOS version below 13"
}
],
"authentication": [
{
"ruleid": 3,
"bioclass": 2,
"outcome": "allow"
}
]
},
"containersProtectionPolicy": {
"type": "biometricorpassword",
"lockPolicy": {
"type": "Delay",
"initialDelay": 2,
"maxCounterValue": 6
},
"passwordPolicy": {
"minLength": 6,
"maxLength": 64,
"restriction": {
"minUpperCase": 1,
"minLowerCase": 1,
"minNumeric": 1,
"minAlpha": 1,
"minNonAlpha": 1,
"maxUpperCase": 64,
"maxLowerCase": 64,
"maxNumeric": 64,
"maxAlpha": 64,
"maxNonAlpha": 64,
"sequence": "deny"
},
"historyPolicy": {
"maxHistory": 1,
"minAge": 1,
"maxAge": 180
}
},
"cachingPolicy": {
"enabled": true,
"timeout": 30
}
},
"oathKeys": [
{
"protectionPolicyType": "container/password/devicelockorpassword/biometricorpassword",
"keyLabel": "totpkey",
"algo": "totp",
"otpLen": 8,
"timestep": 30,
"validityWindow": 20,
"authenticatorPolicyId": "AT_OTP",
"sessionValidPeriod": 3600000,
"levelOfAssurance": "urn:hidaaas:policy:at_otp"
}
],
"publicKeys": [
{
"protectionPolicyType": "container",
"keyLabel": "authkey",
"keyUsage": "authentication",
"otpLen": 8,
"approvalStatus": "accept|deny|report",
"authenticatorPolicyId": "AT_PASA",
"sessionValidPeriod": 3600000,
"levelOfAssurance": "urn:hidaaas:policy:at_push",
"challengeTimeoutPeriod": 3600,
"challengeDisableThreshold": 8,
"flaggedTransaction": {
"blockAuthenticator": true,
"autoUnblockCooldownPeriod": 900
}
}
],
"urn:hid:scim:api:idp:2.0:application:HIDApprove:SDK" {
"pushNotifications": {
"notificationTitle": "New Transaction",
"notificationMessage": "Validate transaction",
"AzureHub": {
"hub": "myAzureHub",
"connectionString": "...",
"TTL": 0
}
}
}
}
Update an HIDApprove Application
PUT /Application/HIDApprove/{uid}
where {uid} is the adapter ID.
-
You cannot update the IDs for the authentication policies, credential types and device types.
-
You can update the ID but it must be unique.
Sample request for HID Approve app
PUT /configuration/{tenant}/v2/Application/HIDApprove/myAppApprove
{
"name": "My Approve Application",
"notes" : "Description",
"maximumDevicePerUser" : 5,
"opMode": "default",
"registrationSecret": {
"length": 10,
"charset": "ALPHA",
"validityPeriod": 1200,
"retries": 1
},
"keysRefreshPeriod": 365,
"rules": {
"version": 1,
"provisioning": [
{
"ruleid": 1,
"phonestates": [
{
"os": "Android",
"osversion": "8",
"isRooted": "true"
},
{
"os": "Android",
"keystore": "sw"
}
],
"outcome": "deny",
"message": "Not allowed to provision for Android version 8 rooted phone or Android device with software key store"
},
{
"ruleid": 2,
"phonestates": [
{
"os": "iOS",
"minosversion": "13"
}
],
"outcome": "deny",
"message": "Not allowed to provision for iOS version below 13"
}
],
"authentication": [
{
"ruleid": 3,
"bioclass": 2,
"outcome": "allow"
}
]
},
"containersProtectionPolicy": {
"type": "password",
"lockPolicy": {
"type": "Delay",
"initialDelay": 2,
"maxCounterValue": 6
},
"passwordPolicy": {
"minLength": 6,
"maxLength": 64,
"restriction": {
"minUpperCase": 1,
"minLowerCase": 1,
"minNumeric": 1,
"minAlpha": 1,
"minNonAlpha": 1,
"maxUpperCase": 64,
"maxLowerCase": 64,
"maxNumeric": 64,
"maxAlpha": 64,
"maxNonAlpha": 64,
"sequence": "deny"
},
"historyPolicy": {
"maxHistory": 1,
"minAge": 1,
"maxAge": 180
}
},
"cachingPolicy": {
"enabled": true,
"timeout": 30
}
},
"oathKeys": [
{
"protectionPolicyType": "container",
"keyLabel": "totpkey",
"algo": "totp", 0,
"levelOfAssurance": "urn:hidaaas:policy:at_otp"
}
],
"publicKeys": [
{
"keyLabel": "authkey",
"action": "DELETE"
}
],
"urn:hid:scim:api:idp:2.0:application:HIDApprove:APP" : {
"hidApproveCustomization": {
"uicustomization": {
"version": 1,
"label": {
"id": "1",
"value": "Development Bank"
},
"color": {
"id": "2",
"value": "#032569"
},
"bitmap": {
"id": "3",
"value": "/9O/znDIq1z3el3lpL7WU/ +fWPmc89pnK945r32uVe GQxM2QwN2NlZDU3NWViMzA4MmFiODE3NTY3jE92bu3V4/mUl/Tp8f372nuo3Y/GQxM2QwN2NlZDU3NWViMzA4MmFiODE3NTY3"
},
"fontcolor": {
"id": "4",
"value": "#02597F"
},
"ocrafields": [
{
"label": {
"id": "5",
"value": "AccountId"
}
},
{
"label": {
"id": "6",
"value": "Date"
}
},
{
"label": {
"id": "7",
"value": "Amount"
}
}
],
"ocraallowscan": true
},
"contactdetails": {
"phonenumber": "+33612345678",
"email": {
"address": "user@hidglobal.com",
"subject": "Message from {$userid} for {$service}"
},
"website": "https:/website.com",
"deviceid": true,
"devicesn": true
}
}
}
}
Sample request for HID Approve SDK
PUT /configuration/{tenant}/v2/Application/HIDApprove/myAppApproveSDK
{
"name": "My Approve SDK Application",
"notes" : "Description",
"maximumDevicePerUser" : 5,
"opMode": "default",
"registrationSecret": {
"length": 10,
"charset": "ALPHA",
"validityPeriod": 1200,
"retries": 1
},
"keysRefreshPeriod": 365,
"rules": {
"version": 1,
"provisioning": [
{
"ruleid": 1,
"phonestates": [
{
"os": "Android",
"osversion": "8",
"isRooted": "true"
},
{
"os": "Android",
"keystore": "sw"
}
],
"outcome": "deny",
"message": "Not allowed to provision for Android version 8 rooted phone or Android device with software key store"
},
{
"ruleid": 2,
"phonestates": [
{
"os": "iOS",
"minosversion": "13"
}
],
"outcome": "deny",
"message": "Not allowed to provision for iOS version below 13"
}
],
"authentication": [
{
"ruleid": 3,
"bioclass": 2,
"outcome": "allow"
}
]
},
"containersProtectionPolicy": {
"type": "device",
"lockPolicy": {
"type": "Delay",
"initialDelay": 2,
"maxCounterValue": 6
},
"passwordPolicy": {
"minLength": 6,
"maxLength": 64,
"restriction": {
"minUpperCase": 1,
"minLowerCase": 1,
"minNumeric": 1,
"minAlpha": 1,
"minNonAlpha": 1,
"maxUpperCase": 64,
"maxLowerCase": 64,
"maxNumeric": 64,
"maxAlpha": 64,
"maxNonAlpha": 64,
"sequence": "deny"
},
"historyPolicy": {
"maxHistory": 1,
"minAge": 1,
"maxAge": 180
}
},
"cachingPolicy": {
"enabled": true,
"timeout": 30
}
},
"oathKeys": [
{
"keyLabel": "totpkey",
"action": "DELETE"
}
],
"publicKeys": [
{
"protectionPolicyType": "container",
"keyLabel": "authkey",
"keyUsage": "authentication",
"otpLen": 8,
"approvalStatus": "accept|deny|report",
"sessionValidPeriod": 3600000,
"levelOfAssurance": "urn:hidaaas:policy:at_push",
"challengeTimeoutPeriod": 3600,
"challengeDisableThreshold": 8
}
],
"urn:hid:scim:api:idp:2.0:application:HIDApprove:SDK" : {
"pushNotifications": {
"notificationTitle": "New Transaction",
"notificationMessage": "Validate transaction",
"azureHub": {
"hub": "myAzureHub",
"connectionString": "...",
"ttl": 0
}
}
}
}
The response contains a full set of parameters.
Delete an HIDApprove Application
DELETE /Application/HIDApprove/{uid}
Where {uid} is the adapter ID.