Federated Gateway Output

The Federated Gateway produces data in the following format:

{
    "at_hash": "udfkrvnPivU4uE0BYeUcXA",
    "sub": "[email protected]",
    "aud": "18976aa43dca4b4e",
    "endpoint": {
      "status": "success",
      "errorCode": "",
      "errorDescription": "",
      "credential": "[email protected]",
      "credentialCreationDate": "02/08/2022 21:09:35 UTC",
      "mbun": "f3f2a548-6c67-4155-8e30-bb1a28c84647",
      "maxToken": "EnMbLwzgyefV3dndx9d5r1C-iEyZ8PpRhuIeIFlGpIE",
      "endpointInstanceList": [
          //details of each step (api key) in verification workflow
        ]
    },
    "policyDecision": "approve",
    "idwRiskScore": "100",
    "iss": "https://preprod1.iddataweb.com/preprod-axn",
    "idwTrustScore": "100",
    "exp": 1644355218,
    "iat": 1644354618,
    "jti": "008ab766-a58d-4489-b4cd-85188d2562d0"
  }

Notes

  • The 'sub' field is the same value as credential. sub is used in conformance with the OpenID Connect standard.
  • The jti is the same value as asi and transaction_id (used elsewhere.) jti is used in conformance with the OpenID Connect standard.
  • policyDecision is the overall decision after the workflow was complete, as described here.
    • Note - Policy decisions returned from the gateway will always be either APPROVE or DENY. Obligations are handled during the workflow to step up to other services.
    • Note - Your policy can be customized via the AXN Admin portal. More information is available on the Policy Decisions page.

endpointInstanceList

The endpointInstanceList is an array of JSON objects which describe each step of the verification process. For example - if your verification workflow contains 3 steps, you will see 3 objects in the endpointInstanceList array.

The format of each object in the endpointInstanceList is the following:

{
        "apikey": "12345",
        "userAttributes": [
          //user attributes obtained from user during this step.
        ],
        "preferenceAttributes": [
          //preferences obtained from user (deprecated)
        ],
        "userAssertionList": [
          //Assertion results for each Attribute Provider.
        ],
        "policyDecision": {
          //Details on the decision made about a given user. 
          }
      }

So, an example of a full output may be:

{
  "at_hash": "udfkrvnPivU4uE0BYeUcXA",
  "sub": "[email protected]",
  "aud": "18976aa43dca4b4e",
  "endpoint": {
    "status": "success",
    "errorCode": "",
    "errorDescription": "",
    "credential": "[email protected]",
    "credentialCreationDate": "02/08/2022 21:09:35 UTC",
    "mbun": "f3f2a548-6c67-4155-8e30-bb1a28c84647",
    "maxToken": "EnMbLwzgyefV3dndx9d5r1C-iEyZ8PpRhuIeIFlGpIE",
    "endpointInstanceList": [
      {
        "apikey": "12345",
        "userAttributes": [
          {
            "attributeType": "Country",
            "values": {
              "country": "US"
            },
            "dateCreated": "02/08/2022 21:09:39 UTC"
          }
        ],
        "acquiredAttributes": [
          {
            "attributeType": "DeviceType",
            "values": {
              "deviceType": "desktop"
            },
            "dateCreated": "02/08/2022 21:09:40 UTC"
          }
        ],
        "preferenceAttributes": [],
        "userAssertionList": [],
        "policyDecision": {
          "conclusion": "obligation",
          "obligationApiKey": "55555",
          "status": "success",
          "selectedPolicyID": 20124,
          "decisionDetail": "{}"
        }
      },
      {
        "apikey": "55555",
        "userAttributes": [
          {
            "attributeType": "FullName",
            "values": {
              "fname": "daryl",
              "lname": "johnson"
            },
            "dateCreated": "02/08/2022 21:09:55 UTC"
          },
          {
            "attributeType": "InternationalAddress",
            "values": {
              "country": "US",
              "locality": "Vienna",
              "route": "main Ave",
              "administrative_area_level_1": "VA",
              "street_number": "2358",
              "neighborhood": "The Main District",
              "postal_code": "23444"
            },
            "dateCreated": "02/08/2022 21:09:55 UTC"
          },
          {
            "attributeType": "InternationalTelephone",
            "values": {
              "dialCode": "1",
              "telephone": "(123) 456-7890"
            },
            "dateCreated": "02/08/2022 21:09:55 UTC"
          }
        ],
        "acquiredAttributes": [
          {
            "attributeType": "AssertionScore",
            "values": {
              "assertionScore": "88"
            },
            "dateCreated": "02/08/2022 21:09:57 UTC"
          }
        ],
        "preferenceAttributes": [],
        "userAssertionList": [
          {
            "provider": "Experian",
            "serviceOffering": "Experian Precise ID",
            "dateAsserted": "02/08/2022 21:09:55 UTC",
            "assertions": {
              "test.fraudulentActivityAddress": "pass",
              "link.fullName_address": "pass",
              "link.lastName_address": "pass",
              "test.noAddressConflicts": "pass",
              "test.address90DaysOld": "pass",
              "test.fileOneAddressMatch": "pass",
              "test.addressIsResidential": "pass",
              "link.lastName_phone": "pass",
              "link.phone_address": "pass"
            }
          },
          {
            "provider": "Boku",
            "serviceOffering": "Boku - International Mobile Carrier Reverse Lookup",
            "dateAsserted": "02/08/2022 21:09:57 UTC",
            "assertions": {
              "link.phone_zip": "pass",
              "test.lastPortGT14days": "unverified",
              "test.phone_landline_mobile_personal": "pass",
              "test.phoneActive": "pass",
              "test.lastPortGT30days": "unverified",
              "link.lastName_phone": "pass",
              "link.phone_state": "pass",
              "link.phone_address": "pass",
              "link.fullName_phone": "pass"
            }
          }
        ],
        "policyDecision": {
          "conclusion": "obligation",
          "obligationApiKey": "7777",
          "status": "success",
          "selectedPolicyID": 12391,
          "decisionDetail": "{}"
        }
      },
      {
        "apikey": "7777",
        "userAttributes": [
          {
            "attributeType": "InternationalTelephone",
            "values": {
              "dialCode": "1",
              "telephone": "(123) 456-7890"
            },
            "dateCreated": "02/08/2022 21:09:55 UTC"
          },
          {
            "attributeType": "PINDeliveryPreference",
            "values": {
              "pindeliverypreference": "sms"
            },
            "dateCreated": "02/08/2022 21:10:03 UTC"
          }
        ],
        "acquiredAttributes": [
          {
            "attributeType": "RawAssertionScore",
            "values": {
              "rawAssertionScore": "1"
            },
            "dateCreated": "02/08/2022 21:10:17 UTC"
          },
          {
            "attributeType": "AssertionScore",
            "values": {
              "assertionScore": "100"
            },
            "dateCreated": "02/08/2022 21:10:17 UTC"
          },
          {
            "attributeType": "DeviceType",
            "values": {
              "deviceType": "desktop"
            },
            "dateCreated": "02/08/2022 21:10:18 UTC"
          },
          {
            "attributeType": "IDWScore",
            "values": {
              "idwScore": "100"
            },
            "dateCreated": "02/08/2022 21:10:17 UTC"
          }
        ],
        "preferenceAttributes": [],
        "userAssertionList": [
          {
            "provider": "IDDataWeb",
            "serviceOffering": "IDDataWeb International Phone PIN Service",
            "dateAsserted": "02/08/2022 21:10:17 UTC",
            "assertions": {
              "test.device": "pass"
            }
          }
        ],
        "policyDecision": {
          "conclusion": "approve",
          "status": "success",
          "selectedPolicyID": 12392,
          "decisionDetail": "{}"
        }
      }
    ]
  },
  "policyDecision": "approve",
  "idwRiskScore": "100",
  "iss": "https://preprod1.iddataweb.com/preprod-axn",
  "idwTrustScore": "100",
  "exp": 1644355218,
  "iat": 1644354618,
  "jti": "008ab766-a58d-4489-b4cd-85188d2562d0"
}

In this example, you can follow the progress of the user through the objects in the endpointInstanceList array.

  • step 1 - selected country of US.
  • step 2 - submitted PII, and was verified.
  • step 3 - completed OTP phone possession check, which led to policyDecision of "approve" for that step. This led to the final policyDecision of approve at the top level of the JSON.