Postman Collections
Example Postman collections for v2 — index, request order, and importable JSON
Use the Fourthline Postman collections to explore and test the Apis v2.
Before you begin
Before using the collections, ensure you have:
- API credentials
- A configured callback endpoint
- Access to the appropriate Fourthline environment
How to import a collection
- Hover over the top-right corner of the code block and select Copy.
- Open Postman.
- Select Import.
- Paste the copied JSON.
- Configure the collection variables.
- Run Create access token first.
Configure collection variables
Before running the collection, replace all collection variables with values from your environment.
File upload requests are provided without sample files. Before sending an upload request, select the appropriate file in Postman.
| Variable | Description |
|---|---|
baseUrl | API base URL |
client_id | Your API client ID |
client_secret | Your API client secret |
partnerClientId | Your client reference ID |
workflowId | Returned by Create workflow |
clientId | Returned by Create workflow |
documentId | Document ID returned by QES signature details |
otp | Signing OTP. In sandbox, retrieve this with Get signature OTP |
Typical request order
Most API collections follow this order:
| Step | Request |
|---|---|
| 1 | Create access token |
| 2 | Create workflow |
| 3 | Upload client data |
| 4 | Upload client documents |
| 5 | Start workflow |
| 6 | Get workflow status |
| 7 | Retrieve reports or continue product-specific steps |
For QES workflows, continue with:
| Step | Request |
|---|---|
| 8 | Get signature details |
| 9 | Authorize signature |
| 10 | Get signature OTP, sandbox only |
| 11 | Re-send OTP, only if needed |
| 12 | Confirm signature |
| 13 | Get signature report / signed PDFs |
Collections
Identity Verification integration
{
"info": {
"_postman_id": "9b8e5930-7a72-423e-8622-c04efe5df02b",
"name": "Fourthline - Identity Verification",
"description": "Customer-facing Postman collection for Identity Verification workflows. Includes API, Mobile SDK, and Web SDK paths with reusable variables and sanitized sample data.",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "API Integration",
"item": [
{
"name": "Get Access Token",
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Access token created', function () { pm.expect(pm.response.code).to.eql(200); });",
"const jsonData = pm.response.json();",
"pm.collectionVariables.set('access_token', jsonData.access_token);"
]
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "grant_type",
"value": "client_credentials",
"type": "text"
},
{
"key": "client_id",
"value": "{{client_id}}",
"type": "text"
},
{
"key": "client_secret",
"value": "{{client_secret}}",
"type": "text"
}
]
},
"url": {
"raw": "{{baseUrl}}/v1/oauth2/token",
"host": [
"{{baseUrl}}"
],
"path": [
"v1",
"oauth2",
"token"
]
}
}
},
{
"name": "Create Workflow",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows"
]
},
"description": "Creates a workflow. Provide either partnerClientId or clientId, depending on your integration.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"workflow\": \"{{idvWorkflow}}\",\n \"partnerClientId\": \"{{partnerClientId}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Workflow created', function () { pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]); });",
"const jsonData = pm.response.json();",
"if (jsonData.workflowId) pm.collectionVariables.set('workflowId', jsonData.workflowId);",
"if (jsonData.clientId) pm.collectionVariables.set('clientId', jsonData.clientId);"
]
}
}
]
},
{
"name": "Upload Identity Data",
"request": {
"method": "PATCH",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/clients/{{clientId}}",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"clients",
"{{clientId}}"
]
},
"description": "Uploads client identity data when required by the workflow configuration.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"partnerClientId\": \"{{partnerClientId}}\",\n \"identityData\": {\n \"type\": \"IdentityData\",\n \"PersonalData\": {\n \"FirstName\": \"{{firstName}}\",\n \"LastName\": \"{{lastName}}\",\n \"Gender\": \"{{gender}}\",\n \"PlaceOfBirth\": \"{{placeOfBirth}}\",\n \"CountryOfBirth\": \"{{countryOfBirth}}\",\n \"BirthDate\": \"{{birthDate}}\",\n \"Nationality\": \"{{nationality}}\"\n },\n \"Address\": {\n \"StreetName\": \"{{streetName}}\",\n \"StreetNumber\": \"{{streetNumber}}\",\n \"City\": \"{{city}}\",\n \"Country\": \"{{country}}\",\n \"PostalCode\": \"{{postalCode}}\"\n },\n \"ContactDetails\": {\n \"Email\": \"{{email}}\",\n \"Phone\": \"{{phone}}\",\n \"Mobile\": \"{{mobilePhone}}\"\n }\n }\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Upload Selfie Image",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/clients/{{clientId}}/data",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"clients",
"{{clientId}}",
"data"
]
},
"description": "Upload a selfie file. Select the file manually in Postman before sending the request.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "formdata",
"formdata": [
{
"key": "metadata",
"value": "{\n \"id\": \"{{documentId}}\",\n \"name\": \"Selfie image\",\n \"side\": \"Front\",\n \"type\": \"SelfieImage\",\n \"location\": {\n \"latitude\": \"{{latitude}}\",\n \"longitude\": \"{{longitude}}\"\n }\n}",
"type": "text"
},
{
"key": "file",
"type": "file",
"src": ""
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Upload Document Front",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/clients/{{clientId}}/data",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"clients",
"{{clientId}}",
"data"
]
},
"description": "Upload an identity document image. Select the file manually in Postman before sending the request.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "formdata",
"formdata": [
{
"key": "metadata",
"value": "{\n \"documentId\": \"{{documentId}}\",\n \"id\": \"{{documentFrontId}}\",\n \"name\": \"Document Front\",\n \"side\": \"Front\",\n \"type\": \"DocumentImage\",\n \"issuingCountry\": \"{{issuingCountry}}\",\n \"documentType\": \"{{documentType}}\",\n \"documentNumber\": \"{{documentNumber}}\",\n \"issueDate\": \"{{issueDate}}\",\n \"expirationDate\": \"{{expirationDate}}\",\n \"location\": {\n \"latitude\": \"{{latitude}}\",\n \"longitude\": \"{{longitude}}\"\n }\n}",
"type": "text"
},
{
"key": "file",
"type": "file",
"src": ""
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Upload Document Back",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/clients/{{clientId}}/data",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"clients",
"{{clientId}}",
"data"
]
},
"description": "Upload an identity document image. Select the file manually in Postman before sending the request.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "formdata",
"formdata": [
{
"key": "metadata",
"value": "{\n \"documentId\": \"{{documentId}}\",\n \"id\": \"{{documentBackId}}\",\n \"name\": \"Document Back\",\n \"side\": \"Back\",\n \"type\": \"DocumentImage\",\n \"issuingCountry\": \"{{issuingCountry}}\",\n \"documentType\": \"{{documentType}}\",\n \"documentNumber\": \"{{documentNumber}}\",\n \"issueDate\": \"{{issueDate}}\",\n \"expirationDate\": \"{{expirationDate}}\",\n \"location\": {\n \"latitude\": \"{{latitude}}\",\n \"longitude\": \"{{longitude}}\"\n }\n}",
"type": "text"
},
{
"key": "file",
"type": "file",
"src": ""
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Start Workflow",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/start",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"start"
]
},
"description": "Start only after all required data and files have been provided.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get workflow status",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/status",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"status"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get JSON Report",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/report",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"report"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get ZIP Report",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/report/zip",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"report",
"zip"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get PDF Report",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/report/pdf",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"report",
"pdf"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get XML Report",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/report/xml",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"report",
"xml"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get Client Details",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/clients/{{clientId}}",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"clients",
"{{clientId}}"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
}
]
},
{
"name": "Mobile SDK",
"item": [
{
"name": "Get Access Token",
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Access token created', function () { pm.expect(pm.response.code).to.eql(200); });",
"const jsonData = pm.response.json();",
"pm.collectionVariables.set('access_token', jsonData.access_token);"
]
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "grant_type",
"value": "client_credentials",
"type": "text"
},
{
"key": "client_id",
"value": "{{client_id}}",
"type": "text"
},
{
"key": "client_secret",
"value": "{{client_secret}}",
"type": "text"
}
]
},
"url": {
"raw": "{{baseUrl}}/v1/oauth2/token",
"host": [
"{{baseUrl}}"
],
"path": [
"v1",
"oauth2",
"token"
]
}
}
},
{
"name": "Create Workflow",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows"
]
},
"description": "Creates a workflow. Provide either partnerClientId or clientId, depending on your integration.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"workflow\": \"{{idvWorkflow}}\",\n \"partnerClientId\": \"{{partnerClientId}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Workflow created', function () { pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]); });",
"const jsonData = pm.response.json();",
"if (jsonData.workflowId) pm.collectionVariables.set('workflowId', jsonData.workflowId);",
"if (jsonData.clientId) pm.collectionVariables.set('clientId', jsonData.clientId);"
]
}
}
]
},
{
"name": "Create SDK Session (Mobile)",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/validationcode",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"validationcode"
]
},
"description": "Creates a single-use validation code for the SDK. Pass validationCode from your backend to the SDK.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"target\": \"Mobile\"\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('SDK session created', function () { pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]); });",
"const jsonData = pm.response.json();",
"if (jsonData.validationCode) pm.collectionVariables.set('validationCode', jsonData.validationCode);"
]
}
}
]
},
{
"name": "Start Workflow",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/start",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"start"
]
},
"description": "Start only after all required data and files have been provided.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get workflow status",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/status",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"status"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get JSON Report",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/report",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"report"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
}
]
},
{
"name": "Web SDK",
"item": [
{
"name": "Get Access Token",
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Access token created', function () { pm.expect(pm.response.code).to.eql(200); });",
"const jsonData = pm.response.json();",
"pm.collectionVariables.set('access_token', jsonData.access_token);"
]
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "grant_type",
"value": "client_credentials",
"type": "text"
},
{
"key": "client_id",
"value": "{{client_id}}",
"type": "text"
},
{
"key": "client_secret",
"value": "{{client_secret}}",
"type": "text"
}
]
},
"url": {
"raw": "{{baseUrl}}/v1/oauth2/token",
"host": [
"{{baseUrl}}"
],
"path": [
"v1",
"oauth2",
"token"
]
}
}
},
{
"name": "Create Workflow",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows"
]
},
"description": "Creates a workflow. Provide either partnerClientId or clientId, depending on your integration.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"workflow\": \"{{idvWorkflow}}\",\n \"partnerClientId\": \"{{partnerClientId}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Workflow created', function () { pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]); });",
"const jsonData = pm.response.json();",
"if (jsonData.workflowId) pm.collectionVariables.set('workflowId', jsonData.workflowId);",
"if (jsonData.clientId) pm.collectionVariables.set('clientId', jsonData.clientId);"
]
}
}
]
},
{
"name": "Create SDK Session (Web)",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/validationcode",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"validationcode"
]
},
"description": "Creates a single-use validation code for the SDK. Pass validationCode from your backend to the SDK.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"target\": \"Web\"\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('SDK session created', function () { pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]); });",
"const jsonData = pm.response.json();",
"if (jsonData.validationCode) pm.collectionVariables.set('validationCode', jsonData.validationCode);"
]
}
}
]
},
{
"name": "Start Workflow",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/start",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"start"
]
},
"description": "Start only after all required data and files have been provided.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get workflow status",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/status",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"status"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get JSON Report",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/report",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"report"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
}
]
}
],
"variable": [
{
"key": "baseUrl",
"value": "https://api.example.com",
"type": "string"
},
{
"key": "client_id",
"value": "",
"type": "string"
},
{
"key": "client_secret",
"value": "",
"type": "string"
},
{
"key": "access_token",
"value": "",
"type": "string"
},
{
"key": "partnerClientId",
"value": "partner-client-001",
"type": "string"
},
{
"key": "clientId",
"value": "",
"type": "string"
},
{
"key": "workflowId",
"value": "",
"type": "string"
},
{
"key": "validationCode",
"value": "",
"type": "string"
},
{
"key": "documentId",
"value": "document-001",
"type": "string"
},
{
"key": "latitude",
"value": "",
"type": "string"
},
{
"key": "longitude",
"value": "",
"type": "string"
},
{
"key": "firstName",
"value": "Jane",
"type": "string"
},
{
"key": "lastName",
"value": "Doe",
"type": "string"
},
{
"key": "gender",
"value": "Female",
"type": "string"
},
{
"key": "placeOfBirth",
"value": "Amsterdam",
"type": "string"
},
{
"key": "countryOfBirth",
"value": "NLD",
"type": "string"
},
{
"key": "birthDate",
"value": "1990-01-01T00:00:00+01:00",
"type": "string"
},
{
"key": "nationality",
"value": "NLD",
"type": "string"
},
{
"key": "streetName",
"value": "Sample Street",
"type": "string"
},
{
"key": "streetNumber",
"value": "1",
"type": "string"
},
{
"key": "city",
"value": "Amsterdam",
"type": "string"
},
{
"key": "country",
"value": "NLD",
"type": "string"
},
{
"key": "postalCode",
"value": "1000 AA",
"type": "string"
},
{
"key": "email",
"value": "[email protected]",
"type": "string"
},
{
"key": "phone",
"value": "+31000000000",
"type": "string"
},
{
"key": "mobilePhone",
"value": "+31000000000",
"type": "string"
},
{
"key": "issuingCountry",
"value": "NLD",
"type": "string"
},
{
"key": "documentType",
"value": "NationalIDCard",
"type": "string"
},
{
"key": "documentNumber",
"value": "DOCUMENT-NUMBER",
"type": "string"
},
{
"key": "issueDate",
"value": "2020-01-01",
"type": "string"
},
{
"key": "expirationDate",
"value": "2030-01-01",
"type": "string"
},
{
"key": "documentFrontId",
"value": "document-front-001",
"type": "string"
},
{
"key": "documentBackId",
"value": "document-back-001",
"type": "string"
},
{
"key": "idvWorkflow",
"value": "IdvWorkflow",
"type": "string"
}
]
}
Biometric Authentication integration
{
"info": {
"_postman_id": "1b288b22-487e-43b7-8fd4-b0abf193b54b",
"name": "Fourthline - Biometric Authentication",
"description": "Customer-facing Postman collection for Biometric Authentication workflows. Sanitized from the internal WorkflowV2 collection: no QA IDs, local file paths, duplicate test requests, or internal comments.",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "API Integration",
"item": [
{
"name": "Get Access Token",
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Access token created', function () { pm.expect(pm.response.code).to.eql(200); });",
"const jsonData = pm.response.json();",
"pm.collectionVariables.set('access_token', jsonData.access_token);"
]
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "grant_type",
"value": "client_credentials",
"type": "text"
},
{
"key": "client_id",
"value": "{{client_id}}",
"type": "text"
},
{
"key": "client_secret",
"value": "{{client_secret}}",
"type": "text"
}
]
},
"url": {
"raw": "{{baseUrl}}/v1/oauth2/token",
"host": [
"{{baseUrl}}"
],
"path": [
"v1",
"oauth2",
"token"
]
}
}
},
{
"name": "Create Workflow",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows"
]
},
"description": "Creates a workflow. Provide either partnerClientId or clientId, depending on your integration.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"workflow\": \"{{biometricWorkflow}}\",\n \"partnerClientId\": \"{{partnerClientId}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Workflow created', function () { pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]); });",
"const jsonData = pm.response.json();",
"if (jsonData.workflowId) pm.collectionVariables.set('workflowId', jsonData.workflowId);",
"if (jsonData.clientId) pm.collectionVariables.set('clientId', jsonData.clientId);"
]
}
}
]
},
{
"name": "Upload Selfie Image",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/clients/{{clientId}}/data",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"clients",
"{{clientId}}",
"data"
]
},
"description": "Upload a selfie file. Select the file manually in Postman before sending the request.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "formdata",
"formdata": [
{
"key": "metadata",
"value": "{\n \"id\": \"{{documentId}}\",\n \"name\": \"Selfie image\",\n \"side\": \"Front\",\n \"type\": \"SelfieImage\",\n \"location\": {\n \"latitude\": \"{{latitude}}\",\n \"longitude\": \"{{longitude}}\"\n }\n}",
"type": "text"
},
{
"key": "file",
"type": "file",
"src": ""
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Upload Reference Selfie Image",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/clients/{{clientId}}/data",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"clients",
"{{clientId}}",
"data"
]
},
"description": "Upload a selfie file. Select the file manually in Postman before sending the request.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "formdata",
"formdata": [
{
"key": "metadata",
"value": "{\n \"id\": \"{{documentId}}\",\n \"name\": \"Selfie image\",\n \"side\": \"Front\",\n \"type\": \"ReferenceSelfieImage\",\n \"location\": {\n \"latitude\": \"{{latitude}}\",\n \"longitude\": \"{{longitude}}\"\n }\n}",
"type": "text"
},
{
"key": "file",
"type": "file",
"src": ""
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Start Workflow",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/start",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"start"
]
},
"description": "Start only after all required data and files have been provided.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get workflow status",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/status",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"status"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get JSON Report",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/report",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"report"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get ZIP Report",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/report/zip",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"report",
"zip"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get PDF Report",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/report/pdf",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"report",
"pdf"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get XML Report",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/report/xml",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"report",
"xml"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get Client Details",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/clients/{{clientId}}",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"clients",
"{{clientId}}"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
}
]
},
{
"name": "Mobile SDK",
"item": [
{
"name": "Get Access Token",
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Access token created', function () { pm.expect(pm.response.code).to.eql(200); });",
"const jsonData = pm.response.json();",
"pm.collectionVariables.set('access_token', jsonData.access_token);"
]
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "grant_type",
"value": "client_credentials",
"type": "text"
},
{
"key": "client_id",
"value": "{{client_id}}",
"type": "text"
},
{
"key": "client_secret",
"value": "{{client_secret}}",
"type": "text"
}
]
},
"url": {
"raw": "{{baseUrl}}/v1/oauth2/token",
"host": [
"{{baseUrl}}"
],
"path": [
"v1",
"oauth2",
"token"
]
}
}
},
{
"name": "Create Workflow",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows"
]
},
"description": "Creates a workflow. Provide either partnerClientId or clientId, depending on your integration.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"workflow\": \"{{biometricWorkflow}}\",\n \"clientId\": \"{{clientId}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Workflow created', function () { pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]); });",
"const jsonData = pm.response.json();",
"if (jsonData.workflowId) pm.collectionVariables.set('workflowId', jsonData.workflowId);",
"if (jsonData.clientId) pm.collectionVariables.set('clientId', jsonData.clientId);"
]
}
}
]
},
{
"name": "Create SDK Session (Mobile)",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/validationcode",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"validationcode"
]
},
"description": "Creates a single-use validation code for the SDK. Pass validationCode from your backend to the SDK.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"target\": \"Mobile\"\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('SDK session created', function () { pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]); });",
"const jsonData = pm.response.json();",
"if (jsonData.validationCode) pm.collectionVariables.set('validationCode', jsonData.validationCode);"
]
}
}
]
},
{
"name": "Start Workflow",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/start",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"start"
]
},
"description": "Start only after all required data and files have been provided.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get workflow status",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/status",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"status"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get JSON Report",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/report",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"report"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
}
]
},
{
"name": "Web SDK",
"item": [
{
"name": "Get Access Token",
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Access token created', function () { pm.expect(pm.response.code).to.eql(200); });",
"const jsonData = pm.response.json();",
"pm.collectionVariables.set('access_token', jsonData.access_token);"
]
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "grant_type",
"value": "client_credentials",
"type": "text"
},
{
"key": "client_id",
"value": "{{client_id}}",
"type": "text"
},
{
"key": "client_secret",
"value": "{{client_secret}}",
"type": "text"
}
]
},
"url": {
"raw": "{{baseUrl}}/v1/oauth2/token",
"host": [
"{{baseUrl}}"
],
"path": [
"v1",
"oauth2",
"token"
]
}
}
},
{
"name": "Create Workflow",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows"
]
},
"description": "Creates a workflow. Provide either partnerClientId or clientId, depending on your integration.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"workflow\": \"{{biometricWorkflow}}\",\n \"clientId\": \"{{clientId}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Workflow created', function () { pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]); });",
"const jsonData = pm.response.json();",
"if (jsonData.workflowId) pm.collectionVariables.set('workflowId', jsonData.workflowId);",
"if (jsonData.clientId) pm.collectionVariables.set('clientId', jsonData.clientId);"
]
}
}
]
},
{
"name": "Create SDK Session (Web)",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/validationcode",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"validationcode"
]
},
"description": "Creates a single-use validation code for the SDK. Pass validationCode from your backend to the SDK.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"target\": \"Web\"\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('SDK session created', function () { pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]); });",
"const jsonData = pm.response.json();",
"if (jsonData.validationCode) pm.collectionVariables.set('validationCode', jsonData.validationCode);"
]
}
}
]
},
{
"name": "Start Workflow",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/start",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"start"
]
},
"description": "Start only after all required data and files have been provided.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get workflow status",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/status",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"status"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get JSON Report",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/report",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"report"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
}
]
}
],
"variable": [
{
"key": "baseUrl",
"value": "https://api.example.com",
"type": "string"
},
{
"key": "client_id",
"value": "",
"type": "string"
},
{
"key": "client_secret",
"value": "",
"type": "string"
},
{
"key": "access_token",
"value": "",
"type": "string"
},
{
"key": "partnerClientId",
"value": "partner-client-001",
"type": "string"
},
{
"key": "clientId",
"value": "",
"type": "string"
},
{
"key": "workflowId",
"value": "",
"type": "string"
},
{
"key": "validationCode",
"value": "",
"type": "string"
},
{
"key": "documentId",
"value": "document-001",
"type": "string"
},
{
"key": "latitude",
"value": "",
"type": "string"
},
{
"key": "longitude",
"value": "",
"type": "string"
},
{
"key": "firstName",
"value": "Jane",
"type": "string"
},
{
"key": "lastName",
"value": "Doe",
"type": "string"
},
{
"key": "gender",
"value": "Female",
"type": "string"
},
{
"key": "placeOfBirth",
"value": "Amsterdam",
"type": "string"
},
{
"key": "countryOfBirth",
"value": "NLD",
"type": "string"
},
{
"key": "birthDate",
"value": "1990-01-01T00:00:00+01:00",
"type": "string"
},
{
"key": "nationality",
"value": "NLD",
"type": "string"
},
{
"key": "streetName",
"value": "Sample Street",
"type": "string"
},
{
"key": "streetNumber",
"value": "1",
"type": "string"
},
{
"key": "city",
"value": "Amsterdam",
"type": "string"
},
{
"key": "country",
"value": "NLD",
"type": "string"
},
{
"key": "postalCode",
"value": "1000 AA",
"type": "string"
},
{
"key": "email",
"value": "[email protected]",
"type": "string"
},
{
"key": "phone",
"value": "+31000000000",
"type": "string"
},
{
"key": "mobilePhone",
"value": "+31000000000",
"type": "string"
},
{
"key": "issuingCountry",
"value": "NLD",
"type": "string"
},
{
"key": "documentType",
"value": "NationalIDCard",
"type": "string"
},
{
"key": "documentNumber",
"value": "DOCUMENT-NUMBER",
"type": "string"
},
{
"key": "issueDate",
"value": "2020-01-01",
"type": "string"
},
{
"key": "expirationDate",
"value": "2030-01-01",
"type": "string"
},
{
"key": "documentFrontId",
"value": "document-front-001",
"type": "string"
},
{
"key": "documentBackId",
"value": "document-back-001",
"type": "string"
},
{
"key": "biometricWorkflow",
"value": "BiometricsOnly",
"type": "string"
}
]
}
Qualified Electronic Signature integration
{
"info": {
"_postman_id": "046b7e3d-0407-4edb-a469-b994c86da886",
"name": "Fourthline - Qualified Electronic Signature (QES)",
"description": "Customer-facing Postman collection for QES workflows. Cleaned into an end-to-end signing journey with placeholders instead of internal test values.",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "QES Workflow",
"item": [
{
"name": "Get Access Token",
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Access token created', function () { pm.expect(pm.response.code).to.eql(200); });",
"const jsonData = pm.response.json();",
"pm.collectionVariables.set('access_token', jsonData.access_token);"
]
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "grant_type",
"value": "client_credentials",
"type": "text"
},
{
"key": "client_id",
"value": "{{client_id}}",
"type": "text"
},
{
"key": "client_secret",
"value": "{{client_secret}}",
"type": "text"
}
]
},
"url": {
"raw": "{{baseUrl}}/v1/oauth2/token",
"host": [
"{{baseUrl}}"
],
"path": [
"v1",
"oauth2",
"token"
]
}
}
},
{
"name": "Create Workflow",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows"
]
},
"description": "Creates a workflow. Provide either partnerClientId or clientId, depending on your integration.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"workflow\": \"{{qesWorkflow}}\",\n \"partnerClientId\": \"{{partnerClientId}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Workflow created', function () { pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]); });",
"const jsonData = pm.response.json();",
"if (jsonData.workflowId) pm.collectionVariables.set('workflowId', jsonData.workflowId);",
"if (jsonData.clientId) pm.collectionVariables.set('clientId', jsonData.clientId);"
]
}
}
]
},
{
"name": "Upload Document To Sign",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/clients/{{clientId}}/data",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"clients",
"{{clientId}}",
"data"
]
},
"description": "Upload the document that the client must sign. Confirm the required document type and metadata for your Hub workflow.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "formdata",
"formdata": [
{
"key": "metadata",
"value": "{\n \"id\": \"{{documentToSignId}}\",\n \"name\": \"Document to sign\",\n \"type\": \"DocumentToSign\"\n}",
"type": "text"
},
{
"key": "file",
"type": "file",
"src": ""
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Upload Mobile Phone Number",
"request": {
"method": "PATCH",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/clients/{{clientId}}",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"clients",
"{{clientId}}"
]
},
"description": "Uploads the mobile phone number used by QES when required by your workflow configuration.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"body": {
"mode": "raw",
"raw": "{\n \"identityData\": {\n \"ContactDetails\": {\n \"Mobile\": \"{{mobilePhone}}\"\n }\n }\n}",
"options": {
"raw": {
"language": "json"
}
}
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Start Workflow",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/start",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"start"
]
},
"description": "Start only after all required data and files have been provided.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get Signature Status",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/status",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"status"
]
},
"description": "Check the workflow status and signature-related product status/messages.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Get JSON Report",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/report",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"report"
]
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
},
{
"name": "Download Signed Documents",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/v2/workflows/{{workflowId}}/report/zip",
"host": [
"{{baseUrl}}"
],
"path": [
"v2",
"workflows",
"{{workflowId}}",
"report",
"zip"
]
},
"description": "Download the report ZIP that contains signed documents when configured for the workflow.",
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
}
},
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('Request succeeded', function () {",
" pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 204]);",
"});"
]
}
}
]
}
]
}
],
"variable": [
{
"key": "baseUrl",
"value": "https://api.example.com",
"type": "string"
},
{
"key": "client_id",
"value": "",
"type": "string"
},
{
"key": "client_secret",
"value": "",
"type": "string"
},
{
"key": "access_token",
"value": "",
"type": "string"
},
{
"key": "partnerClientId",
"value": "partner-client-001",
"type": "string"
},
{
"key": "clientId",
"value": "",
"type": "string"
},
{
"key": "workflowId",
"value": "",
"type": "string"
},
{
"key": "validationCode",
"value": "",
"type": "string"
},
{
"key": "documentId",
"value": "document-001",
"type": "string"
},
{
"key": "latitude",
"value": "",
"type": "string"
},
{
"key": "longitude",
"value": "",
"type": "string"
},
{
"key": "firstName",
"value": "Jane",
"type": "string"
},
{
"key": "lastName",
"value": "Doe",
"type": "string"
},
{
"key": "gender",
"value": "Female",
"type": "string"
},
{
"key": "placeOfBirth",
"value": "Amsterdam",
"type": "string"
},
{
"key": "countryOfBirth",
"value": "NLD",
"type": "string"
},
{
"key": "birthDate",
"value": "1990-01-01T00:00:00+01:00",
"type": "string"
},
{
"key": "nationality",
"value": "NLD",
"type": "string"
},
{
"key": "streetName",
"value": "Sample Street",
"type": "string"
},
{
"key": "streetNumber",
"value": "1",
"type": "string"
},
{
"key": "city",
"value": "Amsterdam",
"type": "string"
},
{
"key": "country",
"value": "NLD",
"type": "string"
},
{
"key": "postalCode",
"value": "1000 AA",
"type": "string"
},
{
"key": "email",
"value": "[email protected]",
"type": "string"
},
{
"key": "phone",
"value": "+31000000000",
"type": "string"
},
{
"key": "mobilePhone",
"value": "+31000000000",
"type": "string"
},
{
"key": "issuingCountry",
"value": "NLD",
"type": "string"
},
{
"key": "documentType",
"value": "NationalIDCard",
"type": "string"
},
{
"key": "documentNumber",
"value": "DOCUMENT-NUMBER",
"type": "string"
},
{
"key": "issueDate",
"value": "2020-01-01",
"type": "string"
},
{
"key": "expirationDate",
"value": "2030-01-01",
"type": "string"
},
{
"key": "documentFrontId",
"value": "document-front-001",
"type": "string"
},
{
"key": "documentBackId",
"value": "document-back-001",
"type": "string"
},
{
"key": "qesWorkflow",
"value": "QesWorkflow",
"type": "string"
},
{
"key": "documentToSignId",
"value": "document-to-sign-001",
"type": "string"
}
]
}
Updated 9 days ago