Application or API schema

A Veracity application represents your app/api in Veracity Identity and allow you to connect to api's and/or expose api scopes

A Veracity application represents your app/api in Veracity Identity and allow you to connect to api's and/or expose api scopes

Schema

Name Description Accepted values
name The name of the app registration. Resource names are unique per project. Setting a new name will result in a new resource, while using an exsisting name will result in an update. string
Character limit: 4-200
Valid characters: Alphanumerics, underscores, commas, whitespaces, and hyphens
sku App registration type code SKU
resourceType Type of resource string, e.g veracity.service, veracity.application
locked Locks changes from the developer UI. Can be manually unlocked. VRM ignores this lock. Best used to avoid overwritting manual changes on next deploy true/false
sections Configuration sections Sections

SKU

Value Description
app Client application
api API
app;api An API that is also a client application

Sections

Property Description Accepted value
properties Basic properties Properties
advanced Advanced properties Advanced

Properties

Property Description Accepted value
isApi Turn on if your registration publishes api scopes. If true at least 1 published scope must be defined true/false
clientType the type of client application ClientType
applicationUrl The root url of your application must be https, localhost is excempt from this rule
redirectUrls the return url for the authentication flows must be https, localhost is excempt from this rule
publishedScopes List of scopes to publish for an api
services List of services the app registration can manage subscriptions for
secretManagementOptions Defines how the VRM is going to treat secret rotation none = no secret created

rollover = creates up to two secrets, the oldest secret is then replaced

onlyIfEmpty = Only creates if no secret is present

ClientType

Value Description
None
Confidential Confidential client application (e.g web server)
Public Public client application
Spa Single page appliation, public client using Authorization code flow with PKCE
ClientCredential App using client credentials
Native Mobile or desktop application

Advanced

Property Description Accepted value
apiProductSubscriptions the list of api products to create subscriptions for. Adding the Veracity platform apis is not nessesary as this is added in the backend.
apiProductSubscriptions.productId the product id that you will add (mandatory)
apiProductSubscriptions.productName The name of the api product (optional)
apiAcceses Set up access to api scopes (only for client applications)
apiAcceses.apiClientId the app id of the api you want a grant for
apiAcceses.scopes The scopes to get a grant for
clients Give access to your api scope(s) to other external clients (only for apis)
clients.clientId The app id of the client you want to grant access to Test = a4a8e726-c1cc-407c-83a0-4ce37f1ce130

Stag = 28b7ec7b-db04-40bb-a042-b7ac5a8b36be

Prod = 83054ebf-1d7b-43f5-82ad-b2bde84d7b75
clients.scopes the scopes you will grant access to

Examples

Example of an API with no client application. The same configuration can be used in combination with other client application types, sku then needs to be set as app;api

{
  "name": "$parameter('appName')",
  "sku": "api",
  "resourceType": "veracity.application",
  "locked":true,
  "sections": {
    "properties": {
      "isApi": true,
      "clientType": "None",
      "redirectUrls": [],
      "applicationUrl": null,
      "publishedScopes": [
        {
          "description": "Short description of scope",
          "scopeName": "user_impersonation"
        },
        {
          "description": "Short description of scope",
          "scopeName": "user_management"
        }
      ],
      "services": [],
      "secretManagementOptions": null
    },
    "advanced": {
      "apiProductSubscriptions": [
        {
          "productId": "veracity-platfrom-api",
          "productName": "Veracity Platform API"
        }
      ],
      "clients": [],
      "apiAcceses": [
        {
          "apiClientId": "$parameter('apiClientId')",
          "scopes": ["user_impersonation"]
        }
      ]
    }
  }
}

Example of a confidential client application

{
  "name": "$parameter('appName')",
  "sku": "app",
  "resourceType": "veracity.application",
  "locked":true,
  "sections": {
    "properties": {
      "isApi": false,
      "clientType": "Confidential",
      "redirectUrls": ["$parameter('appReplyUrl')"],
      "applicationUrl": "$parameter('appUrl')",
      "allowImplicitGrantFlow": true,
      "publishedScopes": [],
      "services": [],
      "secretManagementOptions": "rollover"
    },
    "advanced": {
      "apiProductSubscriptions": [
        {
          "productId": "veracity-platfrom-api",
          "productName": "Veracity Platform API"
        }
      ],
      "clients": [],
      "apiAcceses": [
        {
          "apiClientId": "$parameter('apiClientId')",
          "scopes": ["user_impersonation"]
        }
      ]
    }
  }
}

Example of a public client application

{
  "name": "$parameter('appName')",
  "sku": "app",
  "resourceType": "veracity.application",
  "locked":true,
  "sections": {
    "properties": {
      "isApi": false,
      "clientType": "Public",
      "redirectUrls": ["$parameter('appReplyUrl')"],
      "applicationUrl": "$parameter('appUrl')",
      "publishedScopes": [],
      "services": [],
    },
    "advanced": {
      "apiProductSubscriptions": [
        {
          "productId": "veracity-platfrom-api",
          "productName": "Veracity Platform API"
        }
      ],
      "clients": [],
      "apiAcceses": [
        {
          "apiClientId": "$parameter('apiClientId')",
          "scopes": ["user_impersonation"]
        }
      ]
    }
  }
}

Example of a native client application

{
  "name": "$parameter('appName')",
  "sku": "app",
  "resourceType": "veracity.application",
  "locked": true,
  "sections": {
    "properties": {
      "isApi": false,
      "clientType": "Native",
      "redirectUrls": ["$parameter('nativeReply')"],
      "publishedScopes": [],
      "services": [],
   },
   "advanced": {
     "apiProductSubscriptions": [
       {
         "productId": "veracity-platfrom-api",
         "productName": "Veracity Platform API"
       }
      ],
     "clients": [],
     "apiAcceses": [
       {
         "apiClientId": "$parameter('apiClientId')",
         "scopes": ["user_impersonation"]
       }
      ]
    }
  }
}

Example of a client credential client application

{
  "name": "$parameter('appName')",
  "sku": "app",
  "resourceType": "veracity.application",
  "locked": true,
  "sections": {
    "properties": {
      "isApi": false,
      "clientType": "ClientCredentials",
      "redirectUrls": [],
      "applicationUrl": null,
      "publishedScopes": [],
      "services": [],
      "secretManagementOptions": "none",
   },
   "advanced": {
     "apiProductSubscriptions": [
       {
         "productId": "veracity-platfrom-api",
         "productName": "Veracity Platform API"
       }
      ],
     "clients": [],
     "apiAcceses": [
       {
         "apiClientId": "$parameter('apiClientId')",
         "scopes": ["user_impersonation"]
       }
      ]
    }
  }
}

Example of a spa client application

{
  "name": "$parameter('appName')",
  "sku": "app",
  "resourceType": "veracity.application",
  "locked": true,
  "sections": {
    "properties": {
      "isApi": false,
      "clientType": "Spa",
      "redirectUrls": ["$parameter('appReplyUrl')"],
      "applicationUrl": null,
      "publishedScopes": [],
      "services": [],
   },
   "advanced": {
     "apiProductSubscriptions": [
       {
         "productId": "veracity-platfrom-api",
         "productName": "Veracity Platform API"
       }
      ],
     "clients": [],
     "apiAcceses": [
       {
         "apiClientId": "$parameter('apiClientId')",
         "scopes": ["user_impersonation"]
       }
      ]
    }
  }
}