{ "openapi": "3.0.3", "info": { "title": "KYC V2 API", "version": "2.0.1", "description": "This is the APIs for V2 KYC. It allows you to manage individuals, profiles, workflows, results, and documents in the context of Individuals.", "contact": { "name": "FrankieOne", "url": "https://www.frankieone.com/", "email": "help@frankieone.com" } }, "servers": [ { "url": "https://api.uat.frankie.one", "description": "UAT Environment API Base URL" }, { "url": "https://api.frankie.one", "description": "Production API Base URL" } ], "security": [ { "Api-Key": [] } ], "tags": [ { "name": "Individual Entities", "description": "Manage individual entity records" }, { "name": "Individual Entity Elements", "description": "Manage individual entity record elements" }, { "name": "Individual Documents", "description": "Manage documents for individuals" }, { "name": "Individual Workflows", "description": "Manage workflows and executions for individuals" }, { "name": "Individual Results", "description": "Manage results for individuals" }, { "name": "Individual Profiles", "description": "Manage individual profiles" }, { "name": "Individual Risks", "description": "Manage risks associated with an individual" }, { "name": "Monitoring", "description": "Turn on/off ongoing monitoring for an individual entity" }, { "name": "HostedURL", "description": "Manage hosted URLs for an individual" }, { "name": "IDV", "description": "Get a token and/or upload documents to initiate an IDV process" }, { "name": "Search", "description": "Search for entity profiles" } ], "paths": { "/v2/individuals": { "parameters": [ { "$ref": "#/components/parameters/levelQuery" } ], "post": { "summary": "Create an individual entity", "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/individuals_entity_response" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Internal Server Error": { "value": { "errorCode": "SYS-1063,", "errorMsg": "Failed to generate KYC report", "requestId": "01HM5EM2QNNSC9K0PX9VC06HX3" } } } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "createIndividuals", "description": "Creates an Individual entity object which can be used to store data about an individual. You can optionally include documents, attachments, references etc. to the entity.\nInformation stored in an entity object can be used to verify the individual against external data sources for the purposes of eKYC, or in other verifications supported by FrankieOne.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/individuals_create" } } }, "description": "Create an individual" }, "tags": [ "Individual Entities" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/levelNoIdQuery" } ], "patch": { "summary": "Update an individual entity", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/individuals_update" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/individuals_entity_response" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "updateIndividual", "description": "Update any of the information of the Individual Entity with the matching entity ID.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Entities" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] }, "get": { "summary": "Get an individual entity", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/individuals_entity_response" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Unable to retrieve entity": { "value": { "errorCode": "ENT-1010,", "errorMsg": "Unable to retrieve requested entity", "details": [ { "issue": "entityId", "issueLocation": "Cannot retrieve entityId (027d1e3d-95af-f19a-313a-3b869da9ce10)" } ], "requestId": "01HM5EM2QNNSC9K0PX9VC06HX3" } } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "getIndividual", "description": "Retrieve all the information of the Individual Entity with the matching entity ID.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Entities" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] }, "delete": { "summary": "Delete an individual entity", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "entityId": { "$ref": "#/components/schemas/Entity-ID" } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "deleteIndividual", "description": "Delete Individual Entity with the matching entity ID.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Background" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Entities" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/workflows": { "get": { "summary": "Get a list of executable workflows", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "workflows": { "type": "array", "description": "Provide a set of workflow lookup objects.", "items": { "$ref": "#/components/schemas/Workflow-Lookup" } } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "getWorkflows", "description": "Get a list of workflows that can be executed", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" }, { "$ref": "#/components/parameters/serviceNameQuery" }, { "$ref": "#/components/parameters/includeQuery" } ], "tags": [ "Individual Workflows" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/new/serviceprofiles/{serviceName}/workflows/{workflowName}/execute": { "parameters": [ { "$ref": "#/components/parameters/serviceName" }, { "$ref": "#/components/parameters/workflowName" }, { "$ref": "#/components/parameters/levelQuery" } ], "post": { "summary": "Create an individual and execute a workflow for the given service profile", "responses": { "200": { "description": "Execution request completed", "content": { "application/json": { "schema": { "type": "object", "properties": { "workflowResult": { "$ref": "#/components/schemas/Workflow-Result" }, "serviceProfile": { "$ref": "#/components/schemas/Service-Profile" }, "individual": { "$ref": "#/components/schemas/Individual" }, "requestId": { "$ref": "#/components/schemas/Request-ID" } } } } } }, "202": { "description": "Asynchronous execution request accepted, use requestId to retrieve results", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "workflowExecutionId": { "$ref": "#/components/schemas/Workflow-Execution-ID" }, "entityId": { "$ref": "#/components/schemas/Entity-ID" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "createAndExecuteWorkflow", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "individual": { "$ref": "#/components/schemas/Individual" }, "comment": { "$ref": "#/components/schemas/Comment" } } } } } }, "description": "Create an individual and execute a workflow for the given service profile", "parameters": [ { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Background" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Workflows" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/serviceprofiles/{serviceName}/workflows/{workflowName}/execute": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/serviceName" }, { "$ref": "#/components/parameters/workflowName" }, { "$ref": "#/components/parameters/levelQuery" } ], "post": { "summary": "Execute a workflow for the given service profile", "responses": { "200": { "description": "Execution request completed", "content": { "application/json": { "schema": { "type": "object", "properties": { "workflowResult": { "$ref": "#/components/schemas/Workflow-Result" }, "serviceProfile": { "$ref": "#/components/schemas/Service-Profile" }, "individual": { "$ref": "#/components/schemas/Individual" }, "requestId": { "$ref": "#/components/schemas/Request-ID" } } } } } }, "202": { "description": "Asynchronous execution request accepted, use requestId to retrieve results", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "workflowExecutionId": { "$ref": "#/components/schemas/Workflow-Execution-ID" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "executeWorkflow", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "comment": { "$ref": "#/components/schemas/Comment" } } } } } }, "description": "Execute a workflow for the given service profile.", "parameters": [ { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Background" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Workflows" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/serviceprofiles/{serviceName}/workflows/{workflowName}/executions": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/serviceName" }, { "$ref": "#/components/parameters/workflowName" }, { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/page" }, { "$ref": "#/components/parameters/sort" }, { "$ref": "#/components/parameters/sortFields" }, { "$ref": "#/components/parameters/query_filter_workflowresults" }, { "$ref": "#/components/parameters/query_filter_workflowexecutionstates" }, { "$ref": "#/components/parameters/query_filter_startedatbefore" }, { "$ref": "#/components/parameters/query_filter_startedatafter" }, { "$ref": "#/components/parameters/query_filter_endedatbefore" }, { "$ref": "#/components/parameters/query_filter_endedatafter" } ], "get": { "summary": "Get a list of executions and their results", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "meta": { "$ref": "#/components/schemas/List-Operation-Meta" }, "requestId": { "$ref": "#/components/schemas/Request-ID" }, "workflowResults": { "type": "array", "items": { "$ref": "#/components/schemas/Workflow-Result" } } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "getResults", "description": "Get a list of entity results. Always sorted in reverse chrono order", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Workflows" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/serviceprofiles/{serviceName}/workflows/{workflowName}/executions/{workflowExecutionId}": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/serviceName" }, { "$ref": "#/components/parameters/workflowName" }, { "$ref": "#/components/parameters/executionId" }, { "$ref": "#/components/parameters/levelNoIdQuery" } ], "get": { "summary": "Get the result of a specific execution by its executionId.", "responses": { "102": { "description": "**[DEPRECATED]** Workflow is still processing", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "workflowExecutionState": { "$ref": "#/components/schemas/Workflow-Execution-State" } } } } } }, "200": { "description": "Workflow has completed", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "workflowResult": { "$ref": "#/components/schemas/Workflow-Result" }, "individual": { "$ref": "#/components/schemas/Individual" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "getWorkflowExecutionResult", "description": "Get the result of a specific execution by its executionId.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Workflows" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] }, "patch": { "summary": "Override the status of a specific workflow execution.", "responses": { "200": { "description": "Status has been updated", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "workflowResult": { "$ref": "#/components/schemas/Workflow-Result" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/Workflow-Execution-ResultEnum" }, "comment": { "$ref": "#/components/schemas/Comment" } } } } } }, "operationId": "overrideWorkflowExecutionResult", "description": "Override the result of a specific workflow execution by its id.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Workflows" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/serviceprofiles/{serviceName}": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/serviceName" } ], "patch": { "summary": "Update a profile for a given individual entity.", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "serviceProfile": { "$ref": "#/components/schemas/Service-Profile" } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "403": { "description": "Forbidden request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "updateProfile", "description": "Update a profile for a given individual entity.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "serviceProfile": { "$ref": "#/components/schemas/Service-Profile-Patch" }, "comment": { "$ref": "#/components/schemas/Comment" } } } } } }, "tags": [ "Individual Profiles" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] }, "get": { "summary": "Get a service profile for a given individual entity.", "responses": { "200": { "description": "Service profile retrieved", "content": { "application/json": { "schema": { "type": "object", "properties": { "serviceProfile": { "$ref": "#/components/schemas/Service-Profile" }, "requestId": { "$ref": "#/components/schemas/Request-ID" } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Forbidden": { "value": { "errorCode": "ENT-1010,", "errorMsg": "Forbidden", "details": [ { "issue": "entityId", "issueLocation": "Cannot retrieve entityId (027d1e3d-95af-f19a-313a-3b869da9ce10)" } ], "requestId": "01HM5EM2QNNSC9K0PX9VC06HX3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "getProfile", "description": "Get a profile for a given individual entity.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Profiles" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/results/mkyc": { "parameters": [ { "$ref": "#/components/parameters/entityId" } ], "post": { "summary": "Approve Manual KYC for an individual", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "processResults": { "type": "array", "items": { "$ref": "#/components/schemas/Process-Result-Object" } } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Manual-KYC" } } } }, "operationId": "manualKYC", "description": "Approve manual KYC (mKYC) for an individual as to allow them to pass all KYC workflow steps without performing eKYC. To ensure there is enough evidence for the mKYC process to be valid, the individual will need to have documents that match at least one of the following combinations:\n\n1 Primary Photographic ID e.g. \n - \"DRIVERS_LICENSE\": Driver's license.\n - \"PASSPORT\": Passport\n\n2 Primary Non-Photographic IDs e.g.\n - \"BIRTH_CERT\": Birth certificate\n - \"CITIZENSHIP\": Citizenship certificate\n\n1 Primary Non-Photographic ID AND 1 Secondary ID e.g.\n - \"VISA\": Visa document (not Visa payment card)\n - \"IMMIGRATION\": Immigration card\n - \"NATIONAL_HEALTH_ID\": Any national health program ID card (e.g. Medicare, NHS)\n - \"NAME_CHANGE\": Name change confirmation\n - \"MARRIAGE_CERT\": Marriage certificate\n", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Results" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/results/mkyc/invalidate": { "parameters": [ { "$ref": "#/components/parameters/entityId" } ], "post": { "summary": "Invalidate any Manual KYC evidences of an individual", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "processResults": { "type": "array", "items": { "$ref": "#/components/schemas/Process-Result-Object" } } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "manualKYCinvalidation", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "comment": { "$ref": "#/components/schemas/Comment" } } } } } }, "description": "Invalidate any Manual KYC evidences of an individual. This will force the entity to be verified by eKYC processes when KYC verification is next run. Only invalidate mKYC evidences if manual KYC evidences had previously been supplied for this entity.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Results" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/results/aml": { "parameters": [ { "$ref": "#/components/parameters/entityId" } ], "patch": { "summary": "Update the status of AML process results", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "processResults": { "type": "array", "items": { "$ref": "#/components/schemas/Process-Result-Object" } } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "processResults": { "type": "array", "items": { "type": "string", "format": "UUID" } }, "manualStatus": { "$ref": "#/components/schemas/Process-Result-Manual-StatusEnum-AML" }, "comment": { "$ref": "#/components/schemas/Comment" } } } } } }, "operationId": "updateAML", "description": "Update the status of a set of AML process results.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Results" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/results/idv": { "parameters": [ { "$ref": "#/components/parameters/entityId" } ], "patch": { "summary": "Update the status of IDV process results", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "processResults": { "type": "array", "items": { "$ref": "#/components/schemas/Process-Result-Object" } } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "processResults": { "type": "array", "items": { "type": "string", "format": "UUID" } }, "manualStatus": { "$ref": "#/components/schemas/Process-Result-Manual-StatusEnum-IDV" }, "comment": { "$ref": "#/components/schemas/Comment" } } } } } }, "operationId": "updateIDV", "description": "Update the status of a set of IDV process results.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Results" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/results/matchlist": { "parameters": [ { "$ref": "#/components/parameters/entityId" } ], "patch": { "summary": "Update the status of Matchlist process results", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "processResults": { "type": "array", "items": { "$ref": "#/components/schemas/Process-Result-Object" } } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "processResults": { "description": "The process result IDs to update. These are the PROs created when a match has been found.", "type": "array", "items": { "type": "string", "format": "UUID" } }, "manualStatus": { "$ref": "#/components/schemas/Process-Result-Manual-StatusEnum-Matchlist" }, "comment": { "$ref": "#/components/schemas/Comment" } } } } } }, "operationId": "updateMatches", "description": "Update the status of a set of Matchlist process results.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Results" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/results/duplicate": { "parameters": [ { "$ref": "#/components/parameters/entityId" } ], "patch": { "summary": "Update the status of Duplicate process results", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "processResults": { "type": "array", "items": { "$ref": "#/components/schemas/Process-Result-Object" } } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "processResults": { "description": "The process result IDs to update. These are the PROs created when a duplicate has been found.", "type": "array", "items": { "type": "string", "format": "UUID" } }, "manualStatus": { "$ref": "#/components/schemas/Process-Result-Manual-StatusEnum-Duplicate" }, "comment": { "$ref": "#/components/schemas/Comment" } } } } } }, "operationId": "updateDuplicate", "description": "Update the status of a set of Duplicate process results.\nThe request body supports batch processing of duplicate results with the following components:\n- processResults: Array of UUID strings identifying specific duplicate Process Results to update - manualStatus: The resolution status for the duplicates, which can be one of:\n * FALSE_POSITIVE: When the flagged entities are determined to be different individuals (both records should be kept)\n * TRUE_POSITIVE_ACCEPT: Keep the current entity as primary and mark the result entity as duplicate (use when current record is more complete/accurate)\n * TRUE_POSITIVE_REJECT: Keep the result entity as primary and mark the current entity as duplicate (use when duplicate record is more complete/accurate)\n- comment: Optional documentation for the decision rationale, useful for audit trails and team communication", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Results" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/results/fraud": { "parameters": [ { "$ref": "#/components/parameters/entityId" } ], "patch": { "summary": "Update the status of Fraud process results", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/individual_pro_fraud_res" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/individual_pro_fraud_req" } } } }, "operationId": "updateFraud", "description": "Update the status of a set of Fraud process results.\nThe request body supports batch processing of fraud results with the following components:\n- processResults: Array of UUID strings identifying specific fraud Process Results to update - manualStatus: The resolution status for the fraud, which can be one of:\n * FALSE_POSITIVE: When the result is determined to be false positive.\n * TRUE_POSITIVE: When the result is determined to be true positive.\n * UNKNOWN: When the result is still being evaluated and you do not yet want to resolve it.\n- comment: Optional documentation for the decision rationale, useful for audit trails and team communication", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Results" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/results": { "parameters": [ { "$ref": "#/components/parameters/entityId" } ], "get": { "summary": "Get a list of process results", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "meta": { "$ref": "#/components/schemas/List-Operation-Meta" }, "requestId": { "$ref": "#/components/schemas/Request-ID" }, "processResults": { "type": "array", "items": { "$ref": "#/components/schemas/Process-Result-Object" } } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "getAllPROs", "description": "Get a list of process results for a given individual entity", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" }, { "$ref": "#/components/parameters/profileNameQuery" }, { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/createdAtBefore" }, { "$ref": "#/components/parameters/createdAtAfter" }, { "$ref": "#/components/parameters/updatedAtBefore" }, { "$ref": "#/components/parameters/updatedAtAfter" }, { "$ref": "#/components/parameters/stepNames" }, { "$ref": "#/components/parameters/stepTypes" }, { "$ref": "#/components/parameters/objectTypes" }, { "$ref": "#/components/parameters/classes" }, { "$ref": "#/components/parameters/systemStatuses" }, { "$ref": "#/components/parameters/manualStatuses" }, { "$ref": "#/components/parameters/states" }, { "$ref": "#/components/parameters/results" }, { "$ref": "#/components/parameters/sortFields" }, { "$ref": "#/components/parameters/sort" }, { "$ref": "#/components/parameters/page" }, { "$ref": "#/components/parameters/limit" } ], "tags": [ "Individual Results" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/names/{nameId}": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/nameId" } ], "delete": { "summary": "Delete a name", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "nameId": { "type": "string" } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "deleteName", "description": "Delete an individual's name or alternateName with the given id.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Entity Elements" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/datesOfBirth/{dateOfBirthId}": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/dateOfBirthId" } ], "delete": { "summary": "Delete a date of birth", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "dateOfBirthId": { "type": "string" } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "deleteDob", "description": "Delete an individual's date of birth with the given id.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Entity Elements" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/addresses/{addressId}": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/addressId" } ], "delete": { "summary": "Delete an address", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "addressId": { "type": "string" } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "deleteAddress", "description": "Delete an individual's address with the given Id.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Entity Elements" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/emailaddresses/{emailAddressId}": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/emailAddressId" } ], "delete": { "summary": "Delete an email address", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "emailAddressId": { "type": "string" } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "deleteEmailAddress", "description": "Delete an individual's email address with the given id.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Entity Elements" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/phonenumbers/{phoneNumberId}": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/phoneNumberId" } ], "delete": { "summary": "Delete phone number", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "phoneNumberId": { "type": "string" } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "deletePhoneNumber", "description": "Delete an individual's phone number with the given id.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Entity Elements" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/consents/{consentType}": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/consentType" } ], "delete": { "summary": "Withdraw a previously provided consent", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "consentType": { "type": "string" } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "deleteConsent", "description": "Withdraw an individual's consent of a specific type.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Entity Elements" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/externalreferences": { "parameters": [ { "$ref": "#/components/parameters/entityId" } ], "get": { "summary": "Get a list of external references", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "externalReferences": { "type": "array", "items": { "$ref": "#/components/schemas/External-Reference" } } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "getExternalReference", "description": "Get a list of an individual's external references.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Entity Elements" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/externalreferences/{referenceId}": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/referenceId" } ], "delete": { "summary": "Delete an external reference", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "referenceId": { "type": "string" } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "deleteExternalReference", "description": "Delete an individual's external reference with the given id.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Entity Elements" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/search/serviceprofiles": { "parameters": [ { "$ref": "#/components/parameters/sortFields" }, { "$ref": "#/components/parameters/sort" }, { "$ref": "#/components/parameters/page" }, { "$ref": "#/components/parameters/limit" } ], "post": { "summary": "Search for individual profiles", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "properties": { "meta": { "$ref": "#/components/schemas/List-Operation-Meta" }, "requestId": { "$ref": "#/components/schemas/Request-ID" }, "matches": { "type": "array", "items": { "$ref": "#/components/schemas/Search-Matches" } } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "searchIndividuals", "description": "Search for Individuals that match the provided search parameters. Search parameters are supplied in the form of an entity object, similar to how you would create an individual.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Search-Profile" } } }, "description": "Search for an individual profile" }, "tags": [ "Search" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/documents": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/levelQuery" } ], "post": { "summary": "Create a new document for an individual.", "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/individuals_entity_document_response" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Internal Server Error": { "value": { "errorCode": "SYS-1063,", "errorMsg": "Failed to generate KYC report", "requestId": "01HM5EM2QNNSC9K0PX9VC06HX3" } } } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "document": { "$ref": "#/components/schemas/Document-Create" }, "comment": { "$ref": "#/components/schemas/Comment" } } } } } }, "operationId": "createDocuments", "description": "Add a new document to an entity.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Documents" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] }, "get": { "summary": "Get all documents for an entity", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Entity-Documents" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Internal Server Error": { "value": { "errorCode": "SYS-1063,", "errorMsg": "Failed to generate KYC report", "requestId": "01HM5EM2QNNSC9K0PX9VC06HX3" } } } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "getDocuments", "description": "Get all documents for an entity.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Documents" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/documents/{documentId}": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/documentId" } ], "patch": { "summary": "Update a single document by its id.", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/individuals_entity_document_response" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Internal Server Error": { "value": { "errorCode": "SYS-1063,", "errorMsg": "Failed to generate KYC report", "requestId": "01HM5EM2QNNSC9K0PX9VC06HX3" } } } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "document": { "$ref": "#/components/schemas/Document-Information" }, "comment": { "$ref": "#/components/schemas/Comment" } } } } } }, "operationId": "updateDocument", "description": "Update document by id.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" }, { "$ref": "#/components/parameters/levelNoIdQuery" } ], "tags": [ "Individual Documents" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] }, "get": { "summary": "Get a single document by its id.", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Document-Information" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Internal Server Error": { "value": { "errorCode": "SYS-1063,", "errorMsg": "Failed to generate KYC report", "requestId": "01HM5EM2QNNSC9K0PX9VC06HX3" } } } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "getDocument", "description": "Get a single document by its id.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" }, { "$ref": "#/components/parameters/levelNoIdQuery" } ], "tags": [ "Individual Documents" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] }, "delete": { "summary": "Delete a document", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "documentId": { "$ref": "#/components/schemas/Document-ID" } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Internal Server Error": { "value": { "errorCode": "SYS-1063,", "errorMsg": "Failed to generate KYC report", "requestId": "01HM5EM2QNNSC9K0PX9VC06HX3" } } } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "deleteDocument", "description": "Delete a single document and all of it's attachments.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Documents" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/documents/{documentId}/attachments/{attachmentId}": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/documentId" }, { "$ref": "#/components/parameters/attachmentId" } ], "delete": { "summary": "Delete an attachment", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "documentId": { "$ref": "#/components/schemas/Document-ID" }, "attachmentId": { "type": "string" } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Internal Server Error": { "value": { "errorCode": "SYS-1063,", "errorMsg": "Failed to generate KYC report", "requestId": "01HM5EM2QNNSC9K0PX9VC06HX3" } } } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "deleteAttachments", "description": "Delete an attachment from a given document.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Documents" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/documents/{documentId}/status": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/documentId" } ], "patch": { "summary": "Update the status of a supporting document", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "processResults": { "type": "array", "items": { "$ref": "#/components/schemas/Process-Result-Object" } } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "manualStatus": { "$ref": "#/components/schemas/Process-Result-Manual-StatusEnum-SupportDoc" }, "comment": { "$ref": "#/components/schemas/Comment" } } } } } }, "operationId": "updateSupportingDocumentStatus", "description": "Update the status of a support document. This will create or update the process result for the given document. The given document must be a support document with an attachment, otherwise the request will fail with a 400 Bad Request error. Only support documents can currently be reviewed in this way.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Results" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/serviceprofiles/{serviceName}/risk": { "parameters": [ { "$ref": "#/components/parameters/entityId" }, { "$ref": "#/components/parameters/serviceName" } ], "patch": { "summary": "Update an individual entity's risk level for a service profile.", "description": "This endpoint allows you to override the calculated risk level for the last completed workflow of an individual entity's service profile.\n\nNote:\n- This operation will not trigger a new workflow but will be used in the next workflow execution unless risk factors change or results are invalidated.\n- To execute the workflow, use the endpoint `POST /v2/individuals/{entityId}/serviceprofiles/{serviceName}/workflows/{workflowName}/execute`.", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "riskAssessment": { "$ref": "#/components/schemas/Risk-Assessment" } } } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "409": { "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "updateIndividualRiskLevel", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "comment": { "$ref": "#/components/schemas/Comment" }, "riskLevel": { "$ref": "#/components/schemas/Risk-Level" } } } } } }, "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/X-Frankie-Username" } ], "tags": [ "Individual Risks" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/monitor": { "parameters": [ { "$ref": "#/components/parameters/entityId" } ], "patch": { "summary": "Turn on/off monitoring for a given entity", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/entity_patch_monitoring_response" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "comment": { "$ref": "#/components/schemas/Comment" } } } } } }, "operationId": "patchMonitoring", "description": "Toggle monitoring on or off for for a given entity e.g. AML monitoring. Use this endpoint to either:\n- Enable monitoring - System will start monitoring the entity for potential changes.\n- Disable monitoring - System will no longer monitor the entity for new potential matches and will no longer send alerts.\n\nThe endpoint will effectively manage the monitoring status of the entity.\nHaving monitoring status of a type enabled means that the entity is being monitored for that type.\nIf the entity has several services under the entity, the endpoint will manage the subscription status of the entity for each service for the types requested.\nRequest:\nThe request object contains the `entityId` and list of `monitoring` that are about to toggle.\nAlso, the request body contains comment to be added to audit logs\nResponse:\nThe response object contains the `requestId` and the `subscriptions` that associated with the entity.\nThe subscriptions object contains the type of monitoring and the details of the subscriptions.\nThe details of the subscriptions includes:\n - service name\n - service profile ID\n - status of the subscription\n - the workflows that will be executed by the type for the service profile.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" }, { "$ref": "#/components/parameters/toggle-monitoring" }, { "$ref": "#/components/parameters/monitoring-types" } ], "tags": [ "Monitoring" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/actions/idv/token": { "parameters": [ { "$ref": "#/components/parameters/entityId" } ], "post": { "summary": "Get an IDV Token for the given individual.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IDV-Token-Request" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IDV-Token-Response" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "getIDVToken", "description": "Queries the IDV provider for a token to be used with their sdk. This allows a provider SDK to be instantiated, this is to be called before starting the IDV or OCR process.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" } ], "tags": [ "IDV" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/actions/idv/ocr": { "parameters": [ { "$ref": "#/components/parameters/entityId" } ], "post": { "summary": "Submit an identity document photo for ocr processing. Results will be in the form of an identity document with populated with ocr results.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IDV-OCR-Request" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IDV-OCR-Response" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "processIDVOCR", "description": "Submit an identity document photo for ocr processing. Results will be in the form of an identity document with populated with ocr results if successful. Status will be COMPLETE_OCR if OCR was successful and no further images are required. The image can be uploaded or captured via a vendor SDK after calling get IDV token, or can be submitted directly as a fileData.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" } ], "tags": [ "IDV" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/{entityId}/actions/idv/process": { "parameters": [ { "$ref": "#/components/parameters/entityId" } ], "post": { "summary": "At the end of the IDV data capture process with all photos and videos captured, signal to IDV provider that check is ready to analyse and check.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IDV-InitProcess-Request" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IDV-InitProcess-Response" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "initBiometrics", "description": "At the end of the IDV data capture process with all photos and videos captured, signal to IDV provider\n that check is ready to analyse and check. If this call is successful, an entity\nis populated with with any details supplied if it doesn't not already have a name.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" } ], "tags": [ "IDV" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } }, "/v2/individuals/hostedurl": { "post": { "summary": "Provide hosted url for a hosted version of onesdk.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IDV-HostedUrl-Request" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IDV-HostedUrl-Response" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid EntityId": { "value": { "errorCode": "API-0400,", "errorMsg": "Multiple Errors: See Issues list", "details": [ { "issue": "entityId in path must be of type uuid: \"test\"", "issueLocation": "VALIDATE-entityId" } ], "requestId": "01HM5XJ7VASZ3EJMB1VQGTBFJ4" } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "examples": { "Invalid authentication": { "value": { "errorCode": "AUTH-0002,", "errorMsg": "Unauthorized", "details": [ { "issue": "Invalid Authentication provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000000S6MNG7624K2TDXT1E3" } }, "No Api-Key": { "value": { "errorCode": "AUTH-0401", "errorMsg": "Unauthorized", "details": [ { "issue": "No api key provided. Access denied.", "issueLocation": "request" } ], "requestId": "00000001S6MNG7624K2TDXT1E3" } } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "502": { "description": "Bad Gateway", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "operationId": "getHostedUrl", "description": "Hosted OneSDK URL Generation, used to request a hosted OneSDK URL with entity specific token for a customer to use a hosted OneSDK session to do an action. Examples of actions that may be done is to complete their onboarding process or to re-attempt IDV checks. If sendSMS is true and a phone number is supplied, an SMS will be sent to the phone number with the generated URL.", "parameters": [ { "$ref": "#/components/parameters/Api-Key" }, { "$ref": "#/components/parameters/X-Frankie-CustomerID" }, { "$ref": "#/components/parameters/X-Frankie-CustomerChildID" }, { "$ref": "#/components/parameters/X-Frankie-Channel" } ], "tags": [ "HostedURL" ], "security": [ { "Api-Key": [] }, { "jwt": [ "kyc:api" ] } ] } } }, "components": { "securitySchemes": { "Api-Key": { "type": "apiKey", "in": "header", "name": "api_key", "description": "" }, "jwt": { "type": "http", "scheme": "bearer", "bearerFormat": "JWT" } }, "parameters": { "levelQuery": { "name": "level", "in": "query", "schema": { "type": "string", "default": "meta", "enum": [ "id", "meta", "base64" ] }, "description": "Determines what level of detail to return in the response\n - id: Return just an id\n - meta: Return all metadata only, no links or base64 data\n - base64: Return all metadata and data in base64 format" }, "Api-Key": { "name": "api_key", "in": "header", "schema": { "type": "string", "example": "245c765b124a098d09ef8765...." }, "description": "Your API key provided by FrankieOne", "required": true }, "X-Frankie-CustomerID": { "name": "X-Frankie-CustomerID", "in": "header", "required": true, "schema": { "type": "string", "example": "12345678-1234-1234-1234-123456789012" }, "description": "Your Customer ID provided by FrankieOne" }, "X-Frankie-CustomerChildID": { "name": "X-Frankie-CustomerChildID", "in": "header", "required": false, "schema": { "type": "string", "example": "87654321-4321-4321-4321-210987654321" }, "description": "Your Customer Child ID provided by FrankieOne" }, "X-Frankie-Channel": { "name": "X-Frankie-Channel", "in": "header", "required": false, "schema": { "type": "string" }, "description": "Open string that can be used to define the \"channel\" the request comes in from. It can potentially be used in routing and risk calculations upon request. Default values that can be used are: api portal smartui Any alphanumeric string is supported though. Anything over 64 characters will be truncated." }, "X-Frankie-Username": { "name": "X-Frankie-Username", "in": "header", "description": "Username provided by API caller", "required": false, "schema": { "type": "string", "example": "fred.flintstone@frankieone.com" } }, "entityId": { "name": "entityId", "in": "path", "schema": { "type": "string" }, "description": "Unique FrankieOne identifier for an entity", "required": true }, "levelNoIdQuery": { "name": "level", "in": "query", "schema": { "type": "string", "default": "meta", "enum": [ "meta", "base64" ] }, "description": "Determines what level of detail to return in the response\n - meta: Return all metadata only, no links or base64 data\n - base64: Return all metadata and images as base64" }, "X-Frankie-Background": { "name": "X-Frankie-Background", "schema": { "type": "integer", "enum": [ 0, 1 ] }, "description": "If this header parameter is supplied and set to 1, then the request will not wait for the process to finish,\nand will return a 202 if there are no obvious errors in the input. The request will then run in the background\nand send a notification back to the customer. See our callback API for details on this.\n", "in": "header", "required": false }, "serviceNameQuery": { "name": "serviceName", "in": "query", "schema": { "type": "array", "items": { "type": "string" } }, "explode": false, "description": "The unique name of the service profile (Supports multiple service names)" }, "includeQuery": { "name": "include", "in": "query", "style": "form", "explode": false, "schema": { "type": "array", "items": { "type": "string", "enum": [ "workflowDefinition" ] }, "default": [] }, "description": "Query parameter to include additional fields of fetch workflow" }, "serviceName": { "name": "serviceName", "in": "path", "schema": { "type": "string" }, "description": "The unique name of the service profile", "required": true }, "workflowName": { "name": "workflowName", "in": "path", "schema": { "type": "string" }, "description": "The unique name of the workflow", "required": true }, "limit": { "in": "query", "name": "limit", "schema": { "type": "integer", "minimum": 1, "default": 20 }, "example": 20, "description": "Limit the number of items that will be returned as part of the request" }, "page": { "in": "query", "name": "page", "example": 2, "schema": { "type": "integer" }, "description": "The page number that you want to retrieve for the list query" }, "sort": { "in": "query", "name": "sort", "schema": { "type": "string", "enum": [ "asc", "desc" ] }, "description": "Order of the sort fields will be sorted upon" }, "sortFields": { "name": "sortFields", "in": "query", "style": "form", "explode": false, "schema": { "type": "array", "items": { "type": "string" } }, "description": "List of fields that the Process Results will be filtered with\nAvailable values : createdAt, updatedAt" }, "query_filter_workflowresults": { "in": "query", "name": "workflowResults", "description": "list of workflow execution result values to filter results on", "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Workflow-Execution-ResultEnum" } } }, "query_filter_workflowexecutionstates": { "in": "query", "name": "workflowExecutionStates", "description": "List of workflow execution state values to filter with", "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Workflow-Execution-StateEnum" } } }, "query_filter_startedatbefore": { "name": "startedAtBefore", "in": "query", "example": "2024-02-29T02:15:04Z", "schema": { "type": "string", "format": "date-time" }, "description": "Filter on the startedAt field, results returned are based on being before the value (inclusive)" }, "query_filter_startedatafter": { "name": "startedAtAfter", "in": "query", "example": "2024-02-29T02:15:04Z", "schema": { "type": "string", "format": "date-time" }, "description": "Filter on the startedAt field, results returned are based on being before the value (inclusive)" }, "query_filter_endedatbefore": { "name": "endedAtAfter", "in": "query", "example": "2024-02-29T02:15:04Z", "schema": { "type": "string", "format": "date-time" }, "description": "Filter on the endedAt field, results returned are based on being before the value (inclusive)" }, "query_filter_endedatafter": { "name": "endedAtBefore", "in": "query", "example": "2024-02-29T02:15:04Z", "schema": { "type": "string", "format": "date-time" }, "description": "Filter on the endedAt field, results returned are based on being before the value (inclusive)" }, "executionId": { "name": "workflowExecutionId", "in": "path", "schema": { "type": "string" }, "description": "Unique workflow execution identifier", "required": true }, "profileNameQuery": { "name": "profileName", "in": "query", "schema": { "type": "string" }, "description": "The unique name of the service profile" }, "createdAtBefore": { "name": "createdAtBefore", "in": "query", "schema": { "type": "string", "format": "date-time" }, "description": "Filter on the createdAt field, results returned are based on being before the value (inclusively)", "example": "2024-02-29T02:15:04Z" }, "createdAtAfter": { "name": "createdAtAfter", "in": "query", "schema": { "type": "string", "format": "date-time" }, "description": "Filter on the createdAt field, results returned are based on being after the value (inclusively)", "example": "2024-02-29T02:15:04Z" }, "updatedAtBefore": { "name": "updatedAtBefore", "in": "query", "schema": { "type": "string", "format": "date-time" }, "description": "Filter on the updatedAt field, results returned are based on being before the value (inclusively)", "example": "2024-02-29T02:15:04Z" }, "updatedAtAfter": { "name": "updatedAtAfter", "in": "query", "schema": { "type": "string", "format": "date-time" }, "description": "Filter on the updatedAt field, results returned are based on being before the value (inclusively)", "example": "2024-02-29T02:15:04Z" }, "stepNames": { "name": "stepNames", "in": "query", "style": "form", "explode": false, "schema": { "type": "array", "items": { "type": "string" } }, "description": "List of steps to include, separated by a comma." }, "stepTypes": { "name": "stepTypes", "in": "query", "style": "form", "explode": false, "schema": { "type": "array", "items": { "type": "string" } }, "description": "A list of stepTypes the Process Result is associated with" }, "objectTypes": { "name": "objectTypes", "in": "query", "style": "form", "explode": false, "schema": { "type": "array", "items": { "type": "string" } }, "description": "List of objectTypes to filter upon" }, "classes": { "name": "classes", "in": "query", "style": "form", "explode": false, "schema": { "type": "array", "items": { "type": "string" } }, "description": "List of classes to filter results with Available values : KYC, ID, IDV, AML, FRAUDLIST, FRAUDCHECK, DEVICE, MOBILE, EMAIL, LOOKUP, CREATE, UPDATE, DELETE, MANUAL, ORGANIZATION_PROFILE, ORGANIZATION_OWNERSHIP" }, "systemStatuses": { "name": "systemStatuses", "in": "query", "style": "form", "explode": false, "schema": { "type": "array", "items": { "type": "string" } }, "description": "List of systemStatus values to filter results with\nAvailable values : VALID, EXPIRED, STALE, MARKED_INVALID, MARKED_IGNORE" }, "manualStatuses": { "name": "manualStatuses", "in": "query", "style": "form", "explode": false, "schema": { "type": "array", "items": { "type": "string" }, "description": "List of manualStatus fields to filter results with Available values : UNKNOWN, FALSE_POSITIVE, TRUE_POSITIVE, TRUE_POSITIVE_REJECT, TRUE_POSITIVE_ACCEPT, PASS, FAIL" } }, "states": { "name": "states", "in": "query", "style": "form", "explode": false, "schema": { "type": "array", "items": { "type": "string" } }, "description": "List of state values to filter results with\nAvailable values : IN_PROGRESS, COMPLETED, TIMEOUT, ERROR" }, "results": { "name": "results", "in": "query", "style": "form", "explode": false, "schema": { "type": "array", "items": { "type": "string" } }, "description": "List of result value that the Process Result will be filtered with\nAvailable values : MATCH, PARTIAL_MATCH, INVALID_MATCH, NO_MATCH, CLEAR, HIT, BAD_DATA, CREATED, UPDATED, DELETED, FAIL" }, "nameId": { "name": "nameId", "in": "path", "schema": { "type": "string" }, "required": true }, "dateOfBirthId": { "name": "dateOfBirthId", "in": "path", "schema": { "type": "string" }, "required": true }, "addressId": { "name": "addressId", "in": "path", "schema": { "type": "string" }, "description": "Unique identifier for an address", "required": true }, "emailAddressId": { "name": "emailAddressId", "in": "path", "schema": { "type": "string" }, "required": true }, "phoneNumberId": { "name": "phoneNumberId", "in": "path", "schema": { "type": "string" }, "required": true }, "consentType": { "name": "consentType", "x-go-name": "ConsentTypeParam", "in": "path", "schema": { "$ref": "#/components/schemas/Consent-Type-Param" }, "required": true }, "referenceId": { "name": "referenceId", "in": "path", "schema": { "type": "string" }, "description": "Unique external reference identifier", "required": true }, "documentId": { "name": "documentId", "in": "path", "schema": { "type": "string" }, "description": "Unique identifier for a document", "required": true }, "attachmentId": { "name": "attachmentId", "in": "path", "schema": { "type": "string" }, "required": true }, "toggle-monitoring": { "in": "query", "name": "enabled", "schema": { "type": "boolean" }, "description": "Enable or disable monitoring for the given entity. Set to true to turn monitoring on or set to false to turn monitoring off.", "required": true }, "monitoring-types": { "in": "query", "name": "monitoringTypes", "style": "form", "explode": false, "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Monitoring-Type" } }, "description": "The type of ongoing monitoring to be enabled/disable for the given entity. Exclude this parameter to set the monitoring status for all types." } }, "schemas": { "Entity-ID": { "type": "string", "description": "Entities are assigned a FrankieOne auto-generated UUID to ensure global uniqueness, represented as entityId. The entityId allows for precise modification when required.\nTo modify an entity, set the entityId of the entity you wish to update in an update request.", "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "readOnly": true }, "Entity-Type": { "type": "string", "enum": [ "INDIVIDUAL", "ORGANIZATION", "UNKNOWN" ], "description": "The type of entity within Frankie. This can be \"INDIVIDUAL\", \"ORGANIZATION\", or \"UNKNOWN\".", "readOnly": true }, "Address-TypeEnum": { "type": "string", "default": "OTHER", "enum": [ "OTHER", "RESIDENTIAL", "BUSINESS", "POSTAL", "REGISTERED_OFFICE", "PLACE_OF_BUSINESS", "OFFICIAL_CORRESPONDANCE", "PLACE_OF_BIRTH", "OFFICE_LOCALITY", "AUTHORITATIVE_RESIDENTIAL" ] }, "Date-Type": { "type": "string", "default": "GREGORIAN", "enum": [ "BUDDHIST", "DISCORDIAN", "GREGORIAN", "HEBREW", "ISLAMIC", "JULIAN", "LUNAR", "MESO_AMERICAN", "PERSIAN", "OTHER" ], "description": "The calendar system used for the date, e.g., BUDDHIST, DISCORDIAN, GREGORIAN, HEBREW, ISLAMIC, JULIAN, LUNAR, MESO_AMERICAN, PERSIAN, or OTHER." }, "Date-Base": { "type": "object", "properties": { "year": { "type": "string", "description": "Year in \"YYYY\" format.", "example": "1990" }, "month": { "type": "string", "description": "Month in \"MM\" format.", "example": "03" }, "day": { "type": "string", "description": "Day in \"DD\" format.", "example": "27" }, "unstructured": { "type": "string", "description": "Raw date format without normalization or standardization to the Gregorian calendar.\nThis can be used to provide non-Gregorian dates (e.g., Islamic dates).", "example": "12 Rajab 1445 AH" }, "type": { "$ref": "#/components/schemas/Date-Type" } } }, "Date": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/Date-Base" }, { "type": "object", "properties": { "normalized": { "type": "string", "format": "date", "description": "Full date in ISO 8601 format (\"YYYY-MM-DD\"). This is a read-only field.", "example": "1990-03-31", "readOnly": true } } } ] }, "Address-StatusEnum": { "type": "string", "default": "CURRENT", "enum": [ "CURRENT", "PREVIOUS", "FUTURE" ] }, "Address-Base": { "type": "object", "required": [ "country" ], "description": "Address information in all available formats", "properties": { "addressId": { "type": "string", "description": "As addresses are added to an entity, they are assigned an ID to assist with tracking." }, "sourceId": { "type": "string", "readOnly": true, "description": "The source from which specific information was sourced. This is a link to an informationSource object in the informationSources map." }, "type": { "$ref": "#/components/schemas/Address-TypeEnum", "description": "Used to indicate what sort of address this is, such as residential, business, postal, etc. Should be used in conjunction with the status field to indicate the current status of the address and provide more context." }, "typeDescription": { "type": "string", "description": "Description for the type or the address type as fetched from an authoritative source like a company registry." }, "validFrom": { "$ref": "#/components/schemas/Date", "description": "The date this address first became active. Used mostly with business addresses." }, "validTo": { "$ref": "#/components/schemas/Date", "description": "The date this address was no longer used (if available). Used mostly with business addresses." }, "longForm": { "type": "string", "description": "In some cases, the address will need to be supplied in \"long form\", such as when it is determined from a document scan, or is unparsable in some way.\nThe service will attempt to convert it to its constituent parts where possible.\nWARNING: Use of longForm is not guaranteed to produce perfect results, due to the variety of potential formats. You have been warned.\nFailure to break down or disambiguate the address will result in an error." }, "unitNumber": { "type": "string", "description": "Unit/Apartment/Flat/Suite/etc. number" }, "buildingName": { "type": "string", "description": "The name of the building, apartment block, condominium, etc." }, "streetName": { "type": "string", "description": "The name of the street.\nThis field should ideally contain only the street name, without the street number or street type. In some cases, especially when auto-populated by external services (e.g., Google), it may include additional address components.\nFor best results, keep the street name separate from the street number and street type. See https://docs.frankieone.com/docs/working-with-addresses for more details." }, "streetNumber": { "type": "string", "description": "The number assigned to the property on the street. Typically a number, but can also be alphanumeric (e.g., 3A)." }, "streetType": { "type": "string", "description": "The street type, such as Road, Street, Avenue, Circuit, etc." }, "neighborhood": { "type": "string", "description": "The neighborhood or suburb within the town or city. Use this only if you require both a suburb and a locality/town/city; otherwise, use the \"locality\" parameter." }, "locality": { "type": "string", "description": "The locality, town, village, suburb, or city." }, "district": { "type": "string", "description": "The district, region, county, province, or cantonment." }, "subdivision": { "type": "string", "description": "The administrative area, state, or sub-division. Use local abbreviations, such as VIC (Victoria) or TX (Texas)." }, "country": { "type": "string", "description": "The ISO-3166-1 country code. You must use the alpha-3 country code (e.g., AUS, USA, IDR, KOR, etc). Conversion will be handled as needed.\nFor more details, refer to: https://en.wikipedia.org/wiki/ISO_3166-1" }, "postalCode": { "type": "string", "description": "The postal code of the address." }, "careOf": { "type": "string", "description": "The individual or business name at this address, if different from the name of the entity to which this address belongs." }, "status": { "$ref": "#/components/schemas/Address-StatusEnum", "description": "The status of the address information, such as current, previous, or future. Should be used in conjunction with the `type` field to indicate the type of the address and provide more context." } } }, "Address": { "type": "object", "description": "Address information in all available formats", "allOf": [ { "$ref": "#/components/schemas/Address-Base" }, { "type": "object", "properties": { "unstructuredLongForm": { "type": "string", "description": "Raw, unformatted address as provided by the source. Not normalized or standardized.", "readOnly": true } } } ] }, "Phone-Number-ID": { "type": "string", "description": "As phone numbers are added to an entity, they are assigned an ID to assist with tracking.\nIf you are adjusting phone numbers, you will need to include the ID to reference it correctly in the list.", "example": "ad165f64-5717-4562-b3fc-2c963f66bfa9" }, "Phone-Number": { "type": "object", "properties": { "phoneNumberId": { "$ref": "#/components/schemas/Phone-Number-ID" }, "isPreferred": { "type": "boolean", "example": true, "description": "Indicates whether this is the individual's preferred phone number." }, "type": { "type": "string", "enum": [ "OTHER", "WORK", "HOME", "MOBILE", "BUSINESS", "FAX" ], "description": "The type of phone number.", "example": "MOBILE" }, "sourceId": { "type": "string", "description": "The source from which specific information was sourced. This is a link to an informationSource object in the informationSources map.", "example": "14fd5f64-5717-4562-b3fc-2c963f66ba34", "readOnly": true }, "country": { "type": "string", "description": "ISO-3166-1 alpha-3 country code.", "example": "AUS" }, "number": { "type": "string", "description": "The phone number.", "example": "0426192340" }, "linkedAddresses": { "type": "array", "readOnly": true, "description": "If the phone number is attached to one or more addresses, the address IDs of those addresses will be present.", "items": { "type": "object", "properties": { "addressId": { "description": "The addressId of the linked address.", "type": "string", "example": "fa335f64-5717-4562-b3fc-2c963f66cf41" } } } }, "unstructuredLongForm": { "type": "string", "description": "Used to capture free-form phone numbers or to store numbers that could not be normalized." } } }, "Email-Address-ID": { "type": "string", "description": "As email addresses are added to an entity, they are assigned a unique identifier to assist with modification and reference.\nTo modify an email, include the emailId in an update request.", "example": "aa385f64-5717-4562-b3fc-2c963f66af21" }, "Email": { "type": "object", "properties": { "emailAddressId": { "$ref": "#/components/schemas/Email-Address-ID" }, "type": { "type": "string", "enum": [ "OTHER", "WORK", "PERSONAL", "BUSINESS" ], "example": "WORK", "description": "The type of email address, if known." }, "sourceId": { "type": "string", "description": "The source from which specific information was sourced. This is a link to an informationSource object in the informationSources map.", "example": "31dd15f64-5717-4562-b3fc-2c963f66234d", "readOnly": true }, "email": { "type": "string", "description": "The individual's email address. This email can be used to notify the individual of any verification requirements.", "example": "leonardo_dc@outlook.com" }, "isPreferred": { "type": "boolean", "description": "Indicates whether this email address is the individual's preferred email. The preferred email will be used to send notifications at the client's request.", "default": true }, "linkedAddresses": { "type": "array", "readOnly": true, "description": "If the email is attached to one or more addresses, the address IDs of those addresses will be present.", "items": { "type": "object", "properties": { "addressId": { "description": "The addressId of the linked address.", "type": "string", "example": "adc215f64-5717-4562-b3fc-2c963f66222a" } } } } } }, "Attribute": { "type": "object", "required": [ "type", "value" ], "properties": { "type": { "description": "The attribute type.", "type": "string", "maxLength": 64 }, "value": { "description": "The value assigned to the attribute.", "type": "string" } } }, "Custom-Attributes": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/Attribute" } }, "External-Reference-Information": { "type": "object", "x-examples": { "Customer Reference": { "name": "CUSTOMER-REFERENCE", "value": "CUST-00001342", "description": "This is the customer id in the core banking system" } }, "required": [ "name", "value" ], "description": "Used to store references and identifying information about an entity that is external to FrankieOne. If you wish to filter or search on customer information relevant to your business, that information should be added as an external reference.", "properties": { "name": { "type": "string", "description": "The name of the external reference.", "example": "CUSTOMER-REFERENCE" }, "value": { "type": "string", "description": "The value of the external reference.", "example": "CUST-00001342" }, "description": { "type": "string", "description": "A summary of what this external reference is and what it is used for.", "example": "This is the customer ID in the core banking system." } } }, "External-Reference": { "type": "object", "description": "Reference information used to identify the individual in systems external to FrankieOne.", "allOf": [ { "type": "object", "properties": { "referenceId": { "type": "string", "description": "As external references are added to an entity, they are assigned a unique identifier to assist with modification and reference.\nTo modify an external reference, include the referenceId in an update request for the individual.", "example": "24de15f64-5717-4562-b3fc-2c963f66e23e", "readOnly": true }, "type": { "type": "string", "enum": [ "SYSTEM", "CUSTOMER", "OTHER" ], "default": "CUSTOMER" }, "sourceId": { "type": "string", "description": "The source from which specific information was sourced. This is a link to an informationSource object in the informationSources map.", "example": "93da15f64-5717-4562-b3fc-2c963f6663fe", "readOnly": true } } }, { "$ref": "#/components/schemas/External-Reference-Information" } ] }, "Document-Class": { "type": "string", "enum": [ "OTHER", "IDENTITY", "SUPPORTING", "REPORT" ], "description": "The classification of the document, indicating how it should be used or interpreted.", "example": "IDENTITY" }, "Document-ID": { "type": "string", "format": "uuid", "description": "As documents are added to an entity, they are assigned a unique identifier to assist with modification and reference.\nTo modify a document, include the documentId in an update request.", "example": "92de15f64-5717-4562-b3fc-2c963f6665a7" }, "Document-Type": { "type": "string", "enum": [ "OTHER", "DRIVERS_LICENSE", "PASSPORT", "VISA", "IMMIGRATION", "NATIONAL_ID", "TAX_ID", "NATIONAL_HEALTH_ID", "CONCESSION", "HEALTH_CONCESSION", "PENSION", "MILITARY_ID", "BIRTH_CERT", "CITIZENSHIP", "MARRIAGE_CERT", "DEATH_CERT", "NAME_CHANGE", "UTILITY_BILL", "BANK_STATEMENT", "BANK_ACCOUNT", "INTENT_PROOF", "ATTESTATION", "SELF_IMAGE", "DEVICE", "VEHICLE_REGISTRATION", "PROOF_OF_ADDRESS", "HOUSE_REGISTRATION", "YELLOW_HOUSE_REGISTRATION", "WORK_PERMIT", "EMPLOYMENT_CERTIFICATE", "NOTARY_PUBLIC_ID", "EXTERNAL_ADMIN", "CHARGES", "PRE_ASIC", "ANNUAL_RETURN", "REPORT", "TRUST_DEED", "DEED_OF_VARIATION", "REGISTER_OF_UNIT_HOLDERS", "PARTNERSHIP_AGREEMENT", "ADMIN_CHANGE", "COMPANY_REPORT", "CHECK_RESULTS", "AVIATION_SECURITY_ID", "MARITIME_SECURITY_ID", "ORGANIZATION_PROFILE", "ORGANIZATION_OWNERSHIP" ], "description": "Valid document ID types.\n\n - \"OTHER\": Generic document type. Unspecified.\n - \"DRIVERS_LICENSE\": Driver's license.\n - \"PASSPORT\": Passport.\n - \"VISA\": Visa document (not Visa payment card).\n - \"IMMIGRATION\": Immigration card.\n - \"NATIONAL_ID\": Any national ID card.\n - \"TAX_ID\": Any national tax identifier.\n - \"NATIONAL_HEALTH_ID\": Any national health program ID card (e.g., Medicare, NHS).\n - \"CONCESSION\": State-issued concession card.\n - \"HEALTH_CONCESSION\": State-issued health-specific concession card.\n - \"PENSION\": State-issued pension ID.\n - \"MILITARY_ID\": Military ID.\n - \"BIRTH_CERT\": Birth certificate.\n - \"CITIZENSHIP\": Citizenship certificate.\n - \"MARRIAGE_CERT\": Marriage certificate.\n - \"DEATH_CERT\": Death certificate.\n - \"NAME_CHANGE\": Name change confirmation.\n - \"UTILITY_BILL\": Regulated utility bill, such as electricity, gas, etc.\n - \"BANK_STATEMENT\": Bank/card statement.\n - \"BANK_ACCOUNT\": Bank account.\n - \"INTENT_PROOF\": Proof of intent, generally a photo/video or a scanned letter.\n - \"ATTESTATION\": Document of attestation (e.g., Statutory Declaration).\n\n NOTE: These cannot be used as a supporting document:\n - \"SELF_IMAGE\": A \"selfie\" used for comparisons.\n - \"DEVICE\": Device ID.\n - \"VEHICLE_REGISTRATION\": Vehicle registration number.\n - \"PROOF_OF_ADDRESS\": Any document that provides proof of address.\n - \"HOUSE_REGISTRATION\": House registration document.\n - \"YELLOW_HOUSE_REGISTRATION\": Yellow House Registration Thor Ror 13.\n - \"WORK_PERMIT\": Work permit.\n - \"EMPLOYMENT_CERTIFICATE\": Certificate of employment.\n - \"NOTARY_PUBLIC_ID\": Notary Public Identification.\n\n Business-related documentation:\n\n - \"EXTERNAL_ADMIN\": Details of appointed administrator.\n - \"CHARGES\": Details of any charges laid against a company or director.\n - \"PRE_ASIC\": Any documents that are Pre-ASIC.\n - \"ANNUAL_RETURN\": Details of a company's annual return.\n - \"REPORT\": Frankie-generated report.\n - \"TRUST_DEED\": Corporate trust deed.\n - \"DEED_OF_VARIATION\": Deed of variation document.\n - \"REGISTER_OF_UNIT_HOLDERS\": Register of unit holders document.\n - \"PARTNERSHIP_AGREEMENT\": Partnership agreement documents.\n - \"ADMIN_CHANGE\": Change of administrator.\n - \"COMPANY_REPORT\": Registry-filed company reports.\n - \"ORGANIZATION_PROFILE\": Organization profile document.\n - \"ORGANIZATION_OWNERSHIP\": Organization ownership document.\n\n Special document types:\n\n - \"CHECK_RESULTS\": Special document type for specifying results of checks completed other than through Frankie.\n - \"AVIATION_SECURITY_ID\": Aviation Security Identification Card.\n - \"MARITIME_SECURITY_ID\": Maritime Security Identification Card." }, "Document-Supplementary-Data-Base": { "type": "object", "description": "Supplementary data associated with a document.", "required": [ "type" ], "properties": { "type": { "type": "string", "description": "The document type that defines the type of supplementary data returned.", "enum": [ "NATIONAL_HEALTH_ID", "BIRTH_CERT", "NATIONAL_ID", "CITIZENSHIP", "PASSPORT", "MARRIAGE_CERT" ] } } }, "Document-Supplementary-Data-National-Health-ID": { "type": "object", "description": "Supplementary information relevant to a national health id.", "allOf": [ { "$ref": "#/components/schemas/Document-Supplementary-Data-Base" }, { "type": "object", "properties": { "reference": { "type": "string", "description": "The individual reference number used to identify the position of the applicant's name on the health card. Required for Australian Medicare cards (this is the number to the left of the name on the card).", "example": "1" }, "nameOnCardLine1": { "type": "string", "description": "The individual's name as it appears on the card." }, "nameOnCardLine2": { "type": "string", "description": "If the individual's name spans more than one line, this is the part of the name that appears on line 2." }, "nameOnCardLine3": { "type": "string", "description": "If the individual's name spans more than two lines, this is the part of the name that appears on line 3." }, "nameOnCardLine4": { "type": "string", "description": "If the individual's name spans more than three lines, this is the part of the name that appears on line 4." }, "middleNameOnCard": { "type": "string", "description": "The individual's middle name or initial as it appears on the card." } } } ] }, "Document-Supplementary-Data-Birth-Certificate": { "type": "object", "description": "Supplementary information relevant to a birth certificate.", "allOf": [ { "$ref": "#/components/schemas/Document-Supplementary-Data-Base" }, { "type": "object", "description": "Supplementary information relevant to a birth certificate.", "properties": { "registrationDate": { "type": "string", "description": "The date the birth was registered.", "example": "2000" }, "registrationDistrict": { "type": "string", "description": "The district where the birth was registered.", "example": "Sydney" }, "dateOfPrint": { "type": "string", "description": "The date the birth certificate was printed.", "example": "2000" }, "givenName": { "type": "string", "description": "The given name as printed on the certificate." }, "otherNames": { "type": "string", "description": "Other name(s) as printed on the certificate." }, "familyName": { "type": "string", "description": "The family name as printed on the certificate." }, "countryOfBirth": { "type": "string", "description": "The country of birth as printed on the certificate. ISO 3166-1 alpha-3 code.", "example": "AUS" } } } ] }, "Document-Supplementary-Data-National-ID": { "type": "object", "description": "Supplementary information relevant to a national ID.", "allOf": [ { "$ref": "#/components/schemas/Document-Supplementary-Data-Base" }, { "type": "object", "properties": { "homeCountryFullName": { "type": "string", "description": "The original full name from the individual's home country national ID.", "example": "张伟明" }, "paternalFamilyName": { "type": "string", "description": "The individual's family name inherited from the father's side.", "example": "MENDOZA" }, "maternalFamilyName": { "type": "string", "description": "The individual's family name inherited from the mother's side.", "example": "GARCIA" } } } ] }, "Document-Supplementary-Data-Citizenship": { "type": "object", "description": "Supplementary information relevant to a citizenship certificate.", "allOf": [ { "$ref": "#/components/schemas/Document-Supplementary-Data-Base" }, { "type": "object", "description": "Supplementary information relevant to a citizenship certificate.", "properties": { "acquisitionDate": { "type": "string", "description": "The date citizenship was acquired.", "example": "2000/01/01" }, "primaryCountry": { "type": "string", "description": "The primary country of citizenship, represented by its three-letter ISO 3166-1 alpha-3 code.", "example": "USA" }, "secondaryCountry": { "type": "string", "description": "The secondary country of citizenship, if applicable, represented by its three-letter ISO 3166-1 alpha-3 code.", "example": "CAN" } } } ] }, "Document-Supplementary-Data-Passport": { "type": "object", "description": "Supplementary information relevant to a national health id.", "allOf": [ { "$ref": "#/components/schemas/Document-Supplementary-Data-Base" }, { "type": "object", "properties": { "homeCountryFullName": { "type": "string", "description": "The original name from the home country of passport.", "example": "张伟明" } } } ] }, "Document-Supplementary-Data-Marriage-Certificate": { "type": "object", "description": "Supplementary information relevant to a marriage certificate.", "allOf": [ { "$ref": "#/components/schemas/Document-Supplementary-Data-Base" }, { "type": "object", "description": "Supplementary information relevant to a marriage certificate.", "properties": { "partner1GivenName": { "type": "string", "description": "The given name of partner 1.", "example": "Harry" }, "partner1FamilyName": { "type": "string", "description": "The family name of partner 1.", "example": "Versailles" }, "partner1OtherName": { "type": "string", "description": "The other name of partner 1.", "example": "S." }, "partner2GivenName": { "type": "string", "description": "The given name of partner 2.", "example": "Harry" }, "partner2FamilyName": { "type": "string", "description": "The family name of partner 2.", "example": "Versailles" }, "partner2OtherName": { "type": "string", "description": "The other name of partner 2.", "example": "S." }, "registrationDate": { "type": "string", "description": "The date the marriage was registered.", "example": "2023" }, "marriageDate": { "type": "string", "description": "The date the marriage was held.", "example": "2023-10-01" }, "dateOfPrint": { "type": "string", "description": "The date the birth certificate was printed.", "example": "2023-10-01" } } } ] }, "Document-Supplementary-Data-Name-Change-Certificate": { "type": "object", "description": "Supplementary information relevant to a name change certificate.", "allOf": [ { "$ref": "#/components/schemas/Document-Supplementary-Data-Base" }, { "type": "object", "description": "Supplementary information relevant to a name change certificate.", "properties": { "dateOfPrint": { "type": "string", "description": "The date the name change certificate was printed.", "example": "2000/01/01" }, "registrationDate": { "type": "string", "description": "The date the name change certificate was registered.", "example": "2000/01/01" }, "registeredFamilyName": { "type": "string", "description": "The family name registered in the name change certificate.", "example": "Doe" }, "registeredGivenName": { "type": "string", "description": "The given name registered in the name change certificate.", "example": "John" }, "registeredOtherGivenNames": { "type": "string", "description": "Other given names registered in the name change certificate.", "example": "Roy Michael" } } } ] }, "Document-Supplementary-Data": { "type": "object", "description": "Supplementary information relevant to a specific document or report type.", "oneOf": [ { "$ref": "#/components/schemas/Document-Supplementary-Data-National-Health-ID" }, { "$ref": "#/components/schemas/Document-Supplementary-Data-Birth-Certificate" }, { "$ref": "#/components/schemas/Document-Supplementary-Data-National-ID" }, { "$ref": "#/components/schemas/Document-Supplementary-Data-Citizenship" }, { "$ref": "#/components/schemas/Document-Supplementary-Data-Passport" }, { "$ref": "#/components/schemas/Document-Supplementary-Data-Marriage-Certificate" }, { "$ref": "#/components/schemas/Document-Supplementary-Data-Name-Change-Certificate" } ], "discriminator": { "propertyName": "type", "mapping": { "NATIONAL_HEALTH_ID": "#/components/schemas/Document-Supplementary-Data-National-Health-ID", "BIRTH_CERT": "#/components/schemas/Document-Supplementary-Data-Birth-Certificate", "NATIONAL_ID": "#/components/schemas/Document-Supplementary-Data-National-ID", "CITIZENSHIP": "#/components/schemas/Document-Supplementary-Data-Citizenship", "PASSPORT": "#/components/schemas/Document-Supplementary-Data-Passport", "MARRIAGE_CERT": "#/components/schemas/Document-Supplementary-Data-Marriage-Certificate", "NAME_CHANGE": "#/components/schemas/Document-Supplementary-Data-Name-Change-Certificate" } } }, "Document-Attachment-ID": { "type": "string", "format": "uuid", "description": "When a document attachment is created or uploaded, it is assigned an attachmentId. This identifier will appear in a successful response or accepted response. It can be referenced in subsequent calls if you are uploading additional or updated data." }, "Document-Attachment-Side": { "type": "string", "enum": [ "FRONT", "BACK" ], "description": "Indicates whether the attachment is the front or back side of a document." }, "Document-Attachment-Type": { "type": "string", "description": "General types of valid document attachments.\n - \"PHOTO\": Any photo.\n - \"VIDEO\": Any video.\n - \"AUDIO\": Any audio.\n - \"PDF\": PDF or PS file (may contain text, images, or both).\n - \"DOC\": Word document, RTF, etc.\n - \"ZIP\": Any compressed file(s)." }, "Data-URI-Base64": { "description": "A Base64-encoded string or URI representing the data.", "oneOf": [ { "type": "object", "readOnly": true, "required": [ "uri" ], "properties": { "uri": { "type": "string", "description": "URI identifying the resource location.", "example": "https://s3.amazonaws.com/dev/41963bc5feff322020137de233c3be0fac6/croppedFrontID/38d54232-b840-431d-b248-152345fe214.jpg" } } }, { "type": "object", "required": [ "base64" ], "properties": { "base64": { "type": "string", "description": "Base64-encoded string of the raw attachment data.", "example": "ZG9jdW1lbnQgaW1hZ2UgZ29lcyBoZXJl" } } } ] }, "Document-Attachment-Retrieval-Status": { "type": "string", "readOnly": true, "enum": [ "NORMAL", "EXCLUDED", "FAILED" ], "description": "The reason why the data in a response is missing.\n\n- \"NORMAL\": The data was retrieved and is included. If it is empty, then\n it was never provided or was provided empty.\n\n- \"EXCLUDED\": The retrieval request was not for 'full' data, or the object\n has been deleted, so the data is not included.\n\n- \"FAILED\": The data could not be retrieved from the secure document\n store.\n\nThe retrievalStatus enum will not usually be set in a request. If an\nattachment in a response has a 'FAILED' retrieval state, then\nthat object should not be sent back in a future update. It should\neither be omitted or the original data should be resent if it is available\nfrom another source. However, it is safe to send the object in an update\nwith the state received in a response. Any state other than 'NORMAL' (or\n'') will cause the blank data to be ignored, but other fields in the\nobject will be updated if needed." }, "Document-Attachment": { "type": "object", "required": [ "data" ], "description": "Document attachment details.", "properties": { "attachmentId": { "$ref": "#/components/schemas/Document-Attachment-ID" }, "sourceId": { "type": "string", "readOnly": true, "description": "The source from which specific information was sourced. This is a link to an informationSource object in the informationSources map." }, "createdAt": { "type": "string", "readOnly": true, "format": "date-time", "description": "The date and time the attachment was created. This is not the date of the attached document, which should be in the idIssued attribute of the document that owns this attachment." }, "updatedAt": { "type": "string", "format": "date-time", "readOnly": true, "description": "The date and time the attachment was last updated. This is not the date of the attached document, which should be in the idIssued attribute of the document that owns this attachment." }, "filename": { "type": "string", "description": "If you are uploading a file where it is important to keep the original filename, you can provide it here. Otherwise, the Frankie service will assign an arbitrary name based on the attachmentId and an extension based on the MIME type." }, "mimeType": { "type": "string", "description": "The standard MIME type of the file being uploaded. This will be verified, but providing it can help speed up processing." }, "pageNumber": { "type": "integer", "description": "If uploading multiple pages, this can be used to track page numbers. There is no enforcement of these numbers. You can have multiple page 1's or a page 29 if you wish." }, "side": { "$ref": "#/components/schemas/Document-Attachment-Side" }, "type": { "$ref": "#/components/schemas/Document-Attachment-Type" }, "location": { "description": "Reference to where the data can be retrieved from.", "type": "string" }, "data": { "$ref": "#/components/schemas/Data-URI-Base64" }, "lastMalwareScanAt": { "type": "string", "format": "date-time" }, "retrievalStatus": { "$ref": "#/components/schemas/Document-Attachment-Retrieval-Status" } } }, "Document-Information": { "type": "object", "required": [ "type", "country" ], "properties": { "class": { "$ref": "#/components/schemas/Document-Class" }, "documentId": { "$ref": "#/components/schemas/Document-ID" }, "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "expiryDate": { "$ref": "#/components/schemas/Date", "description": "The expiry date of the document in YYYY-MM-DD format." }, "issueDate": { "$ref": "#/components/schemas/Date", "description": "The issue date of the document in YYYY-MM-DD format." }, "primaryIdentifier": { "type": "string", "description": "The primary ID number of the document, e.g., the ID number on a driver licence.", "example": "000734130" }, "secondaryIdentifier": { "type": "string", "description": "The secondary ID number of the document, e.g., the card number on a driver licence.", "example": "P0001975" }, "type": { "$ref": "#/components/schemas/Document-Type" }, "subtype": { "type": "string", "description": "The sub-type of the document, if relevant. This can include specific report or attestation types, e.g., FACIAL_COMPARISON (attestation) or KYC (report).", "example": "Photo Comparison" }, "subdivision": { "type": "string", "description": "The abbreviated ISO 3166 subdivision/region where the ID was issued, e.g., \"VIC\" for the Australian state of Victoria or \"MA\" for the US state of Massachusetts.", "example": "VIC" }, "country": { "type": "string", "maxLength": 3, "description": "The ISO 3166 alpha-3 country code where the document was issued, if relevant.\nFor more information, please refer to: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes", "example": "AUS" }, "createdAt": { "type": "string", "format": "date-time", "description": "The date and time when the document record was created, in ISO 8601 format.", "example": "2024-01-15T02:18:11.365Z", "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "description": "The date and time when the document record was last updated, in ISO 8601 format.", "example": "2025-01-16T02:18:11.365Z", "readOnly": true }, "validFrom": { "$ref": "#/components/schemas/Date", "description": "The date when the validity period for this document began, if applicable." }, "validTo": { "$ref": "#/components/schemas/Date", "description": "The date when the validity period for this document ended, if applicable." }, "sourceId": { "type": "string", "description": "The source from which specific information was sourced. This is a link to an informationSource object in the informationSources map.", "example": "324f15f64-5717-4562-b3fc-2c963f66ffa1", "readOnly": true }, "supplementaryData": { "$ref": "#/components/schemas/Document-Supplementary-Data" }, "customAttributes": { "$ref": "#/components/schemas/Custom-Attributes" }, "attachments": { "type": "array", "description": "List of scans, pages, or files for a single document, e.g., front and back images of a driver licence, or page 1, 2, and 3 of a supporting document.\n\nAttachments can be uploaded in a single call or in multiple calls. To upload attachments over multiple calls, include the documentId in the request.", "items": { "$ref": "#/components/schemas/Document-Attachment" } } } }, "Entity-Documents": { "type": "object", "properties": { "REPORT": { "type": "array", "items": { "$ref": "#/components/schemas/Document-Information" } }, "SUPPORTING": { "type": "array", "items": { "$ref": "#/components/schemas/Document-Information" } }, "IDENTITY": { "type": "array", "items": { "$ref": "#/components/schemas/Document-Information" } }, "OTHER": { "type": "array", "items": { "$ref": "#/components/schemas/Document-Information" } } } }, "Entity": { "type": "object", "properties": { "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "entityType": { "$ref": "#/components/schemas/Entity-Type" }, "createdAt": { "type": "string", "format": "date-time", "readOnly": true }, "schemaVersion": { "type": "integer", "description": "The schema version of this entity.", "example": 2, "readOnly": true }, "addresses": { "type": "array", "items": { "$ref": "#/components/schemas/Address" }, "description": "A list of all address information associated with the entity." }, "phoneNumbers": { "type": "array", "items": { "$ref": "#/components/schemas/Phone-Number" }, "description": "A list of all phone numbers associated with the entity." }, "emailAddresses": { "type": "array", "items": { "$ref": "#/components/schemas/Email" }, "description": "A list of all email addresses associated with the entity." }, "customAttributes": { "$ref": "#/components/schemas/Custom-Attributes" }, "externalReferences": { "type": "array", "items": { "$ref": "#/components/schemas/External-Reference" }, "description": "A list of all external references associated with the entity." }, "documents": { "$ref": "#/components/schemas/Entity-Documents" }, "sourceId": { "type": "string", "description": "The source from which specific information was sourced. This is a link to an informationSource object in the informationSources map.", "readOnly": true } } }, "Individual-Name": { "type": "object", "required": [ "familyName" ], "x-examples": { "Example 1": { "givenName": "John", "middleName": "Jacob", "familyName": "Smith" } }, "properties": { "nameId": { "type": "string", "example": "87654321-4321-4321-4321-210987654321", "description": "Include the nameId of an existing name for this individual to modify it", "readOnly": true }, "language": { "type": "string", "example": "eng", "description": "The ISO-639-3 standard code that best represents the language and character set of the individual's name", "default": "eng" }, "givenName": { "type": "string", "example": "John", "description": "First name or given name" }, "middleName": { "type": "string", "example": "R", "description": "Middle name(s) or middle initial(s)" }, "familyName": { "type": "string", "example": "Doe", "description": "Last name, family name, or surname." }, "otherName": { "type": "string", "example": null, "description": "Another name that this person may be known as, e.g., \"Bob\" as an alternative to \"Robert\"." }, "prefix": { "type": "string", "example": "Dr.", "description": "Letters or words that come before an individual's full name (e.g., title or honorific)." }, "suffix": { "type": "string", "example": "Jr.", "description": "Letters or words that come after an individual's full name (e.g., generational suffix)." }, "sourceId": { "type": "string", "example": "87654321-4321-4321-4321-210987654322", "description": "The source from where a specific information was sourced from. This is a link to an informationSource object in the informationSources map", "readOnly": true }, "displayName": { "type": "string", "example": "John Doe", "description": "Long format of the individual's full name, including any prefix, suffix, middle, or other names. Best used when the proper structure of the individual's name is unknown." } } }, "Individual-Name-Alternate": { "type": "object", "required": [ "familyName" ], "x-examples": { "Example 1": { "givenName": "John", "middleName": "Jacob", "familyName": "Smith" } }, "properties": { "nameId": { "type": "string", "example": "87654321-4321-4321-4321-210987654321", "description": "Include the nameId of an existing name for this individual to modify it." }, "language": { "type": "string", "example": "eng", "description": "The ISO-639-3 standard code that best represents the language and character set of the individual's name.", "default": "eng" }, "givenName": { "type": "string", "example": "John", "description": "First name or given name." }, "middleName": { "type": "string", "example": "R", "description": "Middle name(s) or middle initial(s)." }, "familyName": { "type": "string", "example": "Doe", "description": "Last name, family name, or surname." }, "otherName": { "type": "string", "example": null, "description": "Other names to be stored with the entity." }, "prefix": { "type": "string", "example": "Dr.", "description": "Element or series of letters that precede the individual's full name (e.g., title or honorific)." }, "suffix": { "type": "string", "example": "Jr.", "description": "Element or series of letters that follow the individual's full name (e.g., generational suffix)." }, "sourceId": { "type": "string", "example": "87654321-4321-4321-4321-210987654322", "description": "The source from which specific information was sourced. This is a link to an informationSource object in the informationSources map.", "readOnly": true }, "displayName": { "type": "string", "example": "John Doe", "description": "Long format of the individual's full name, including any prefix, suffix, middle, or other names. Best used when the proper structure of the individual's name is unknown." }, "type": { "type": "string", "example": "OTHER", "enum": [ "OTHER", "ALIAS", "PREVIOUS" ], "description": "Classification of the individual's name in relation to any of their alternative names." } } }, "Date-Of-Birth": { "type": "object", "allOf": [ { "type": "object", "properties": { "dateOfBirthId": { "type": "string", "description": "As dates of birth are added to an entity, they are assigned a unique identifier to assist with modification and reference.\nTo modify a date of birth, include the dateOfBirthId in an update request for the individual.", "readOnly": true }, "sourceId": { "type": "string", "description": "The source from which specific information was sourced. This is a link to an informationSource object in the informationSources map.", "readOnly": true } } }, { "$ref": "#/components/schemas/Date" } ] }, "Date-Of-Birth-Alternate": { "type": "object", "allOf": [ { "type": "object", "properties": { "dateOfBirthId": { "type": "string", "description": "As dates of birth are added to an entity, they are assigned a unique identifier to assist with modification and reference.\nTo modify a date of birth, include the dateOfBirthId in an update request for the individual." }, "sourceId": { "type": "string", "description": "The source from which specific information was sourced. This is a link to an informationSource object in the informationSources map.", "readOnly": true } } }, { "$ref": "#/components/schemas/Date" } ] }, "GenderEnum": { "type": "string", "enum": [ "MALE", "FEMALE", "NON_BINARY", "OTHER", "UNSPECIFIED" ] }, "Gender": { "type": "object", "properties": { "genderId": { "type": "string", "readOnly": true, "deprecated": true }, "gender": { "$ref": "#/components/schemas/GenderEnum" }, "sourceId": { "type": "string", "readOnly": true, "description": "The source from which specific information was sourced. This is a link to an informationSource object in the informationSources map." } } }, "Address-Place-Of-Birth": { "type": "object", "required": [ "country" ], "description": "The country or address where the individual was born.", "properties": { "addressId": { "type": "string", "description": "As addresses are added to an entity, they are assigned an ID to assist with tracking.", "example": "6ad15f64-5717-4562-b3fc-2c963f66abf9", "readOnly": true }, "sourceId": { "type": "string", "readOnly": true, "description": "The source from which specific information was sourced. This is a link to an informationSource object in the informationSources map.", "example": "1da65f64-5717-4562-b3fc-2c963f669fba" }, "longForm": { "type": "string", "description": "In some cases, the address will need to be supplied in \"long form\", such as when it is determined from a document scan, or is unparsable in some way.\nThe service will attempt to convert it to its constituent parts where possible.\nWARNING: Use of longForm is not guaranteed to produce perfect results, due to the variety of potential formats. You have been warned.\nFailure to break down or disambiguate the address will result in an error.", "example": "525 Kent Dr, Harlem NY 10037, USA" }, "unstructuredLongForm": { "type": "string", "readOnly": true, "description": "Raw, unformatted address as provided by the source. Not normalized or standardized.", "example": "3A/525 KENT DRIVE HARLEM NEW YORK 10036 USA" }, "unitNumber": { "type": "string", "description": "Unit/Apartment/Flat/Suite/etc. number", "example": "3A" }, "buildingName": { "type": "string", "description": "The name of the building, apartment block, condominium, etc.", "example": "EQ Tower" }, "streetName": { "type": "string", "description": "The name of the street.\nThis field should ideally contain only the street name, without the street number or street type. In some cases, especially when auto-populated by external services (e.g., Google), it may include additional address components.\nFor best results, keep the street name separate from the street number and street type. See https://docs.frankieone.com/docs/working-with-addresses for more details.", "example": "Kent" }, "streetNumber": { "type": "string", "description": "The number assigned to the property on the street. Typically a number, but can also be alphanumeric (e.g., 3A).", "example": "525" }, "streetType": { "type": "string", "description": "The street type, such as Road, Street, Avenue, Circuit, etc.", "example": "Dr" }, "neighborhood": { "type": "string", "description": "The neighborhood or suburb within the town or city. Use this only if you require both a suburb and a locality/town/city; otherwise, use the \"locality\" parameter.", "example": "Harlem" }, "locality": { "type": "string", "description": "The locality, borough, town, village, or city.", "example": "Manhattan" }, "district": { "type": "string", "description": "The district, region, county, province, or cantonment.", "example": "New York County" }, "subdivision": { "type": "string", "description": "The ISO 3166-2 alphanumeric code of the administrative area/state/sub-division, minus the country code, e.g., VIC (Victoria) or TX (Texas).", "example": "NY" }, "country": { "type": "string", "description": "The ISO 3166-1 alphanumeric three-letter code of the country, e.g., AUS, USA, IDR, KOR, etc.\nFor more details, refer to: https://en.wikipedia.org/wiki/ISO_3166-1", "example": "USA" }, "postalCode": { "type": "string", "description": "The postal, zip, or pin code of the address.", "example": "10037" } } }, "Consent": { "type": "object", "properties": { "type": { "type": "string", "description": "The type of consent given by an entity", "example": "UNDER18", "enum": [ "GENERAL", "DOCS", "CREDITHEADER", "UNDER18", "PAYROLL", "INSURANCE", "SUPERANNUATION" ] }, "schemaVersion": { "type": "integer", "readOnly": true }, "sourceId": { "type": "string", "description": "The source from which specific information was obtained. This is a link to an informationSource object in the informationSources map.", "example": "93da15f64-5717-4562-b3fc-2c963f6663fe", "readOnly": true } } }, "Base-Individual": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/Entity" }, { "type": "object", "properties": { "name": { "$ref": "#/components/schemas/Individual-Name" }, "alternateNames": { "type": "array", "items": { "$ref": "#/components/schemas/Individual-Name-Alternate" }, "description": "Other names that are legally registered or otherwise recorded, differing from the individual's primary English name (e.g., \"李小龍\"). Non-English names may be created as a conversion from the original format to complete the verification process." }, "dateOfBirth": { "$ref": "#/components/schemas/Date-Of-Birth" }, "alternateDatesOfBirth": { "type": "array", "items": { "$ref": "#/components/schemas/Date-Of-Birth-Alternate" }, "description": "Other dates that are registered or otherwise recorded, differing from the individual's primary Gregorian date of birth (e.g., Islamic dates like \"29 Jumada Al-Akhirah 1445\"). Non-Gregorian date formats will be maintained; however, additional Gregorian dates of birth may be created as a conversion from the original format to complete the verification process." }, "gender": { "$ref": "#/components/schemas/Gender" }, "placeOfBirth": { "$ref": "#/components/schemas/Address-Place-Of-Birth", "description": "The address where the individual was born." }, "nationality": { "type": "string", "description": "ISO-3166-1 alpha-3 code of the individual's legal membership or affiliation with a nation.", "example": "AUS" }, "consents": { "type": "array", "items": { "$ref": "#/components/schemas/Consent" }, "description": "List of consent types that have been given for this entity." } } } ] }, "Information-Source": { "type": "object", "properties": { "sourceId": { "type": "string", "description": "As sources are added to an entity, they're assigned a unique identifier to assist with modification and reference.\nTo modify a source, include the sourceId in an update request call." }, "type": { "description": "The type of source information e.g. \"ID number\"", "type": "string", "example": "ID number", "deprecated": true }, "source": { "description": "The source of information like document number, website, etc.", "type": "string", "example": "Client" }, "description": { "description": "The type or details of the source of information.", "type": "string", "example": "" }, "provider": { "description": "The provider of the information, e.g., Equifax.", "type": "string", "example": "equifax-au" }, "providerReference": { "description": "Reference linking to the provider for this information.", "type": "string", "example": "" }, "createdAt": { "type": "string", "format": "date-time", "description": "The date and time this information was first created in the system.", "example": "2024-01-15T02:18:11.365Z" }, "requestedAt": { "type": "string", "format": "date-time", "description": "The date and time FrankieOne requested this information from the external source provider.", "example": "2024-01-15T02:18:11.365Z" }, "generatedAt": { "type": "string", "format": "date-time", "description": "The date and time FrankieOne generated this information, if applicable.", "example": "2024-01-15T02:18:11.365Z" }, "retrievedAt": { "type": "string", "format": "date-time", "description": "The date and time FrankieOne retrieved this information from the external source provider.", "example": "2024-01-15T02:18:11.365Z" }, "updatedAt": { "type": "string", "format": "date-time", "description": "The date and time this information was last updated in the system.", "example": "2024-01-15T02:18:11.365Z" }, "isAuthoritative": { "type": "boolean", "description": "Indicates whether this information is from an authoritative source, e.g., a company registry.", "example": false }, "isManual": { "description": "Indicates whether this information was added manually by the client rather than by a system or source provider.", "type": "boolean", "example": true, "deprecated": true } }, "readOnly": true }, "Process-Result-ID": { "type": "string", "description": "When a process result object is first created, it is assigned an ID. When updating the process result object, set the processResultID to the ID of the process result object you are referring to.", "readOnly": true }, "Relationship-Origin": { "type": "object", "description": "Details about the process that originated the relationship.", "properties": { "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "entityType": { "$ref": "#/components/schemas/Entity-Type" }, "processResultId": { "$ref": "#/components/schemas/Process-Result-ID" }, "createdAt": { "type": "string", "format": "date-time", "readOnly": true, "description": "The date and time when the relationship origin record was created." } } }, "Relationship": { "type": "object", "properties": { "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "entityType": { "$ref": "#/components/schemas/Entity-Type" }, "origin": { "$ref": "#/components/schemas/Relationship-Origin" } } }, "Individual-Relationships": { "type": "object", "readOnly": true, "properties": { "duplicates": { "type": "array", "description": "List of duplicates for this individual. To determine which entity was marked as a duplicate,\nrefer to the entity state of the relevant duplicate or reconcile using the process results.\n", "items": { "$ref": "#/components/schemas/Relationship" } } } }, "Individual": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/Base-Individual" }, { "type": "object", "properties": { "informationSources": { "type": "object", "description": "Map of information sources used across the response.", "additionalProperties": { "$ref": "#/components/schemas/Information-Source" }, "readOnly": true }, "relationships": { "$ref": "#/components/schemas/Individual-Relationships" } } } ] }, "Entity-ID-Writeable": { "type": "string", "description": "Entities are assigned a FrankieOne auto-generated UUID to ensure global uniqueness, represented as entityId. The entityId allows for precise modification when required.\nTo modify an entity, set the entityId of the entity you wish to update in an update request.", "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6" }, "Entity-Type-Writeable": { "type": "string", "enum": [ "INDIVIDUAL", "ORGANIZATION", "UNKNOWN" ], "description": "The type of entity within Frankie. This can be \"INDIVIDUAL\", \"ORGANIZATION\", or \"UNKNOWN\"." }, "Comment": { "type": "object", "properties": { "commentId": { "type": "string", "description": "Unique identifier for the comment", "format": "ulid", "example": "01K3G4CCQ3DY3B1413S19M9QW1", "readOnly": true }, "text": { "type": "string", "description": "The text content of the comment.", "example": "Update after speaking to customer over the phone directly." }, "entityId": { "$ref": "#/components/schemas/Entity-ID-Writeable" }, "entityType": { "$ref": "#/components/schemas/Entity-Type-Writeable" } } }, "individuals_create": { "type": "object", "allOf": [ { "type": "object", "properties": { "individual": { "$ref": "#/components/schemas/Individual" }, "serviceName": { "type": "string" }, "workflowName": { "type": "string" }, "comment": { "$ref": "#/components/schemas/Comment" } } } ] }, "Risk-Assessment-ID": { "type": "string", "description": "Unique identifier of the risk assessment.", "readOnly": true }, "Workflow-Execution-StateEnum": { "type": "string", "description": "Current state of the workflow execution. Possible values:\n - COMPLETED: The workflow execution has completed successfully.\n - CANCELED: The workflow execution was canceled.\n - TERMINATED: The workflow execution was terminated before completion.\n - ERROR: The workflow execution encountered an error.\n - TIMEOUT: The workflow execution timed out.\n - IN_PROGRESS: The workflow execution is currently in progress.\n", "enum": [ "COMPLETED", "CANCELED", "TERMINATED", "ERROR", "TIMEOUT", "IN_PROGRESS" ] }, "Workflow-Execution-ResultEnum": { "type": "string", "description": "Outcome of this workflow execution. Possible results:\n - UNCHECKED: The workflow has not yet been run and has no result.\n - IN_PROGRESS: The workflow is currently running and awaiting completion.\n - REVIEW: The workflow produced results that require review. Check the risks and step results for more details.\n - PASS: The workflow successfully completed with a PASS recommendation.\n - FAIL: The workflow finished with a FAIL recommendation.\n - COMPLETE: The workflow has finished and the results are considered complete. PASS/FAIL is not required.\n - INCOMPLETE: The workflow has finished and the results are considered incomplete. PASS/FAIL is not required.\n - NEEDS_APPROVAL: The workflow requires an approval process. Once approved, re-run the workflow.\n - APPROVED: The workflow was approved, typically by an external source such as a human.\n - REJECTED: The workflow was rejected, typically by an external source such as a human.\n - BLOCKED: The workflow was blocked from completing. Manual review is required.\n - CLEAR: The workflow completed with no issues raised. Often used for ongoing monitoring workflows.\n - URGENT: The workflow completed with matters requiring urgent review. Often used for ongoing monitoring workflows that return sanctions or similarly critical items.\n - MONITOR: The workflow completed and further monitoring is required. Should be manually reviewed.\n", "default": "UNCHECKED", "enum": [ "UNCHECKED", "IN_PROGRESS", "REVIEW", "PASS", "FAIL", "COMPLETE", "INCOMPLETE", "NEEDS_APPROVAL", "APPROVED", "REJECTED", "BLOCKED", "CLEAR", "URGENT", "MONITOR" ] }, "Profile-ID": { "type": "string", "description": "Unique identifier of the Service Profile." }, "Risk-Level": { "type": "string", "enum": [ "UNKNOWN", "LOW", "MEDIUM", "HIGH", "UNACCEPTABLE" ], "description": "The risk level classification:\n - UNKNOWN: Risk level is not determined.\n - LOW: Low risk.\n - MEDIUM: Medium risk.\n - HIGH: High risk.\n - UNACCEPTABLE: Risk level is unacceptable.\n" }, "Risk-Factor-ID": { "type": "string", "description": "Unique identifier of the risk factor.", "readOnly": true }, "Risk-Factor-Status": { "type": "string", "enum": [ "VALID", "STALE", "OVERRIDDEN", "DISCARDED" ], "description": "The current status of the risk factor:\n - VALID: The risk factor is applicable to the entity.\n - STALE: The risk factor is no longer applicable to the entity. If this status is returned, it means that at the time of risk assessment, the risk factor was valid.\n - OVERRIDDEN: The risk factor was manually overridden. If present, manualOverrideScore was used for risk score calculation in the risk assessment.\n - DISCARDED: The risk factor was added during workflow execution but was discarded at a later stage in the same workflow. This factor was not used in the final risk assessment.\n", "default": "VALID" }, "Risk-Factor": { "type": "object", "properties": { "riskFactorId": { "$ref": "#/components/schemas/Risk-Factor-ID" }, "factor": { "type": "string", "description": "Name of the Frankie risk factor.", "readOnly": true }, "value": { "type": "string", "description": "Value assigned to the risk factor.", "readOnly": true }, "score": { "type": "number", "description": "Risk score assigned to the factor (based on customer configuration).", "readOnly": true }, "description": { "type": "string", "description": "Description of the risk factor.", "readOnly": true }, "workflowExecutionId": { "type": "string", "description": "Unique identifier of the workflow execution in which the risk factor was generated.", "readOnly": true }, "stepResultId": { "type": "string", "description": "Unique identifier of the step result if the factor originated from a step.", "readOnly": true }, "manualOverrideScore": { "type": "number", "description": "If present, this score overrides all others and is used as the final score in risk assessment." }, "status": { "$ref": "#/components/schemas/Risk-Factor-Status" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when the risk factor was created.", "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp when the risk factor was last updated.", "readOnly": true }, "updatedBy": { "type": "string", "description": "Identifier of the user or system that updated this risk factor (e.g., System:; or User:).", "readOnly": true }, "updatedRequestId": { "type": "string", "description": "Identifier of the request that updated this risk factor.", "readOnly": true }, "createdServiceProfileId": { "type": "string", "format": "uuid", "description": "Identifier of the service profile associated with this risk factor when it was created." }, "createdWorkflowExecutionId": { "type": "string", "description": "Identifier of the workflow execution that originally created the risk factor." }, "createdStepResultId": { "type": "string", "description": "Identifier of the step result that originally created the risk factor." } } }, "Risk-Assessment": { "type": "object", "required": [ "entityId", "serviceProfileId", "workflowId", "workflowExecutionId" ], "properties": { "serviceProfileId": { "$ref": "#/components/schemas/Profile-ID" }, "riskAssessmentId": { "$ref": "#/components/schemas/Risk-Assessment-ID" }, "workflowId": { "type": "string", "description": "Unique identifier of the workflow." }, "workflowExecutionId": { "type": "string", "description": "Unique identifier of the workflow execution." }, "entityId": { "type": "string", "description": "Unique identifier of the entity being assessed." }, "schemaVersion": { "type": "integer", "description": "Version of the risk assessment schema." }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when the risk assessment was created." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Timestamp when the risk assessment was last updated." }, "updatedBy": { "type": "string", "description": "Identifier of the user or system that updated this assessment." }, "updatedRequestId": { "type": "string", "description": "Identifier of the request that updated this assessment." }, "workflowRiskScore": { "type": "number", "description": "Risk score calculated for the workflow." }, "workflowRiskLevel": { "$ref": "#/components/schemas/Risk-Level", "description": "Risk level of the workflow execution associated with this risk assessment." }, "riskScore": { "type": "number", "description": "Risk score calculated for the entity." }, "riskLevel": { "$ref": "#/components/schemas/Risk-Level", "description": "Risk level of the entity." }, "isOutdated": { "type": "boolean", "description": "Indicates whether the assessment is out of date, either due to manual updates or changes to risk factors that were assessed.", "default": false }, "riskFactors": { "type": "array", "items": { "$ref": "#/components/schemas/Risk-Factor" }, "readOnly": true, "description": "List of risk factors considered in this assessment." } } }, "Workflow-Execution-Steps": { "type": "object", "properties": { "order": { "type": "array", "items": { "type": "string" } }, "passed": { "type": "array", "items": { "type": "string" } }, "failed": { "type": "array", "items": { "type": "string" } }, "incomplete": { "type": "array", "items": { "type": "string" } }, "notApplicable": { "type": "array", "items": { "type": "string" } } } }, "Issue-ID": { "type": "string", "description": "Unique identifier for the risk issue.", "readOnly": true }, "Workflow-Issue-Category": { "type": "string", "enum": [ "AML", "BAD_DATA", "BIOMETRICS", "BLOCKLISTED", "DECEASED", "DEVICE", "DOCUMENT", "DUPLICATE", "EXPIRY", "FRAUD", "IDV", "INFORMATIONAL", "KYC", "SYSTEM", "VERIFY", "VISA", "WATCHLIST", "ACTIVITY" ], "description": "General category of issue found:\n - AML: Anti-Money Laundering issues.\n - BAD_DATA: Indicates that the data provided is invalid or incorrect.\n - BIOMETRICS: Issues found during a biometrics check.\n - BLOCKLISTED: The entity has a hit on a blocklist.\n - DECEASED: Indicates that the entity is deceased.\n - DEVICE: Issues found during device checks.\n - DOCUMENT: Issues found during a document check.\n - DUPLICATE: Indicates that the entity has duplicates.\n - EXPIRY: Indicates that a process or document for the entity has expired.\n - FRAUD: Possible fraud detected.\n - IDV: Issues found during an Identity Verification (IDV) process.\n - INFORMATIONAL: Informational messages that are not issues but are required to be returned.\n - KYC: Issues found during a Know Your Customer (KYC) process.\n - SYSTEM: System-level issues.\n - VERIFY: Issues found during a verification process.\n - VISA: Issues found during a visa check.\n - WATCHLIST: Issues found during a watchlist check.\n - ACTIVITY: Issues found during an activity process.\n - SUPPORTING_DOC: Issues found during a supporting document check." }, "Workflow-Issue-Type": { "type": "string", "enum": [ "AML_ISSUE", "BAD_DATA_ADDRESS", "BAD_DATA_DOB", "BAD_DATA_EMAIL", "BAD_DATA_ID", "BAD_DATA_MOBILE", "BAD_DATA_DEVICE", "BAD_DATA_IP_ADDRESS", "BAD_DATA_EMAIL_ADDRESS", "BAD_DATA_NAME", "BLOCKED", "COMPROMISED_DOCUMENT", "CREDIT_HEADER", "DATA_COMPARISON", "DATA_CONSISTENCY", "DATA_VALIDATION", "DENY_LIST", "DECEASED", "DEVICE_FRAUD_MATCH", "DEVICE_INVALID", "DOCUMENT_COMPARISON", "DUPLICATE", "FRAUD_CHECK", "FRAUD_DEVICE", "FRAUD_IP_ADDRESS", "FRAUD_EMAIL_ADDRESS", "FRAUD_PHONE_NUMBER", "FRAUD_INCOMPLETE", "FRAUD_ISSUE", "FRAUD_LIST", "IMAGE_INTEGRITY", "INTERNAL_MATCH", "LIVENESS_DETECTION", "MATCHED_EXTERNAL", "MATCHED_INTERNAL", "MATCHED_SHARED", "MEDIA", "NOT_FOUND", "OCR", "PARTIAL", "PEP", "REQUIRES_AML", "REQUIRES_IDV", "REQUIRES_KYC", "REQUIRES_VISA", "SANCTION", "SERVICE_ERROR", "SERVICE_TIMEOUT", "VISA_FAILED", "VISUAL_AUTHENTICITY", "WATCHLIST", "ACTIVITY_AML", "ACTIVITY_FRAUD", "ACTIVITY_EVENT", "ACTIVITY_DEVICE", "DOCUMENT_MISSING", "DOCUMENTS_NOT_APPROVED" ], "description": "For each category, this provides the specific issue type.\n\nAML:\n - PEP: The entity has Politically Exposed Person (PEP) hits.\n - SANCTION: The entity has sanction hits.\n - MEDIA: The entity has adverse media hits.\n - WATCHLIST: The entity has watchlist hits.\n\nBAD_DATA:\n - BAD_DATA_NAME: Name is required for verification but is missing or unusable due to data quality issues.\n - BAD_DATA_DOB: Date of Birth is required for verification but is missing or unusable due to data quality issues.\n - BAD_DATA_ADDRESS: Address is required for verification but is missing or unusable due to data quality issues.\n - BAD_DATA_ID: ID is required for verification but is missing or unusable due to data quality issues.\n - BAD_DATA_EMAIL: Email is required for verification but is missing or unusable due to data quality issues.\n - BAD_DATA_MOBILE: Mobile is required for verification but is missing or unusable due to data quality issues.\n - BAD_DATA_DEVICE: Device is required for verification but is missing or unusable due to data quality issues.\n - BAD_DATA_IP_ADDRESS: IP Address is required for verification but is missing or unusable due to data quality issues.\n - BAD_DATA_EMAIL_ADDRESS: Email Address is required for verification but is missing or unusable due to data quality issues.\n\nBLOCKLISTED:\n - MATCHED_INTERNAL: The entity matched an internal blocklist.\n - MATCHED_SHARED: The entity matched a shared blocklist.\n - MATCHED_EXTERNAL: The entity matched an external blocklist.\n\nDECEASED:\n - DECEASED: The person whose data is being verified is deceased.\n\nDEVICE:\n - DEVICE_FRAUD_MATCH: Fraud detected on the device.\n - DEVICE_INVALID: The device is invalid.\n\nDUPLICATE:\n - DUPLICATE: The entity is a duplicate of another entity.\n\nEXPIRY:\n - REQUIRES_KYC: KYC process needs to be re-initiated.\n - REQUIRES_IDV: IDV process needs to be re-initiated.\n - REQUIRES_AML: AML process needs to be re-initiated.\n - REQUIRES_VISA: Visa process needs to be re-initiated.\n\nFRAUD:\n - FRAUD_LIST: The entity is on a fraud list.\n - FRAUD_CHECK: Fraud detected during checks.\n - FRAUD_DEVICE: Device fraud detected.\n - FRAUD_IP_ADDRESS: IP address fraud detected.\n - FRAUD_EMAIL_ADDRESS: Email address fraud detected.\n - FRAUD_PHONE_NUMBER: Phone number fraud detected.\n\nIDV:\n - DATA_COMPARISON: Data comparison issue.\n - DATA_VALIDATION: Data validation issue.\n - DATA_CONSISTENCY: Data consistency issue.\n - VISUAL_AUTHENTICITY: Visual authenticity issue.\n - IMAGE_INTEGRITY: Image integrity issue.\n - COMPROMISED_DOCUMENT: Document is compromised.\n - LIVENESS_DETECTION: Liveness detection failed.\n - DOCUMENT_COMPARISON: Document comparison issue.\n\nINFORMATIONAL:\n - CREDIT_HEADER: Credit header information was returned as part of a credit agency check.\n\nKYC:\n - PARTIAL: The KYC check was only partially successful.\n - NOT_FOUND: No match was found for the given data.\n\nOCR:\n - OCR: The OCR data does not match what was entered by the user.\n\nSYSTEM:\n - SERVICE_TIMEOUT: All providers have timed out.\n - SERVICE_ERROR: All providers have returned an error or an internal error has occurred.\n\nVISA:\n - DENY_LIST: The entity matched a visa deny list.\n - VISA_FAILED: Visa check failed from the provider.\n\nWATCHLIST:\n - INTERNAL_MATCH: The entity matched an internal watchlist.\n\nACTIVITY:\n - ACTIVITY_AML: The entity has had an activity that is flagged for AML\n - ACTIVITY_FRAUD: The entity has had an activity that is flagged for fraud\n - ACTIVITY_EVENT: The entity has had an activity that is deemed as suspicious, but not exactly classified as either fraud or AML\n\nSUPPORTING_DOC:\n - DOCUMENT_MISSING: The document is not provided\n - DOCUMENTS_NOT_APPROVED: The document is not approved" }, "Workflow-Issue-Severity": { "type": "string", "enum": [ "INFO", "REVIEW", "BLOCK", "WARNING", "CRITICAL", "ERROR" ], "description": "The severity level of the issue. Possible values:\n - INFO: Informational only.\n - REVIEW: Requires review.\n - BLOCK: Blocks further processing.\n - WARNING: Warning, but not blocking.\n - CRITICAL: Critical issue.\n - ERROR: Error encountered.\n" }, "Workflow-Issue": { "type": "object", "required": [ "category", "issue", "severity" ], "properties": { "issueId": { "allOf": [ { "$ref": "#/components/schemas/Issue-ID" } ], "readOnly": true }, "category": { "$ref": "#/components/schemas/Workflow-Issue-Category" }, "issue": { "$ref": "#/components/schemas/Workflow-Issue-Type" }, "workflowExecutionId": { "type": "string", "description": "Identifier of the workflow execution in which this issue was generated." }, "stepResultId": { "type": "string", "description": "Identifier of the step from which this issue originated, if applicable." }, "isCleared": { "type": "boolean", "description": "Indicates if this specific issue has been manually flagged as addressed." }, "createdBy": { "type": "string", "description": "User or system that created this issue.", "readOnly": true }, "createdAt": { "type": "string", "format": "date-time", "description": "The timestamp when the issue was created.", "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "description": "The timestamp when the issue was last updated.", "readOnly": true }, "updatedBy": { "type": "string", "description": "User or system that last updated this issue (e.g., System: or User:).", "readOnly": true }, "updatedRequestId": { "type": "string", "description": "Identifier of the request that updated this issue.", "readOnly": true }, "severity": { "$ref": "#/components/schemas/Workflow-Issue-Severity" } } }, "Workflow-LifecyclePhaseEnum": { "type": "string", "description": "Specifies the lifecycle phase of the customer in which this workflow is executed:\n - ONBOARDING: Workflow is in the onboarding stage.\n - MONITORING: Workflow is in the monitoring stage.\n - REFRESH: Workflow is in the refresh stage.\n - OTHER: Workflow is in another stage.\n", "enum": [ "ONBOARDING", "MONITORING", "REFRESH", "OTHER" ], "default": "OTHER" }, "Subscription-Type": { "type": "string", "description": "Specifies the type of service profile subscription. This value determines the category of the service profile subscription.", "enum": [ "AML", "ACTIVITY" ] }, "Monitoring-Type": { "type": "string", "description": "The type of workflow subscription. This determines which types are subscribing to a workflow.", "allOf": [ { "$ref": "#/components/schemas/Subscription-Type" } ] }, "Workflow-Execution-Summary": { "type": "object", "description": "Summary of the workflow execution.\n\n### Using and interpreting the status field\n\nThe result of the workflow is represented in the **status** field. Users can manually override this status with a different value to change the outcome of the workflow.\nWhen the **status** field is overridden, the **statusOverrideRequestId** field is populated with the request ID of the override request.\nIf the **statusOverrideRequestId** field is present and non-empty, it indicates that the status has been manually changed.\n\n 1. Initial State:\n - When a workflow completes, its result is set in the **status** field.\n 2. Status Override:\n - Users may override the **status** field with a different value (e.g., change FAIL to PASS).\n 3. Identifying Overrides:\n - To determine if a status has been overridden, check for the presence of the **statusOverrideRequestId** field.\n - If present, it indicates that the status has been manually changed.\n 4. Additional Override Information:\n - **statusOverrideBy**: Identifies the user who performed the override (may not always be present).\n - **statusOverrideAt**: Timestamp of when the override occurred.\n 5. Interpretation:\n - If **statusOverrideRequestId** is empty or absent, no override has occurred.\n - If **statusOverrideRequestId** is present, then a manual override has occurred.\n", "properties": { "schemaVersion": { "type": "integer", "description": "Version of the schema used for this workflow execution." }, "workflowName": { "type": "string", "description": "Name of the workflow." }, "workflowExecutionId": { "type": "string", "description": "Unique identifier for the workflow execution." }, "workflowExecutionState": { "$ref": "#/components/schemas/Workflow-Execution-StateEnum", "description": "Current state of the workflow execution." }, "status": { "$ref": "#/components/schemas/Workflow-Execution-ResultEnum", "description": "Current status/result of the workflow execution." }, "statusOverrideAt": { "type": "string", "format": "date-time", "description": "Timestamp when the status override occurred." }, "statusOverrideRequestId": { "type": "string", "description": "Request ID associated with the status override." }, "statusOverrideBy": { "type": "string", "description": "Identifier of the user who performed the status override." }, "riskAssessment": { "$ref": "#/components/schemas/Risk-Assessment", "description": "Risk assessment for the workflow execution." }, "isManual": { "type": "boolean", "description": "Indicates if the workflow was executed manually." }, "steps": { "$ref": "#/components/schemas/Workflow-Execution-Steps", "description": "Steps executed as part of the workflow." }, "startedAt": { "type": "string", "format": "date-time", "description": "The timestamp when the workflow execution started." }, "endedAt": { "type": "string", "format": "date-time", "description": "The timestamp when the workflow execution ended." }, "issues": { "type": "array", "description": "List of issues encountered during the workflow execution.", "items": { "$ref": "#/components/schemas/Workflow-Issue" } }, "lifecyclePhase": { "$ref": "#/components/schemas/Workflow-LifecyclePhaseEnum", "description": "Current lifecycle phase of the workflow." }, "monitoringTypes": { "description": "The types of monitoring that subscribe to the workflow.\n", "type": "array", "items": { "$ref": "#/components/schemas/Monitoring-Type" } } } }, "Service-Profile-Subscription": { "type": "object", "properties": { "serviceProfileId": { "type": "string", "description": "The unique identifier of the service profile." }, "status": { "type": "string", "enum": [ "ENABLED", "DISABLED" ], "description": "Indicates whether the subscription is currently active and operational." }, "type": { "$ref": "#/components/schemas/Subscription-Type" }, "workflowName": { "type": "string", "description": "The name of the monitoring workflow executed when a monitoring alert occurs." }, "workflowId": { "type": "string", "description": "The unique identifier of the monitoring workflow." }, "enabledAt": { "type": "string", "format": "date-time", "description": "The date and time when the subscription was most recently enabled." }, "enabledRequestId": { "type": "string", "description": "The request identifier for the most recent enable action." }, "enabledBy": { "type": "string", "description": "The user who most recently enabled the subscription." }, "disabledAt": { "type": "string", "format": "date-time", "description": "The date and time when the subscription was most recently disabled." }, "disabledRequestId": { "type": "string", "description": "The request identifier for the most recent disable action." }, "disabledBy": { "type": "string", "description": "The user who most recently disabled the subscription." } } }, "Service-Profile-Base": { "type": "object", "properties": { "serviceProfileId": { "type": "string", "description": "The unique identifier for the service profile.", "example": "55fc5d54-46f7-49c8-bf78-e07ec79c42fd", "readOnly": true }, "latestRiskAssessmentId": { "$ref": "#/components/schemas/Risk-Assessment-ID", "description": "The ID of the latest risk assessment in the most recent workflow with a valid assessment.\nOmitted if no valid risk assessment exists." }, "latestWorkflowExecutionId": { "type": "string", "description": "The ID of the most recent workflow execution.\nOmitted if no workflows exist." }, "entityId": { "type": "string", "readOnly": true }, "entityName": { "type": "string", "readOnly": true }, "entityType": { "type": "string", "readOnly": true }, "organizationType": { "type": "string", "example": "SOLE TRADER", "readOnly": true }, "country": { "type": "string", "description": "The ISO 3166 alpha-3 code representing the individual's country of residence or the business's country of registration.", "example": "AUS", "readOnly": true }, "schemaVersion": { "type": "integer", "description": "The version number of the schema.", "example": 2, "readOnly": true }, "createdAt": { "type": "string", "format": "date-time", "description": "The UTC date and time when this service profile was created.", "example": "2024-01-15T02:18:11.365Z", "readOnly": true }, "createdRequestId": { "type": "string", "description": "The unique ULID identifier of the request that created this service profile.", "example": "01HMR2ERSKCYAVXKS1FKSRT2T4", "readOnly": true }, "createdBy": { "type": "string", "description": "The user or client that created this profile.", "example": "Ryan Reynolds", "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "description": "The UTC date and time when this service profile was last updated, if applicable.", "example": "2024-01-15T02:18:11.365Z", "readOnly": true }, "updatedBy": { "type": "string", "description": "The user or client that last updated this profile.", "example": "Ryan Reynolds", "readOnly": true }, "updatedRequestId": { "type": "string", "description": "The unique ULID identifier of the request that last updated this service profile.", "example": "01HMR2ERSKCYAVXKS1FKSRT2T4", "readOnly": true }, "assignee": { "type": "string", "description": "The name of the officer assigned to approve this profile.", "example": "Ryan Gosling" }, "reviewer": { "type": "string", "description": "The name of the officer assigned to review this profile.", "example": "Ryan Trahan" }, "currentWorkflowId": { "type": "string", "readOnly": true }, "currentWorkflowName": { "type": "string", "description": "The name of the current workflow, if applicable." }, "workflowSummaries": { "type": "array", "items": { "$ref": "#/components/schemas/Workflow-Execution-Summary" }, "readOnly": true }, "serviceName": { "type": "string", "description": "The name of the service associated with this profile.", "readOnly": true }, "customerReference": { "type": "string", "readOnly": true, "description": "Customer-specific identifier(s)." }, "subscriptions": { "type": "array", "description": "The list of subscriptions associated with the service profile.\nA subscription determines if the service profile is subscribed to a particular ongoing process.", "items": { "$ref": "#/components/schemas/Service-Profile-Subscription" }, "readOnly": true } } }, "Service-Profile-State": { "type": "string", "description": "Current state of the Service Profile\n- INIT: Initial state when the profile is created.\n- AUTO: Automatically assigned state, typically after initial processing.\n- ACTIVE: The profile is active and in use.\n- ARCHIVED: The profile has been archived and is no longer active.\n- BLOCKLISTED: The profile is blocked from further actions.\n- INACTIVE: The profile is inactive, not currently in use.\n- DELETED: The profile has been deleted.\n- DUPLICATE: The profile is a duplicate of another existing profile.", "enum": [ "INIT", "AUTO", "ACTIVE", "ARCHIVED", "BLOCKLISTED", "INACTIVE", "DELETED", "DUPLICATE" ] }, "Service-Profile": { "allOf": [ { "$ref": "#/components/schemas/Service-Profile-Base" }, { "type": "object", "properties": { "state": { "$ref": "#/components/schemas/Service-Profile-State" } } } ] }, "Request-ID": { "type": "string", "example": "01HN9XHZN6MGXM9JXG50K59Q85", "description": "The unique request identifier for the API call made." }, "individuals_entity_response": { "type": "object", "required": [ "requestId" ], "properties": { "individual": { "$ref": "#/components/schemas/Individual" }, "serviceProfiles": { "type": "array", "items": { "$ref": "#/components/schemas/Service-Profile" } }, "requestId": { "$ref": "#/components/schemas/Request-ID" } } }, "Issue": { "type": "object", "properties": { "issue": { "type": "string", "description": "Description of the issue." }, "issueLocation": { "type": "string", "description": "The location or context where the issue was identified." }, "issueType": { "type": "string", "description": "The type or category of the issue." } } }, "Error-Base": { "type": "object", "properties": { "errorCode": { "type": "string" }, "errorMsg": { "type": "string" }, "details": { "type": "array", "items": { "$ref": "#/components/schemas/Issue" } } } }, "Error": { "type": "object", "x-examples": { "400": { "requestId": "0123456789ABCDEFGHIJKLMNOP", "errorCode": "API-0400", "errorMsg": "Parsing credentials from \"\" failed, because invalid.", "httpStatusCode": 400 }, "401": { "requestId": "0123456789ABCDEFGHIJKLMNOP", "errorCode": "API-0401", "errorMsg": "Unauthenticated due to invalid credentials.", "httpStatusCode": 401 }, "409": { "requestId": "0123456789ABCDEFGHIJKLMNOP", "errorCode": "API-0409", "errorMsg": "Conflict.", "httpStatusCode": 409 } }, "allOf": [ { "$ref": "#/components/schemas/Error-Base" }, { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" } } } ] }, "individuals_update": { "type": "object", "allOf": [ { "type": "object", "properties": { "individual": { "$ref": "#/components/schemas/Individual" }, "comment": { "$ref": "#/components/schemas/Comment" } } } ] }, "Workflow-Step-Type": { "type": "string", "enum": [ "BLOCKLIST", "DUPLICATE", "DECISION", "BRANCH", "MONITOR_TOGGLE", "OTHER", "KYC", "AML", "IDV", "START", "FINISH" ] }, "Workflow-Step": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the step (must be unique)", "example": "Run KYC" }, "description": { "type": "string", "description": "Description of the step", "example": "Run the KYC step" }, "version": { "type": "string", "description": "Version of the step", "example": "1.0.0" }, "type": { "$ref": "#/components/schemas/Workflow-Step-Type" }, "configuration": { "type": "object", "description": "Configuration for the step" }, "dependsOn": { "type": "array", "description": "List of step names that this step depends on", "items": { "type": "string" } } } }, "Workflow-Definition": { "type": "object", "description": "Workflow definition", "properties": { "definitionUpdatedAt": { "description": "The date and time the workflow was last updated", "type": "string", "format": "date-time", "example": "2023-01-15T02:18:11.365Z" }, "version": { "description": "The version of the workflow", "type": "string", "example": "v1" }, "steps": { "description": "The steps of the workflow", "type": "array", "items": { "$ref": "#/components/schemas/Workflow-Step" } } } }, "Workflow-Lookup": { "type": "object", "properties": { "serviceName": { "type": "string", "description": "Name of the service." }, "workflowId": { "type": "string", "description": "Unique identifier of the workflow." }, "workflowName": { "type": "string", "description": "Name of the workflow." }, "workflowDisplayName": { "type": "string", "description": "The display name for the workflow. This field is optional, when the value exists workflow name displayed in portal will be the value of this field." }, "type": { "type": "string", "description": "Type of the workflow." }, "lifecyclePhase": { "$ref": "#/components/schemas/Workflow-LifecyclePhaseEnum" }, "monitoringTypes": { "type": "array", "items": { "$ref": "#/components/schemas/Monitoring-Type" }, "description": "The types of monitoring to which this workflow is subscribed.\nIf not provided, the workflow is subscribed to all monitoring types.\n" }, "definition": { "$ref": "#/components/schemas/Workflow-Definition" } } }, "Workflow-Execution-ObjectTypeEnum": { "description": "The type of primary object that was checked. Either:\n- NAME\n- ADDRESS\n- DATE_OF_BIRTH\n- ORGANIZATION\n- DOCUMENT\n- EMAIL_ADDRESS\n- PHONE_NUMBER\n- DEVICE\n- INDIVIDUAL\n", "type": "string", "enum": [ "NAME", "ADDRESS", "DATE_OF_BIRTH", "ORGANIZATION", "DOCUMENT", "EMAIL_ADDRESS", "PHONE_NUMBER", "DEVICE", "INDIVIDUAL" ] }, "Service-Providers": { "type": "object", "properties": { "provider": { "type": "string", "description": "Name of the service provider." }, "result": { "type": "string", "description": "Result or status returned by the provider." }, "order": { "type": "integer", "description": "Sequence order of the provider in the process." }, "startedAt": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp indicating when the provider started." }, "endedAt": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp indicating when the provider ended." } } }, "Workflow-Step-ResultEnum": { "description": "Overall result of the workflow step.\n\nDepending on the context of the step and its purpose, it will return a different result code:\n - UNCHECKED: Step was not attempted. There will be an error or suitable message indicating why, most likely due to a failure in a previous step.\n - SKIPPED: Step was skipped as it was not required to run, or had previously been run and the existing results are sufficient.\n - MISSING_DATA: Step requires additional data before it can complete. Details should be in the error objects.\n - PASS: The step completed and requested goals were met. Usually manually applied or where the result is binary.\n - FAIL: The step completed but the requested goals were not met. Usually manually applied or where the result is binary.\n - COMPLETE: The step has finished successfully and there is not necessarily a pass/fail scenario, just that the process needed to be done.\n - INCOMPLETE: The step was unable to finish successfully and there is not necessarily a pass/fail scenario, just that the process needed to be done and was not.\n - MATCH: The results of this step produced a fully successful match against the requested source(s).\n - NO_MATCH: The results of this step produced no match against the requested source(s).\n - PARTIAL: The results of this step produced a partially successful match against the requested source(s).\n - CLEAR: The step involved checking against a list/source (generally negative in nature) and no match was found (a positive outcome).\n - HIT: The step involved checking against a list/source (generally negative in nature) and a match of some kind was found.\n - CLEARED: The step involved checking against a list/source (generally negative in nature) and, while there were previously found matches, these have been resolved.\n - EXPIRED: The data found in this step has expired in some way.\n - CLEAR_REVIEW: The step was cleared but requires review.\n - HIT_ACCEPTED: A hit was found and accepted.\n - HIT_REJECTED: A hit was found and rejected.\n - NOT_APPLICABLE: The step attempted to run, but it was determined to be unnecessary (e.g., checking for a visa when already a citizen).\n - ERROR: The step attempted to run, but there was an unrecoverable error and no useful result can be determined.\n", "type": "string", "enum": [ "UNCHECKED", "SKIPPED", "MISSING_DATA", "PASS", "FAIL", "COMPLETE", "INCOMPLETE", "MATCH", "NO_MATCH", "PARTIAL", "CLEAR", "HIT", "CLEARED", "EXPIRED", "CLEAR_REVIEW", "HIT_ACCEPTED", "HIT_REJECTED", "NOT_APPLICABLE", "ERROR" ] }, "Workflow-Errors": { "type": "object", "properties": { "code": { "type": "string", "description": "Error code." }, "description": { "type": "string", "description": "Description of the error." }, "location": { "type": "string", "description": "Location or context where the error occurred." } } }, "Workflow-Step-Summary-KYC-MatchRule-Matches-MatchTypes": { "type": "object", "properties": { "objectId": { "description": "The unique identifier (UUID) of the name, address, date of birth, or other object that was verified.", "type": "string", "format": "uuid" }, "objectType": { "description": "The type of object, such as current address (curr_addr), current name (curr_name), previous name (prev_name), alternate date of birth (alt_dob), or passport (PASSPORT).", "type": "string" }, "matchCount": { "description": "Number of distinct matches for this match type.", "type": "integer", "example": 1 }, "matchSources": { "description": "List of sources that matched.", "type": "array", "items": { "type": "string" } }, "nonMatchSources": { "description": "List of sources that did not match, if available from the service provider.", "type": "array", "items": { "type": "string" } }, "isChecked": { "description": "Indicates whether an attempt was made to verify.", "type": "boolean", "example": true }, "isVerified": { "description": "Indicates whether there is at least one match.", "type": "boolean", "example": true } } }, "Workflow-Step-Summary-KYC-Result-Summary-Detail": { "type": "object", "properties": { "provider": { "type": "string", "description": "The name of the provider that returned the result." }, "source": { "type": "string", "description": "The source within the provider that returned the result." }, "attributesMatched": { "type": "array", "description": "List of attributes that were matched.", "items": { "type": "string" } } } }, "Workflow-Step-Summary-KYC-MatchRule-Matches": { "type": "object", "description": "Summary of all KYC matches for a given set of criteria.\n", "properties": { "matchTypes": { "description": "The match types that this overall count and result refer to. Currently, one or more of:\n - name\n - address\n - dob\n - gender\n\nThese will be keys in a map whose values hold the details for each individual match type. The resulting structure would look like the following. Here, \"dob\" has zero matches and is not verified, but it was checked, so other than the checked flag the value object is simply empty. A completely empty object would imply that the match type was not checked.\n\n \"matchTypes\": {\n \"address\": {\n \"matchCount\": 1,\n \"matchSources\": [ \"au-elec-roll\" ],\n \"isChecked\": true,\n \"isVerified\": true\n },\n \"dob\": {\n \"isChecked\": true\n }\n }\n\nFor a \"one_plus\" KYC check, there will be two Workflow-Step-Summary-KYC-MatchRule-Matches records: one for 'name' and one for 'address, dob' (as in the sample above).\n", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/Workflow-Step-Summary-KYC-MatchRule-Matches-MatchTypes" } }, "matchCount": { "description": "Total number of matches for this set of match types (i.e., the sum of the matchCounts in the matchTypes map).\n", "type": "integer", "example": 2 }, "matchCountRequired": { "description": "Number of distinct matches required for this set of match types.\n", "type": "integer", "example": 1 }, "hasAllRequiredSourcesMatched": { "description": "Indicates whether all required match sources (e.g., electoral roll) have matched.", "type": "boolean", "example": true }, "requiredSourcesMatched": { "description": "List of required sources that resulted in a match.", "type": "array", "items": { "type": "string" } }, "requiredSourcesNotMatched": { "description": "List of required sources that did not result in a match.", "type": "array", "items": { "type": "string" } }, "isVerified": { "description": "Indicates whether there are enough matches to meet the matching requirement.", "type": "boolean", "example": false }, "matchDetails": { "type": "array", "description": "Summary of matched details.", "items": { "$ref": "#/components/schemas/Workflow-Step-Summary-KYC-Result-Summary-Detail" } }, "nonMatchDetails": { "type": "array", "description": "Summary of non-matched details.", "items": { "$ref": "#/components/schemas/Workflow-Step-Summary-KYC-Result-Summary-Detail" } } } }, "Workflow-Step-Summary-KYC-MatchRule": { "type": "object", "description": "Provides the details of a KYC matching rule result.\nThe details can be used to represent a rule that did match or did not match.\nBy default, there will always be one matching rule record provided at the end of a KYC step.\n", "properties": { "ruleName": { "description": "The name assigned to this rule.", "type": "string", "default": "default" }, "ruleOrder": { "description": "The priority order of this matching rule.", "type": "integer", "format": "int32", "minimum": 1, "default": 1 }, "ruleMatches": { "type": "array", "description": "The list of matches that comprise this rule.", "items": { "$ref": "#/components/schemas/Workflow-Step-Summary-KYC-MatchRule-Matches" } } } }, "Workflow-Step-Summary-KYC": { "type": "object", "description": "Captures the overall summary of the KYC step, including which matches have been made, with which sources, and under which ruleset.\n", "required": [ "stepName" ], "properties": { "matchedRules": { "type": "array", "description": "List of KYC rulesets that have matched, along with a summary of those matches.", "items": { "$ref": "#/components/schemas/Workflow-Step-Summary-KYC-MatchRule" } }, "unmatchedRules": { "type": "array", "description": "List of KYC rulesets that did not have sufficient results to be considered a match.", "items": { "$ref": "#/components/schemas/Workflow-Step-Summary-KYC-MatchRule" } }, "stepName": { "type": "string" } } }, "Workflow-Step-Summary-AML-Search-Parameters": { "type": "object", "description": "Search query parameters used in the AML workflow step.\n", "properties": { "name": { "type": "string", "description": "Name sent to the service provider, if provided as a single string." }, "givenName": { "type": "string", "description": "Given name sent to the service provider." }, "otherName": { "type": "string", "description": "Other name sent to the service provider." }, "familyName": { "type": "string", "description": "Family name sent to the service provider." }, "dateOfBirth": { "type": "string", "description": "Date of birth sent to the service provider. May be in any format and may be a partial date." }, "address": { "type": "string", "description": "Main address sent to the service provider." }, "gender": { "type": "string", "description": "Gender sent to the service provider." }, "nationality": { "type": "string", "description": "Nationality sent to the service provider." }, "idNumber": { "type": "string", "description": "ID number sent to the service provider." }, "idType": { "type": "string", "description": "ID type sent to the service provider." }, "idCountry": { "type": "string", "description": "ID country sent to the service provider." }, "placeOfBirth": { "type": "string", "description": "Place of birth sent to the service provider." }, "placeOfResidence": { "type": "string", "description": "Place of residence sent to the service provider." }, "fuzziness": { "type": "string", "description": "Search fuzziness level; may be a percentage or a descriptive level." } } }, "Workflow-Step-Summary-AML-ProviderSummary": { "type": "object", "description": "Summary of individual provider results for AML checks.\n", "properties": { "name": { "type": "string", "description": "Name of the provider." }, "lastRetrievedAt": { "type": "string", "format": "date-time", "description": "The date and time this data was last retrieved from the provider. An earlier date may indicate previously retrieved data." }, "numHits": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of AML hits from this provider." }, "numFalsePositives": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of AML hits marked as false positive from this provider." }, "numTruePositives": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of AML hits marked as true positive from this provider." }, "numUnknown": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of AML hits marked as unknown from this provider." }, "numUnresolved": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of AML hits that remain unresolved from this provider." }, "pepCountries": { "type": "array", "items": { "type": "string", "description": "ISO-3166-alpha3 country code where PEP hits were found." } }, "sanctionCountries": { "type": "array", "items": { "type": "string", "description": "ISO-3166-alpha3 country code where sanction hits were found." } }, "watchlistCountries": { "type": "array", "items": { "type": "string", "description": "ISO-3166-alpha3 country code where watchlist hits were found." } }, "adverseMediaCountries": { "type": "array", "items": { "type": "string", "description": "ISO-3166-alpha3 country code where adverse media hits were found." } }, "numUnresolvedPEP": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of AML hits with unresolved PEP entries from this provider." }, "numUnresolvedSanction": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of AML hits with unresolved sanction entries from this provider." }, "numUnresolvedWatchlist": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of AML hits with unresolved watchlist entries from this provider." }, "numUnresolvedAdverseMedia": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of AML hits with unresolved adverse media entries from this provider." }, "searchQuery": { "$ref": "#/components/schemas/Workflow-Step-Summary-AML-Search-Parameters" } } }, "Workflow-Step-Summary-AML": { "type": "object", "description": "Provides details of the overall AML (Anti-Money Laundering) step results.\n", "required": [ "stepName" ], "properties": { "totalHits": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of AML hits across all providers." }, "totalFalsePositives": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of AML hits marked as false positive across all providers." }, "totalTruePositives": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of AML hits marked as true positive across all providers." }, "totalUnknown": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of AML hits marked as unknown across all providers." }, "totalUnresolved": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of AML hits that remain unresolved across all providers." }, "numUnresolvedPEP": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of unresolved AML hits with a PEP (Politically Exposed Person) entry across all providers." }, "numUnresolvedSanction": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of unresolved AML hits with a sanctions entry across all providers." }, "numUnresolvedWatchlist": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of unresolved AML hits with a watchlist entry across all providers." }, "numUnresolvedAdverseMedia": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of unresolved AML hits with an adverse media entry across all providers." }, "providerSummaries": { "type": "array", "description": "Summary of each provider's AML results.", "items": { "$ref": "#/components/schemas/Workflow-Step-Summary-AML-ProviderSummary" } }, "stepName": { "type": "string", "description": "Name of the AML step." } } }, "Workflow-Step-Summary-ID-Matches": { "type": "object", "properties": { "objectType": { "description": "The type of object, such as curr_addr, curr_name, prev_name, alt_dob, or PASSPORT.", "type": "string" }, "matchCount": { "description": "Number of distinct matches for this match type.", "type": "integer", "example": 1 }, "matchSources": { "description": "List of sources that matched.", "type": "array", "items": { "type": "string" } }, "nonMatchSources": { "description": "List of sources that did not match, if available from the service provider.", "type": "array", "items": { "type": "string" } }, "isChecked": { "description": "Indicates if an attempt was made to verify.", "type": "boolean", "example": true }, "isVerified": { "description": "Indicates if there is at least one match.", "type": "boolean", "example": true } } }, "Workflow-Step-Summary-ID": { "type": "object", "description": "ID match counts for each checked document, whether matched or not. The keys in this map are the document IDs. The match type in the value will be either \"gov_id\" or \"other_id\". The resulting structure would look like:\n\nstepData: {\n \"documentId\": {\n \"matchType\": \"gov_id\",\n \"matchCount\": 5,\n \"isVerified\": true\n },\n \"documentId\": {\n \"matchType\": \"other_id\",\n \"matchCount\": 5,\n \"isVerified\": true\n }\n}\n", "required": [ "stepName" ], "additionalProperties": { "$ref": "#/components/schemas/Workflow-Step-Summary-ID-Matches" }, "properties": { "matchTypes": { "description": "The match types that this overall count and result refer to. Currently, one or more of:\n- gov_id\n- other_id\n\nThese will be keys in a map whose values hold the results for the individual match types. The resulting structure would look like the following. Here, dob has zero matches and is not verified but it was checked, so other than the checked flag the value object is simply empty. A completely empty object would imply that match type was not checked.\n\n \"matchTypes\": {\n \"address\": {\n \"matchCount\": 1,\n \"matchSources\": [ \"au-elec-roll\" ],\n \"checked\": true,\n \"verified\": true\n },\n \"dob\": {\n \"checked\": true\n }\n }\n\nFor a one_plus KYC check, there will be two Workflow-Step-Summary-KYC-MatchRule-Matches records: one for 'name' and one for 'address, dob' (as in the sample above).\n", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/Workflow-Step-Summary-KYC-MatchRule-Matches-MatchTypes" } }, "matchCount": { "description": "Number of matches for this set of match types. This is the sum of the matchCounts in the matchTypes map.\n", "type": "integer", "example": 2 }, "matchCountRequired": { "description": "Number of distinct matches required for this set of match types.\n", "type": "integer", "example": 1 }, "hasAllRequiredSourcesMatched": { "description": "True if all required match sources (e.g., electoral roll) were matched.", "type": "boolean", "example": true }, "requiredSourcesMatched": { "description": "List of required sources that were matched.", "type": "array", "items": { "type": "string" } }, "requiredSourcesNotMatched": { "description": "List of required sources that were not matched.", "type": "array", "items": { "type": "string" } }, "isVerified": { "description": "True if there are enough matches to meet the matching requirement.", "type": "boolean", "example": false }, "stepName": { "type": "string" } } }, "Workflow-Step-Summary-Visa": { "type": "object", "description": "Provides details of the visa as returned from VEVO.\nClass and subclass values can be found on the VEVO website.\n", "required": [ "stepName" ], "properties": { "country": { "type": "string", "description": "Country of origin (ISO 3166-1 alpha-3 code).", "maxLength": 3 }, "class": { "type": "string", "description": "Visa class code." }, "subClass": { "type": "string", "description": "Visa subclass code." }, "hasExpired": { "type": "boolean", "description": "Indicates if the visa has expired (sometimes expiry date is not returned)." }, "noExpiry": { "type": "boolean", "description": "Indicates if this visa has no expiry." }, "onAllowList": { "type": "boolean", "description": "Indicates if this class/subclass is on the allow list, if an allow list is set." }, "onDenyList": { "type": "boolean", "description": "Indicates if this class/subclass is on the deny list, if a deny list is set." }, "stepName": { "type": "string", "description": "Name of the workflow step." } } }, "Workflow-Step-Summary-NameValidation": { "type": "object", "description": "Provides summary details for the name validation step.\n", "required": [ "stepName" ], "properties": { "langCode": { "type": "string", "description": "Language code used for translation." }, "nameMatchOrder": { "type": "string", "description": "Depending on the name to be translated and how it is presented, the native language and anglicized version ordering might be mixed up. The service will try various orderings to determine if a match can be made.\nThe order codes represent the actual order that matched.\nEach letter combination represents *F*amily, *G*iven, and *O*ther names.\nFor example, FGO means that the match was on Family, Given, and Other names, in that order.\n", "enum": [ "FGO", "OFG", "GOF", "FOG", "GFO", "OGF", "FG", "FO", "GF", "OF" ] }, "stepName": { "type": "string", "description": "Name of the workflow step." } } }, "Workflow-Step-Summary-Start": { "type": "object", "required": [ "stepName" ], "properties": { "workflowExecutionId": { "type": "string" }, "workflowContextId": { "type": "string", "format": "uuid" }, "stepName": { "type": "string" } } }, "Workflow-Step-Summary-Finish": { "type": "object", "required": [ "stepName" ], "properties": { "workflowContextId": { "type": "string", "format": "uuid" }, "stepName": { "type": "string" } } }, "Workflow-Step-Summary-Decision": { "type": "object", "required": [ "stepName" ], "properties": { "stepName": { "type": "string", "description": "Name of the executed step." }, "workflowExecutionResult": { "$ref": "#/components/schemas/Workflow-Execution-ResultEnum" } } }, "Matchlist-Action": { "type": "string", "description": "Default action recommended for a match. The action can be one of the following:\n - `BLOCK`: Recommended action is to block the entity.\n - `ALERT`: Recommended action is to create an alert for the entity.\n - `ALLOW`: Recommended action is to allow the entity.\n - `REVIEW`: Recommended action is to review the entity.\n - `NONE`: No action; only use the `riskFactor` if any.", "enum": [ "BLOCK", "ALERT", "ALLOW", "REVIEW", "NONE" ] }, "Workflow-Step-Summary-Matchlist-Summary": { "type": "object", "description": "Summary of individual matchlist results.", "properties": { "matchlistId": { "type": "string", "format": "uuid", "description": "Unique identifier for the matchlist." }, "name": { "type": "string", "description": "Name of the matchlist." }, "description": { "type": "string", "description": "Description of the matchlist." }, "action": { "$ref": "#/components/schemas/Matchlist-Action" }, "numMatches": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of matches from this matchlist." }, "numFalsePositives": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of matches from this matchlist that are marked as false positives." }, "numTruePositives": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of matches from this matchlist that are marked as true positives." }, "numUnknown": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of matches from this matchlist that are marked as unknown." }, "numUnresolved": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of matches from this matchlist that are yet to be classified." } } }, "Workflow-Step-Summary-Matchlist": { "type": "object", "description": "Provides a summary of all matchlist screening results for a workflow step.\n", "required": [ "stepName" ], "properties": { "totalMatches": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of matches identified across all matchlists." }, "totalFalsePositives": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of matches across all matchlists that have been marked as false positives." }, "totalTruePositives": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of matches across all matchlists that have been marked as true positives." }, "totalUnknown": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of matches across all matchlists that have been marked as unknown." }, "totalUnresolved": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of matches across all matchlists that are yet to be classified." }, "matchlistSummaries": { "type": "array", "description": "A summary of each provider's matchlist screening results.", "items": { "$ref": "#/components/schemas/Workflow-Step-Summary-Matchlist-Summary" } }, "stepName": { "type": "string", "description": "Name of the workflow step." } } }, "Workflow-Step-Summary-Duplicate": { "type": "object", "description": "Provides details of the overall duplicate step results.\n", "required": [ "stepName" ], "properties": { "totalDuplicates": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of duplicate hits found." }, "totalFalsePositives": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of duplicates marked as false positive." }, "totalTruePositives": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of duplicates marked as true positive." }, "totalUnresolved": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of duplicate hits that are not yet resolved." }, "totalResolved": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of duplicate hits that are already resolved." }, "stepName": { "type": "string", "description": "Name of the duplicate step." } } }, "Workflow-Step-Summary-Activity-Monitor": { "type": "object", "description": "Provides details of the overall activity monitoring step results\n", "required": [ "stepName" ], "properties": { "stepName": { "type": "string" }, "amlActivityCount": { "type": "integer", "format": "int32", "minimum": 0, "description": "Count of AML activity alerts. Includes all AML alerts with status IN_REVIEW or NULL.\nExcludes false positives and true positives.\n" }, "amlActivityTruePositiveCount": { "type": "integer", "format": "int32", "minimum": 0, "description": "Count of true positive AML activity alerts.\n" }, "fraudActivityCount": { "type": "integer", "format": "int32", "minimum": 0, "description": "Count of Fraud activity alerts. Includes all Fraud alerts with status IN_REVIEW or NULL.\nExcludes false positives and true positives.\n" }, "fraudActivityTruePositiveCount": { "type": "integer", "format": "int32", "minimum": 0, "description": "Count of true positive Fraud activity alerts.\n" }, "eventActivityCount": { "type": "integer", "format": "int32", "minimum": 0, "description": "Count of Behaviour activity alerts. Includes all Event alerts with status IN_REVIEW or NULL.\nExcludes false positives and true positives.\n" }, "eventActivityTruePositiveCount": { "type": "integer", "format": "int32", "minimum": 0, "description": "Count of true positive Behaviour activity alerts.\n" } } }, "Workflow-Step-Summary-Fraud": { "type": "object", "description": "Provides details of the overall Fraud step results.\n", "required": [ "stepName", "numberSessionsEvaluated", "numberSessionsNotEvaluated" ], "properties": { "maximumIpAddressRisk": { "type": "string", "description": "Maximum IP risk found" }, "numberIpAddressEvaluations": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of IP evaluations" }, "maximumEmailAddressRisk": { "type": "string", "description": "Maximum email address risk identified." }, "numberEmailAddressEvaluations": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of email address evaluations." }, "maximumPhoneNumberRisk": { "type": "string", "description": "Maximum phone number risk identified." }, "numberPhoneNumberEvaluations": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of phone number evaluations." }, "maximumDeviceRisk": { "type": "string", "description": "Maximum device risk identified." }, "numberDeviceEvaluations": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of device evaluations." }, "numberSessionsEvaluated": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of sessions evaluated." }, "numberSessionsNotEvaluated": { "type": "integer", "format": "int32", "minimum": 0, "description": "Total number of sessions not evaluated.\n\nThis value is greater than 0 when there are too many sessions to reasonably evaluate.\n" }, "stepName": { "type": "string" } } }, "Workflow-Step-Summary-SupportDoc": { "type": "object", "description": "Provides summary details for the supporting document step.\n", "required": [ "stepName" ], "properties": { "approvedCount": { "type": "integer", "description": "Number of support documents approved" }, "rejectedCount": { "type": "integer", "description": "Number of support documents rejected" }, "unresolvedCount": { "type": "integer", "description": "Number of support documents unresolved" }, "stepName": { "type": "string" } } }, "Workflow-Step-Summary": { "type": "object", "oneOf": [ { "$ref": "#/components/schemas/Workflow-Step-Summary-KYC" }, { "$ref": "#/components/schemas/Workflow-Step-Summary-AML" }, { "$ref": "#/components/schemas/Workflow-Step-Summary-ID" }, { "$ref": "#/components/schemas/Workflow-Step-Summary-NameValidation" }, { "$ref": "#/components/schemas/Workflow-Step-Summary-Visa" }, { "$ref": "#/components/schemas/Workflow-Step-Summary-Start" }, { "$ref": "#/components/schemas/Workflow-Step-Summary-Finish" }, { "$ref": "#/components/schemas/Workflow-Step-Summary-Decision" }, { "$ref": "#/components/schemas/Workflow-Step-Summary-Matchlist" }, { "$ref": "#/components/schemas/Workflow-Step-Summary-Duplicate" }, { "$ref": "#/components/schemas/Workflow-Step-Summary-Activity-Monitor" }, { "$ref": "#/components/schemas/Workflow-Step-Summary-Fraud" }, { "$ref": "#/components/schemas/Workflow-Step-Summary-SupportDoc" } ], "discriminator": { "propertyName": "stepName", "mapping": { "KYC": "#/components/schemas/Workflow-Step-Summary-KYC", "AML": "#/components/schemas/Workflow-Step-Summary-AML", "ID": "#/components/schemas/Workflow-Step-Summary-ID", "VISA": "#/components/schemas/Workflow-Step-Summary-Visa", "NAME_VALIDATION": "#/components/schemas/Workflow-Step-Summary-NameValidation", "START": "#/components/schemas/Workflow-Step-Summary-Start", "FINISH": "#/components/schemas/Workflow-Step-Summary-Finish", "DECISION": "#/components/schemas/Workflow-Step-Summary-Decision", "MATCHLIST": "#/components/schemas/Workflow-Step-Summary-Matchlist", "DUPLICATE": "#/components/schemas/Workflow-Step-Summary-Duplicate", "ACTIVITY_MONITOR": "#/components/schemas/Workflow-Step-Summary-Activity-Monitor", "FRAUD": "#/components/schemas/Workflow-Step-Summary-Fraud", "SUPPORT_DOCUMENTS_CHECK": "#/components/schemas/Workflow-Step-Summary-SupportDoc" } } }, "Workflow-Step-Risk-Result-Value": { "type": "object", "description": "Raw value and score from evaluated risk factor", "required": [ "value", "score" ], "properties": { "value": { "type": "string", "description": "raw value from evaluated risk factor" }, "score": { "type": "integer", "description": "score of the raw value from evaluated risk factor" } } }, "Workflow-Step-Risk-Result-Detail": { "type": "object", "description": "Details of a calculated risk result for a workflow step.\n", "required": [ "factor", "score", "value" ], "properties": { "factor": { "type": "string", "description": "Name of the risk factor contributing to this score." }, "score": { "type": "integer", "description": "Score contributed by this factor." }, "value": { "type": "string", "description": "Value used for the score factor." }, "aggregationMethod": { "type": "string", "description": "method used to aggregate score" }, "matchedRule": { "type": "string", "description": "description of the specific rule or range that was matched" }, "source": { "type": "string", "description": "JSON path to the specific field in the entity object that provided the data for the evaluation" }, "inputsConsidered": { "type": "array", "description": "List of raw values and their individual scores", "items": { "$ref": "#/components/schemas/Workflow-Step-Risk-Result-Value" } } } }, "Workflow-Step-Risk-Result": { "type": "object", "description": "Calculated risk result for a workflow step.\n", "properties": { "level": { "type": "string", "description": "Current risk level." }, "contributedScore": { "type": "integer", "description": "Risk score contributed by this step." }, "overallScore": { "type": "integer", "description": "Current overall risk score." }, "factors": { "type": "array", "description": "List of contributing score factors.", "items": { "$ref": "#/components/schemas/Workflow-Step-Risk-Result-Detail" } } } }, "FuzzinessLevel": { "type": "object", "properties": { "normalized": { "description": "The normalized fuzziness level, if set.\nNote: This is a normalized value, NOT the one used by the service provider (see the \"actual\" field).\nAssumes a scale of 0.0 (exact match) to 100.0 (match anything).\n", "type": "number", "format": "float", "minimum": 0, "maximum": 100 }, "actual": { "description": "The actual fuzziness level as provided by the service provider, if set.\nNote: This is not a normalized value, but the original value from the provider.\n", "type": "string" } } }, "ConfidenceLevel": { "type": "object", "properties": { "normalized": { "description": "The normalized confidence level, if set.\nNote: This is a normalized value, NOT the one used by the service provider (see the \"actual\" field).\nAssumes a scale of 0.0 (exact match) to 100.0 (match anything).\n", "type": "number", "format": "float", "minimum": 0, "maximum": 100 }, "actual": { "description": "The actual confidence level as provided by the service provider, if set.\nNote: This is not a normalized value, but the original value from the provider.\n", "type": "string" } } }, "Provider-Result": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "type": "string" }, "sourceNormalized": { "type": "string" }, "reference": { "type": "string" }, "fuzziness": { "$ref": "#/components/schemas/FuzzinessLevel" }, "confidence": { "$ref": "#/components/schemas/ConfidenceLevel" }, "riskScore": { "type": "number", "format": "double" }, "errorCode": { "type": "string" }, "errorMessage": { "type": "string" } }, "readOnly": true }, "Process-ResultEnum": { "type": "string", "enum": [ "MATCH", "PARTIAL_MATCH", "INVALID_MATCH", "NO_MATCH", "CLEAR", "HIT", "BAD_DATA", "CREATED", "UPDATED", "DELETED", "FAIL", "NOT_APPLICABLE", "SUSPECTED", "REJECTED", "MANUAL", "CLEAR_AUTO", "OVERRIDE" ], "readOnly": true, "description": "The actual pass/fail result of the element check\n- MATCH: The element check matched the expected criteria.\n- PARTIAL_MATCH: The element check partially matched the expected criteria.\n- INVALID_MATCH: The element check matched but was invalid.\n- NO_MATCH: The element check did not match the expected criteria.\n- CLEAR: The element check was cleared.\n- HIT: The element check hit a specific condition or threshold.\n- BAD_DATA: The element check encountered bad data.\n- CREATED: The element check resulted in the creation of a new record.\n- UPDATED: The element check resulted in the update of an existing record.\n- DELETED: The element check resulted in the deletion of a record.\n- FAIL: The element check failed.\n- NOT_APPLICABLE: The element check was not applicable in the given context.\n- SUSPECTED: The element check raised a suspicion but did not confirm it.\n- REJECTED: The element check was rejected.\n- MANUAL: The element check was manually reviewed or processed.\n- CLEAR_AUTO: The element check was cleared automatically.\n- OVERRIDE: The element check was overridden by a manual action or system rule.\n" }, "Process-Result-ClassEnum": { "type": "string", "description": "Provides additional clarity for the result class, especially for more generic element types like 'person'.", "enum": [ "KYC", "ID", "IDV", "AML", "FRAUDLIST", "FRAUDCHECK", "FRAUD", "DEVICE", "MOBILE", "EMAIL", "LOOKUP", "CREATE", "UPDATE", "DELETE", "KYB", "DUPLICATE", "BLOCKLIST", "SUPPORTING_DOC", "MATCHLIST", "VISA", "ACTIVITY" ], "readOnly": true }, "Supplementary-Data-Base": { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "description": "The type of supplementary data. Possible values:\n - AML\n - KYC_ADDRESS\n - KYC_DOB\n - KYC_GENDER\n - KYC_NAME\n - ID\n - VISA\n - NAME_VALIDATION\n - KYB_ORGANIZATION\n - MATCHLIST\n - DUPLICATE\n - FRAUD_DEVICE\n - FRAUD_EMAIL\n - FRAUD_PHONE\n - FRAUD_LOOKUP\n - ACTIVITY_AML\n - ACTIVITY_EVENT\n - ACTIVITY_FRAUD\n", "enum": [ "AML", "KYC_ADDRESS", "KYC_DOB", "KYC_GENDER", "KYC_NAME", "ID", "VISA", "NAME_VALIDATION", "KYB_ORGANIZATION", "MATCHLIST", "DUPLICATE", "FRAUD_DEVICE", "FRAUD_EMAIL_ADDRESS", "FRAUD_PHONE_NUMBER", "FRAUD_IP_ADDRESS", "FRAUD_LOOKUP", "ACTIVITY_AML", "ACTIVITY_EVENT", "ACTIVITY_FRAUD" ] } } }, "Supplementary-Data-AML-MatchData-Country": { "type": "object", "required": [ "code" ], "description": "Represents the country code and match type for an AML (Anti-Money Laundering) country match.\n", "properties": { "code": { "type": "string", "maxLength": 3, "description": "The ISO 3166-1 alpha-3 country code where a match was identified.\n" }, "matchType": { "type": "string", "description": "The type of match associated with this country. Possible values include:\n - CITIZENSHIP\n - RESIDENCE\n - BIRTH\n - NATIONALITY\n - INCORPORATION (for organizations)\n - OPERATION\n" } } }, "Supplementary-Data-AML-MatchData-NationalId": { "type": "object", "description": "Provides details of a matched identification document, if supplied.\n", "properties": { "idNumber": { "type": "string", "description": "The matched identification number." }, "idType": { "type": "string", "description": "The type of identification matched (e.g., National ID, passport)." }, "idExpiry": { "type": "string", "description": "The expiry date of the identification document (if known), using the format provided by the service provider." }, "issuingCountryCode": { "type": "string", "description": "The ISO 3166-1 alpha-3 country code of the issuing country." }, "documentId": { "type": "string", "description": "The document ID if this was matched to a FrankieOne document record." } } }, "Supplementary-Data-AML-MatchData": { "type": "object", "required": [ "spReferenceId", "name" ], "description": "Contains information about this specific matched entity.\n", "properties": { "strength": { "type": "number", "format": "float", "description": "The confidence level of the match as determined by the service provider, expressed as a percentage from 0 to 100. Can be a decimal value (e.g., 85.7)." }, "spReferenceId": { "type": "string", "description": "The internal identifier assigned by the service provider for the matched individual or business.\n" }, "name": { "type": "string", "description": "The name matched by the service provider.\n" }, "givenName": { "type": "string", "description": "The given name matched by the service provider (optional).\n" }, "otherName": { "type": "string", "description": "The middle or other name(s) matched by the service provider (optional).\n" }, "familyName": { "type": "string", "description": "The family name matched by the service provider (optional).\n" }, "date": { "type": "string", "description": "The date matched in the system, formatted as provided by the service provider. May be only a year.\n" }, "address": { "type": "string", "description": "The address matched by the service provider (optional).\n" }, "countries": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-AML-MatchData-Country" } }, "nationalId": { "$ref": "#/components/schemas/Supplementary-Data-AML-MatchData-NationalId" }, "imageUrl": { "type": "string", "format": "uri", "description": "A URL to a displayable image of the matched individual or company logo." }, "isDeceased": { "type": "boolean", "description": "Indicates if this match is to a deceased individual." }, "isAlias": { "type": "boolean", "description": "Indicates if this match is an alias of the searched individual or organization." }, "isRelated": { "type": "boolean", "description": "Indicates if this match is a related party of the searched individual or organization." }, "gender": { "$ref": "#/components/schemas/GenderEnum" } } }, "Supplementary-Data-AML-RelatedParties": { "type": "object", "description": "Defines the name and relationship of individuals or organizations related to the matched entity.\n", "properties": { "name": { "type": "string", "description": "The name of the related individual or organization." }, "relationship": { "type": "string", "description": "The nature of the relationship to the matched entity.\nFor example: \"Sibling\", \"Director\", \"Known associate\".\n" } } }, "Supplementary-Data-AML-ReferenceDocs": { "type": "object", "description": "Captures references to source documents or websites, including the URL and, where available, a description of the original source.\n", "properties": { "url": { "type": "string", "format": "uri", "description": "URL of any external reference document related to this matched entity." }, "description": { "type": "string", "description": "If a description of the document is provided, it will be included here." } } }, "Supplementary-Data-AML-AdditionalData": { "type": "object", "description": "Represents a simple key-value pair for AML data to capture any additional information not included in the main object.\n", "properties": { "key": { "type": "string", "description": "The key name, formatted in snake_case (e.g., key_in_snake_case), which can be converted to spaced title case for display.\n" }, "value": { "type": "string", "description": "The value associated with the key, provided as a string for display purposes.\n" } } }, "Supplementary-Data-AML-PEPData": { "type": "object", "description": "Contains Politically Exposed Person (PEP) information about a specific matched entity.\n", "properties": { "countryCode": { "type": "string", "description": "The ISO 3166-1 alpha-3 country code where the PEP entry was recorded.\n" }, "countryName": { "type": "string", "description": "The ISO 3166 country name where the PEP entry was recorded.\n" }, "sourceName": { "type": "string", "description": "The source of the PEP entry data.\n" }, "level": { "type": "string", "description": "The PEP \"level\", generally represented by a number from 1 (heads of state, military, civil service, etc.) to 4 (local government, minor public servants, etc.).\n" }, "sourceUrl": { "type": "string", "format": "uri", "description": "The URL where the original PEP information can be found.\n" }, "sourcePosition": { "deprecated": true, "type": "string", "description": "(Deprecated) The position held that created the PEP entry.\n" }, "position": { "type": "string", "description": "The position held that created the PEP entry.\n" }, "positionDescription": { "type": "string", "description": "A description of the position held that created the PEP entry.\n" }, "status": { "type": "string", "description": "The current PEP status.\n" }, "listingStart": { "type": "string", "description": "The date when the listing started. Will attempt to use ISO 8601 date format; otherwise, the format supplied by the source.\n" }, "listingEnd": { "type": "string", "description": "The date when the listing ended (if available or known). Will attempt to use ISO 8601 date format; otherwise, the format supplied by the source.\n" }, "imageUrl": { "type": "string", "format": "uri", "description": "Optional URL of an image of the person associated with their role.\n" }, "referenceDocs": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-AML-ReferenceDocs" } }, "additionalData": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-AML-AdditionalData" } } } }, "Supplementary-Data-AML-SanctionsData": { "type": "object", "description": "Contains sanction information about a specific matched entity.\n", "properties": { "countryCode": { "type": "string", "description": "The ISO 3166-1 alpha-3 country code where the sanction entry was recorded.\n" }, "countryName": { "type": "string", "description": "The ISO 3166 country name where the sanction entry was recorded.\n" }, "sourceName": { "type": "string", "description": "The source of the sanction entry data.\n" }, "sourceUrl": { "type": "string", "format": "uri", "description": "The URL where the original sanction information can be found.\n" }, "sourceReason": { "type": "string", "description": "The reason provided for sanctioning the individual or organization.\n" }, "listingStart": { "type": "string", "description": "The date when the listing started. Will attempt to use ISO 8601 date format; otherwise, the format supplied by the source.\n" }, "listingEnd": { "type": "string", "description": "The date when the listing ended (if available or known). Will attempt to use ISO 8601 date format; otherwise, the format supplied by the source.\n" }, "imageUrl": { "type": "string", "format": "uri", "description": "Optional URL of an image of the person or company logo of the sanctioned entity.\n" }, "referenceDocs": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-AML-ReferenceDocs" } }, "additionalData": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-AML-AdditionalData" } } } }, "Supplementary-Data-AML-WatchlistData": { "type": "object", "description": "Contains non-PEP/non-sanction watchlist and other source information about a specific matched entity.\n", "properties": { "countryCode": { "type": "string", "description": "The ISO 3166-1 alpha-3 country code where the watchlist entry was recorded.\n" }, "countryName": { "type": "string", "description": "The ISO 3166 country name where the watchlist entry was recorded.\n" }, "sourceName": { "type": "string", "description": "The source of the watchlist entry data.\n" }, "sourceUrl": { "type": "string", "format": "uri", "description": "The URL where the original watchlist information can be found.\n" }, "sourceReason": { "type": "string", "description": "The reason provided for adding the individual or organization to the watchlist.\n" }, "listingStart": { "type": "string", "description": "The date when the listing started. Will attempt to use ISO 8601 date format; otherwise, the format supplied by the source.\n" }, "listingEnd": { "type": "string", "description": "The date when the listing ended (if available or known). Will attempt to use ISO 8601 date format; otherwise, the format supplied by the source.\n" }, "imageUrl": { "type": "string", "format": "uri", "description": "Optional URL of an image of the person or company logo of the entity on this list.\n" }, "referenceDocs": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-AML-ReferenceDocs" } }, "additionalData": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-AML-AdditionalData" } } } }, "Supplementary-Data-AML-MediaData": { "type": "object", "required": [ "title", "source" ], "description": "Contains adverse media information about a specific matched entity.\n", "properties": { "title": { "type": "string", "description": "The title of the article or media source.\n" }, "snippet": { "type": "string", "description": "A short excerpt or snippet from the article.\n" }, "source": { "type": "string", "description": "The source or publisher of the article or media.\n" }, "sourceDate": { "type": "string", "description": "The publication date, as referenced and formatted by the source.\n" }, "sourceCountry": { "type": "string", "description": "The country of origin for the article, if available.\n" }, "url": { "type": "string", "description": "The URL to the original full article, if available.\n" }, "isCurrent": { "type": "boolean", "default": true, "description": "Indicates whether this article is still considered current.\n" } } }, "Supplementary-Data-AML": { "type": "object", "required": [ "serviceProvider" ], "description": "Each AML match/hit generates a PRO, and this object describes the details of the matched individual or business.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "serviceProvider": { "type": "string", "description": "The name of the service provider from which this matched record was retrieved.\n" }, "searchId": { "type": "string", "description": "The service provider's search reference number, usually used to refer to an ongoing search.\n" }, "caseId": { "type": "string", "description": "If the service provider has case management facilities, this is their case identifier. May be the same as the search ID.\n" }, "referenceId": { "type": "string", "description": "An additional reference number provided by the service provider, or our own reference number.\n" }, "originalStepSearchLevel": { "type": "string", "description": "Indicates if this was a simple PEP or PEP media check that found this match. Used to determine if more information is needed when re-using existing results.\n" }, "groupingId": { "type": "string", "description": "Some matches can be grouped together as part of a collection of searches. This can be the searchId or a reference ID.\n" }, "reportUrl": { "type": "string", "format": "uri", "description": "If the service provider supplies a pre-packaged report that can be downloaded independently, this is the URL to retrieve it.\n" }, "fuzziness": { "$ref": "#/components/schemas/FuzzinessLevel" }, "matchData": { "$ref": "#/components/schemas/Supplementary-Data-AML-MatchData" }, "aliases": { "type": "array", "items": { "type": "string", "description": "Alternative names, aliases, \"AKA\"s, or names as spelled in other languages, etc." } }, "relatedParties": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-AML-RelatedParties" } }, "referenceDocs": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-AML-ReferenceDocs" } }, "notes": { "$ref": "#/components/schemas/Custom-Attributes" }, "pepData": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-AML-PEPData" } }, "sanctionData": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-AML-SanctionsData" } }, "watchlistData": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-AML-WatchlistData" } }, "mediaData": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-AML-MediaData" } } } } ] }, "Supplementary-Data-KYC-Address-MatchStrengths": { "type": "object", "properties": { "fullAddress": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "streetNumber": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "streetName": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "streetType": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "streetAll": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "locality": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "district": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "subdivision": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "postalCode": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "country": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 } } }, "Supplementary-Data-KYC-Address": { "type": "object", "description": "Defines the matching levels for each address element, where available.\nProvides a match strength score ranging from 0 (no match) to 100 (full match).\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "matchStrengths": { "$ref": "#/components/schemas/Supplementary-Data-KYC-Address-MatchStrengths" }, "fuzziness": { "$ref": "#/components/schemas/FuzzinessLevel" }, "wasNameMatchStrongEnough": { "description": "Indicates whether there was a sufficiently strong name match at the time this was checked, even if the address was a perfect match.\nThis is only an indicator at the time the PRO was created. Subsequent checks that reuse this result may interpret this differently.\n", "type": "boolean" } } } ] }, "Supplementary-Data-KYC-DoB-MatchStrengths": { "type": "object", "properties": { "fullDateOfBirth": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "year": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "month": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "day": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 } } }, "Supplementary-Data-KYC-DoB": { "type": "object", "description": "Defines the matching levels for each date of birth element, where available.\nProvides a match strength score ranging from 0 (no match) to 100 (full match).\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "matchStrengths": { "$ref": "#/components/schemas/Supplementary-Data-KYC-DoB-MatchStrengths" }, "fuzziness": { "$ref": "#/components/schemas/FuzzinessLevel" }, "wasNameMatchStrongEnough": { "description": "Indicates whether there was a sufficiently strong name match at the time this was checked, even if the date of birth was a perfect match.\nThis is only an indicator at the time the PRO was created. Subsequent checks that reuse this result may interpret this differently.\n", "type": "boolean" } } } ] }, "Supplementary-Data-KYC-Gender-MatchStrengths": { "type": "object", "properties": { "gender": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 } } }, "Supplementary-Data-KYC-Gender": { "type": "object", "description": "Defines the matching results for a gender check. This is rarely used.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "matchStrengths": { "$ref": "#/components/schemas/Supplementary-Data-KYC-Gender-MatchStrengths" }, "fuzziness": { "$ref": "#/components/schemas/FuzzinessLevel" }, "wasNameMatchStrongEnough": { "description": "Indicates whether there was a sufficiently strong name match at the time this was checked, even if the gender was a perfect match.\nThis is only an indicator at the time the PRO was created. Subsequent checks that reuse this result may interpret this differently.\n", "type": "boolean" } } } ] }, "Supplementary-Data-KYC-Name-MatchStrengths": { "type": "object", "properties": { "fullName": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "familyName": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "givenName": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "otherNames": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "firstInitialFamilyName": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 } } }, "Supplementary-Data-KYC-Name": { "type": "object", "description": "Defines the matching levels for each name element, where available.\nProvides a match strength score ranging from 0 (no match) to 100 (full match).\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "matchStrengths": { "$ref": "#/components/schemas/Supplementary-Data-KYC-Name-MatchStrengths" }, "fuzziness": { "$ref": "#/components/schemas/FuzzinessLevel" } } } ] }, "Supplementary-Data-ID-MatchStrengths": { "type": "object", "properties": { "primaryIdentifier": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "secondaryIdentifier": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "name": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100, "description": "If the name verification result is known, record it here.\n\nNOTE: This should not be used as a KYC result; informational only.\nPlease use a separate PRO for an actual KYC result if required.\n" }, "dateOfBirth": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100, "description": "If the date of birth verification result is known, record it here.\n\nNOTE: This should not be used as a KYC result; informational only.\nPlease use a separate PRO for an actual KYC result if required.\n" }, "expiryDate": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100 }, "isValid": { "type": "boolean", "description": "Indicates if the ID is valid (if known)." }, "isExpired": { "type": "boolean", "description": "Indicates if the ID has expired (if known)." }, "isBlocked": { "type": "boolean", "description": "Indicates if the ID has been blocked at the source." }, "blockingCode": { "type": "string", "description": "If the service provider returns a blocking code or reason, it will be recorded here." }, "attachmentId": { "type": "string", "format": "uuid", "description": "If a photo was sent to the service provider, the FrankieOne scanId is added for reference." }, "photoId": { "type": "integer", "format": "int32", "minimum": 0, "maximum": 100, "description": "If a photo was supplied and checked, the match score is recorded here." }, "photoIssue": { "type": "string", "description": "If there was an issue checking the photo, any error details can be found here." } } }, "Supplementary-Data-ID": { "type": "object", "description": "Provides the matching levels found for each ID element, where available.\nMatch strength is scaled from 0 (no match) to 100 (full match).\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "matchStrengths": { "$ref": "#/components/schemas/Supplementary-Data-ID-MatchStrengths" }, "fuzziness": { "$ref": "#/components/schemas/FuzzinessLevel" } } } ] }, "Supplementary-Data-Visa": { "type": "object", "description": "Defines the Visa details returned from VEVO.\nClass and subclass values can be found on the VEVO website.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "country": { "type": "string", "description": "Country of origin (ISO-3166-alpha3 code)." }, "class": { "type": "string", "description": "Visa class." }, "subClass": { "type": "string", "description": "Visa subclass." }, "entitlementStatus": { "type": "string", "description": "Status of the visa entitlement." }, "grantDate": { "type": "string", "format": "date", "description": "Date the visa was granted." }, "expiryDate": { "type": "string", "format": "date", "description": "Date the visa expires." }, "hasExpired": { "type": "boolean", "description": "Indicates if the visa has expired (sometimes expiry date is not returned)." }, "noExpiry": { "type": "boolean", "description": "Indicates if this visa has no expiry." }, "entitlementConditionCode": { "type": "string", "description": "Code for the entitlement condition." }, "entitlementConditionDescription": { "type": "string", "description": "Description of the entitlement condition." }, "holderType": { "type": "string", "enum": [ "PRIMARY", "SECONDARY" ], "description": "Indicates if this is the primary visa holder or a secondary holder (usually a spouse/partner or other family member).\nValues:\n - PRIMARY\n - SECONDARY\n" }, "lookupErrorCode": { "type": "string", "description": "If there was an error during the lookup, this is the code returned from VEVO." }, "fuzziness": { "$ref": "#/components/schemas/FuzzinessLevel" } } } ] }, "Supplementary-Data-NameValidation": { "type": "object", "description": "Details on how the native language name was verified against a dictionary of anglicized translations.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "langCode": { "type": "string", "description": "Language code used for translation." }, "nameMatchOrder": { "type": "string", "description": "Depending on the name to be translated and how it is presented, the native language and anglicized version ordering might be mixed up. The service will try various orderings to find a match.\nThe order codes represent the actual order that matched.\nEach letter combination represents *F*amily, *G*iven, and *O*ther names.\nFor example, FGO means that Family, Given, and Other names matched in that order.\n", "enum": [ "FGO", "OFG", "GOF", "FOG", "GFO", "OGF", "FG", "FO", "GF", "OF" ] }, "fuzziness": { "$ref": "#/components/schemas/FuzzinessLevel" } } } ] }, "Supplementary-Data-KYB-Organization": { "type": "object", "description": "Defines OQRO (Ownership Query Result Object) at various stages in the KYB (Know Your Business) flow.\nThe 'oqro' property temporarily stores the V1 OQRO and will be used until the V2 OQRO is defined.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "organization": { "description": "V2 OQRO; to be defined in the future.\n", "properties": { "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "entityType": { "$ref": "#/components/schemas/Entity-Type" } } } } } ] }, "Object-Type": { "description": "The type of object being annotated.", "type": "string", "enum": [ "ADDRESS", "NAME", "PHONE_NUMBER", "EMAIL", "DATE_OF_BIRTH", "WEBSITE", "SHAREHOLDER", "OFFICIAL", "UBO", "REGISTRATION", "SHAREHOLDING", "SHARECAPITAL", "DOCUMENT", "DOCUMENT_ATTACHMENT", "RESULT_PROCESS", "RESULT_STEP", "RESULT_WORKFLOW", "SERVICE_PROFILE", "AUDIT_EVENT", "EXTERNAL_REFERENCE", "RISK_ASSESSMENT", "MATCHLIST" ] }, "Supplementary-Data-Base-MatchStrength": { "type": "integer", "description": "Represents the standard match strength, scaled from 0 (no match) to 100 (exact match).\nIn some cases, a value of 50 may be interpreted as a \"partial\" match.\n", "format": "int32", "minimum": 0, "maximum": 100 }, "Supplementary-Data-Duplicate-MatchField": { "type": "object", "description": "Provides details of a match between entities, the objects they represent, and the match strength.\n", "properties": { "objectType": { "$ref": "#/components/schemas/Object-Type" }, "duplicateObjectId": { "type": "string", "format": "uuid", "description": "The ID of the object that was found to be a duplicate." }, "objectId": { "type": "string", "format": "uuid", "description": "The ID of the object that originated the match." }, "matchStrength": { "$ref": "#/components/schemas/Supplementary-Data-Base-MatchStrength" } } }, "Supplementary-Data-Duplicate-MatchedRule": { "type": "object", "description": "Provides details about the rule that was matched to classify the object as a duplicate.\n", "properties": { "name": { "type": "string", "description": "The name of the matched rule." }, "strength": { "type": "string", "description": "The strength of the match. This is free-form, but it is recommended to use standard values for clarity, such as:\n - \"VERY_LOW\"\n - \"LOW\"\n - \"MEDIUM\"\n - \"HIGH\"\n - \"VERY_HIGH\"\n" } } }, "Supplementary-Data-Duplicate": { "type": "object", "description": "Provides details of a single duplicate match, including the matching entity ID and a list of matched elements.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "duplicateEntityId": { "$ref": "#/components/schemas/Entity-ID", "description": "The entity ID of the entity that was matched by the matched fields." }, "matchedFields": { "type": "array", "description": "The list of fields that determined this is a duplicate of another entity.", "items": { "$ref": "#/components/schemas/Supplementary-Data-Duplicate-MatchField" } }, "matchedRules": { "type": "array", "description": "The list of rules that were matched to determine this is a duplicate of another entity.", "items": { "$ref": "#/components/schemas/Supplementary-Data-Duplicate-MatchedRule" } } } } ] }, "Supplementary-Data-IDV-Data": { "type": "object", "description": "Contains information about a specific matched IDV element.\n", "properties": { "originalName": { "type": "string", "description": "The name of the element as returned by the provider, before normalization (e.g., 'face', 'dob', 'name')." }, "confidence": { "type": "number", "format": "float", "description": "Service provider's confidence in this value." }, "confidenceThreshold": { "type": "number", "format": "float", "description": "Configured confidence threshold for this value to be considered valid." }, "originalData": { "type": "string", "description": "The raw data returned by the provider." }, "reviewedData": { "type": "string", "description": "If the applicant was given a chance to correct the data, this is the reviewed data with any changes." }, "resultNormalized": { "type": "string", "description": "The final result after applying confidence and normalization (e.g., clear, suspected, rejected)." }, "description": { "type": "string", "description": "A description of the data element returned in the rawData field." } } }, "Supplementary-Data-IDV-ElementMap": { "type": "object", "description": "A map of IDV report elements obtained from the requested IDV service provider.\n\nThe map keys are arbitrary strings, but where possible, should use a value from the predefined IDV Data Enums.\nService provider connections should map supplied values to existing enums where possible.\nIf there is no relevant existing match, it is acceptable to use the original service provider value as the key.\n", "additionalProperties": { "$ref": "#/components/schemas/Supplementary-Data-IDV-Data" } }, "Supplementary-Data-IDV-Base": { "type": "object", "description": "A report from an IDV provider based on a photographic or video biometrics process.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "outcomeRaw": { "type": "string", "description": "The original outcome of the IDV process, as reported by the service provider." }, "resultMap": { "$ref": "#/components/schemas/Supplementary-Data-IDV-ElementMap" }, "requiredElements": { "type": "array", "description": "List of elements required to have passed, as per the step configuration.", "items": { "type": "string", "description": "The IDV report element name, e.g., 'face', 'dob', 'name'." } } } } ] }, "Supplementary-Data-IDV-Document": { "type": "object", "description": "Result of a document check, indicating how likely or accurate the presented document is a valid ID document.\n\nFor resultMap keys, use the keys found in the enum: SupplementaryDataIDVEnumDataDocument.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-IDV-Base" }, { "type": "object", "properties": { "attachmentIds": { "type": "object", "description": "The IDs of the document images that were analyzed.", "properties": { "front": { "type": "string", "format": "uuid", "description": "The ID of the front image of the document." }, "back": { "type": "string", "format": "uuid", "description": "The ID of the back image of the document." } } }, "detectedDocumentType": { "$ref": "#/components/schemas/Document-Type" }, "detectedDocumentCountry": { "type": "string", "description": "The ISO-3166-alpha3 country code of the document as detected.", "example": "AUS" } } } ] }, "Supplementary-Data-IDV-Facial-Comparison": { "type": "object", "description": "Result of a facial comparison check, indicating how likely or accurate the presented face matches the ID document.\n\nFor resultMap keys, use the keys found in the enum: SupplementaryDataIDVEnumDataFacialComparison.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-IDV-Base" }, { "type": "object", "properties": { "comparedDocumentId": { "type": "string", "format": "uuid", "description": "The document ID of the ID document that was compared." }, "comparedDocumentAttachmentId": { "type": "string", "format": "uuid", "description": "The attachment ID of the ID document that was compared." }, "comparedSelfieId": { "type": "string", "format": "uuid", "description": "The document ID of the selfie that was compared." }, "comparedSelfieAttachmentId": { "type": "string", "format": "uuid", "description": "The attachment ID of the selfie that was compared." } } } ] }, "Supplementary-Data-IDV-Facial-Liveness": { "type": "object", "description": "Result of a facial liveness check, indicating how likely the facial photo or video is of a live person.\n\nFor resultMap keys, use the keys found in the enum: SupplementaryDataIDVEnumDataFacialLiveness.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-IDV-Base" }, { "type": "object", "properties": { "comparedSelfieId": { "type": "string", "format": "uuid", "description": "The document ID of the selfie that was compared." }, "comparedSelfieAttachmentId": { "type": "string", "format": "uuid", "description": "The attachment ID of the selfie that was compared." } } } ] }, "Supplementary-Data-IDV-OCR": { "type": "object", "description": "Result of a document OCR comparison. This object represents the comparison between scanned data (via OCR) and updated or alternately supplied results.\n\nFor the resultMap keys, use the keys defined in the enum: SupplementaryDataIDVEnumDataOCR.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-IDV-Base" }, { "type": "object", "properties": { "scannedDocumentId": { "type": "string", "format": "uuid", "description": "The documentId of the ID document on which OCR extraction was performed.\n" }, "scannedAttachmentFrontId": { "type": "string", "format": "uuid", "description": "The attachmentId of the front image of the ID document used for OCR extraction.\n" }, "scannedAttachmentBackId": { "type": "string", "format": "uuid", "description": "The attachmentId of the back image of the ID document used for OCR extraction, if a back image was provided.\n" } } } ] }, "Supplementary-Data-IDV-OCR-Comparison-Enum-Comparison-Source": { "type": "string", "description": "Indicates the source of the data used for comparison with the OCR scan results.\nThe source can be either the original entity data or the updated data extracted from the OCR scan.\n", "enum": [ "ENTITY", "OCR_UPDATE" ] }, "Supplementary-Data-IDV-OCR-Comparison": { "type": "object", "description": "Result of an OCR and updated data comparison. This object represents the comparison between scanned data (via OCR) and updated or alternately supplied results.\n\nWhen selecting data for comparison, preference is given to the entity details that have been or will be sent to service providers for verification, rather than the updated data provided in the OCR scan.\n\nFor the resultMap and mismatchMap keys, use the keys defined in the enum: SupplementaryDataIDVEnumDataOCRComparison.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-IDV-Base" }, { "type": "object", "properties": { "ocrResultId": { "type": "string", "format": "uuid", "description": "The proId of the OCR data PRO used for this comparison.\n" }, "comparisonSource": { "$ref": "#/components/schemas/Supplementary-Data-IDV-OCR-Comparison-Enum-Comparison-Source" }, "mismatchMap": { "$ref": "#/components/schemas/Supplementary-Data-IDV-ElementMap", "description": "Map of OCR mismatches between previously entered or expected values and the OCR result.\n\nActual matches should be recorded in resultMap.\n" }, "nameId": { "type": "string", "format": "uuid", "description": "The nameId of the name object used in the comparison.\n" }, "dobId": { "type": "string", "format": "uuid", "description": "The dobId of the date of birth object used in the comparison.\n" } } } ] }, "Matchlist-Entry-Reason-Code": { "type": "string", "description": "The reason code for the matchlist entry. This code will be translated to a configured description string. Supported codes are 1 to 24 characters long, consisting only of uppercase letters (A-Z), digits (0-9), underscores (_), or hyphens (-), with no spaces or special characters.", "pattern": "^[A-Z0-9_-]{1,24}$" }, "Matchlist-Entry-Base": { "type": "object", "description": "Basic details about a matchlist entry, excluding metadata.", "properties": { "entryId": { "type": "string", "format": "uuid", "readOnly": true, "description": "Unique identifier for the matchlist entry." }, "entityId": { "type": "string", "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "description": "The entity ID from which the attributes of this entry are derived. This is optional and can be used to link the matchlist entry to an entity." }, "entityType": { "$ref": "#/components/schemas/Entity-Type", "description": "The type of entity from which the attributes of this entry are derived. This is optional and can be used to link the matchlist entry to an entity." }, "reference": { "type": "string", "description": "Optional reference describing the context of this entry.", "example": "CERT-BAD-ACTOR-1234-5678" }, "reasons": { "description": "The reasons for the matchlist entry. These codes will be translated to configured description strings.", "type": "array", "items": { "$ref": "#/components/schemas/Matchlist-Entry-Reason-Code" } } } }, "Search-Confidence": { "type": "number", "format": "float", "minimum": 0, "maximum": 1, "description": "Confidence level of the search result, represented as a number between 0 and 1.\nA higher value indicates greater confidence in the accuracy of the search result.\n" }, "Matchlist-Entry-Attribute-Type": { "type": "string", "description": "Entity attributes eligible for screening.\n\nA matchlist entry may not contain both `ORG_*` and `IND_*` attributes, and they must match the `ENTITY_TYPE` if it is provided.", "enum": [ "ENTITY_TYPE", "EMAIL_ADDRESS", "EMAIL_DOMAIN", "PHONE_NUMBER", "ADDR_STREET_NUMBER", "ADDR_STREET_NAME", "ADDR_STREET_TYPE", "ADDR_NEIGHBORHOOD", "ADDR_LOCALITY", "ADDR_DISTRICT", "ADDR_SUBDIVISION", "ADDR_COUNTRY", "ADDR_POSTAL_CODE", "ADDR_UNSTRUCTURED_LONG_FORM", "DOC_CLASS", "DOC_TYPE", "DOC_SUBTYPE", "DOC_PRIMARY_IDENTIFIER", "DOC_SECONDARY_IDENTIFIER", "IND_DISPLAY_NAME", "IND_GIVEN_NAME", "IND_FAMILY_NAME", "IND_MIDDLE_NAME", "IND_DATE_OF_BIRTH", "IND_NATIONALITY", "ORG_REGISTERED_SUBDIVISION", "ORG_REGISTERED_COUNTRY", "ORG_REGISTRATION_NUMBER", "ORG_REGISTRATION_NUMBER_TYPE", "ORG_NAME" ] }, "Supplementary-Data-Matchlist-Attribute": { "type": "object", "description": "Information about a matched attribute within a matched field.\n", "required": [ "type", "confidence" ], "properties": { "type": { "$ref": "#/components/schemas/Matchlist-Entry-Attribute-Type" }, "confidence": { "$ref": "#/components/schemas/Search-Confidence", "description": "Confidence score for the attribute match.\n" } } }, "Supplementary-Data-Matchlist-Field": { "type": "object", "description": "Entity data that resulted in a match at the time of execution.\n", "required": [ "objectId", "objectType" ], "properties": { "objectId": { "type": "string", "description": "Unique identifier of the matched object." }, "objectType": { "$ref": "#/components/schemas/Object-Type" }, "matchedAttributes": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-Matchlist-Attribute" } } } }, "Supplementary-Data-Matchlist": { "type": "object", "description": "Each match against a matchlist entry generates a PRO (Process Result Object), and this object describes the details of the matched entry.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "$ref": "#/components/schemas/Matchlist-Entry-Base" }, { "type": "object", "properties": { "matchlistId": { "type": "string", "format": "uuid", "description": "Unique identifier for the matchlist." }, "matchlistName": { "type": "string", "description": "Unique name of the matchlist." }, "matchlistAction": { "$ref": "#/components/schemas/Matchlist-Action" }, "confidence": { "$ref": "#/components/schemas/Search-Confidence" }, "matchedFields": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-Matchlist-Field" } } } } ] }, "Activity-ID": { "type": "string", "readOnly": true, "description": "Activity ID that identifies an activity within the FrankieOne platform", "format": "ulid" }, "Session": { "type": "object", "description": "Session details for an activity, this is always scoped to a singular entity.", "properties": { "token": { "type": "string", "description": "A token to identify the specific session for the activity" } } }, "Party-Detail-Individual": { "type": "object", "description": "Party details for an individual\n", "properties": { "name": { "$ref": "#/components/schemas/Individual-Name" }, "dateOfBirth": { "$ref": "#/components/schemas/Date-Of-Birth" } } }, "Party-Detail-Organization": { "type": "object", "description": "Party details for an organization\n", "properties": { "sourceId": { "type": "string", "description": "The source from where a specific information was sourced from. This is a link to an informationSource object in the informationSources map." }, "registeredName": { "type": "string", "description": "The registered name of the organization" }, "registeredSubdivision": { "description": "The subdivision that the organization was registered at", "type": "string" }, "registeredCountry": { "description": "The country that the organization was registered at", "type": "string" }, "registrationNumber": { "description": "The registration number of the organization in the registry", "type": "string" }, "registrationNumberType": { "description": "The type of the registration number, e.g. ACN, ABN, etc", "type": "string" }, "registrationNumberDescription": { "description": "The description of type of the registration number, e.g. Australian Company Number, Australian Business Number, etc", "type": "string" } } }, "Party-Detail-Summary": { "type": "object", "description": "A summary of the party details\n", "properties": { "entityId": { "$ref": "#/components/schemas/Entity-ID-Writeable" }, "entityType": { "$ref": "#/components/schemas/Entity-Type-Writeable" }, "externalReference": { "$ref": "#/components/schemas/External-Reference" }, "individual": { "$ref": "#/components/schemas/Party-Detail-Individual" }, "organization": { "$ref": "#/components/schemas/Party-Detail-Organization" }, "entityName": { "type": "string", "description": "The name of the entity, use this if the entity type is not clear" }, "createdAt": { "description": "When the entity was created", "type": "string", "format": "date-time" } } }, "Party-Detail-Contact": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "$ref": "#/components/schemas/Address" } }, "phoneNumbers": { "type": "array", "items": { "$ref": "#/components/schemas/Phone-Number" } }, "emailAddresses": { "type": "array", "items": { "$ref": "#/components/schemas/Email" } } } }, "Party-Detail": { "type": "object", "description": "A party describes the details of one of the parties in a given transaction. It can be used to \ndescribe any participant.\n\nA party can only either be an individual or an organization.\n\nTo evaluate a party, you need to provide the details about the party involved by:\n* Using an existing entity data: Include the entityId in the party object. The data will be extracted from the entity in the FrankieOne system.\n* Filling in the details: Include the specific details within the party object. Data provided here will take precedence over the entity data but will not enrich the entity details in the FrankieOne system.\n", "allOf": [ { "$ref": "#/components/schemas/Party-Detail-Summary" }, { "$ref": "#/components/schemas/Party-Detail-Contact" } ] }, "Activity-Type": { "type": "string", "description": "The different types of activities able to be monitored", "enum": [ "TRANSACTION", "EVENT" ] }, "Activity-Custom-Attribute-Type": { "type": "string", "enum": [ "STRING", "NUMBER", "BOOLEAN" ] }, "Activity-Custom-Attribute": { "type": "object", "required": [ "type", "value" ], "x-examples": { "Example 1": { "type": "STRING", "value": "premium-credit-card" } }, "properties": { "type": { "$ref": "#/components/schemas/Activity-Custom-Attribute-Type" }, "value": { "type": "string" } } }, "Activity-Custom-Attributes": { "type": "object", "description": "A set of key value pairs with a type provided. Do not store PII data in this field.\nValidation:\n- minLength: 1\n- maxLength: 64\n- pattern: '^[a-zA-Z][a-zA-Z0-9-]*$'\n", "additionalProperties": { "$ref": "#/components/schemas/Activity-Custom-Attribute" } }, "Activity-Detail-Base": { "type": "object", "required": [ "activityType" ], "properties": { "activityType": { "$ref": "#/components/schemas/Activity-Type" }, "customAttributes": { "$ref": "#/components/schemas/Activity-Custom-Attributes" }, "activityAt": { "type": "string", "format": "date-time", "description": "The timestamp that the activity occurred in UTC ISO8601 format" } } }, "Event-Type": { "type": "string", "description": "The type of event that has occurred", "enum": [ "LOGIN", "LOGOUT", "SIGNUP", "PASSWORD_RESET", "PASSWORD_CHANGE", "ADDRESS_CHANGE", "PHONE_CHANGE", "EMAIL_CHANGE", "ACCOUNT_UPDATE", "2FA_UPDATE", "PAYMENT_METHOD_LINK" ] }, "Event": { "type": "object", "description": "An event represents a non-financial event in the customers platform.", "required": [ "eventType" ], "properties": { "eventType": { "$ref": "#/components/schemas/Event-Type" } } }, "Activity-Event": { "type": "object", "description": "An activity detailing an event, use for non-transactional activities or user behavior monitoring. \n\nExamples: User registration, login, profile updates, password resets.\n", "allOf": [ { "$ref": "#/components/schemas/Activity-Detail-Base" }, { "$ref": "#/components/schemas/Event" } ] }, "Currency": { "type": "string", "description": "3-digit ISO 4217 currency code or crypto symbol", "example": [ "BTC", "USD", "ETH", "AUD" ] }, "Currency-Type": { "type": "string", "description": "Indicates the type of currency", "enum": [ "FIAT", "CRYPTO" ] }, "Transaction-Method": { "type": "string", "description": "The method of payment used for the transaction", "enum": [ "CARD_DEBIT", "CARD_CREDIT", "CARD_PREPAID", "BANK_TRANSFER", "WIRE", "CRYPTO", "WALLET", "ACH", "ECHECK", "REMITTANCE", "CASH" ] }, "Transaction-Account-Type": { "type": "string", "description": "The type of the account that was used in the financial transaction.", "enum": [ "CHECKING", "SAVINGS", "CRYPTO_WALLET", "TRUST", "CARD", "OTHER" ] }, "Transaction-Account-Summary": { "type": "object", "description": "Account details", "properties": { "type": { "$ref": "#/components/schemas/Transaction-Account-Type" }, "pan": { "type": "string", "description": "The primary account number (PAN) / crypto wallet of the party at the source service" } } }, "Transaction-Account-Class": { "type": "string", "description": "The class of the account", "enum": [ "PERSONAL", "BUSINESS", "OTHER" ] }, "Transaction-Account-ExternalId-Type": { "type": "string", "description": "An Account External ID type, usually associated with a PayID type.", "enum": [ "EXTERNAL_ID_NUMBER", "EXTERNAL_MOBILE", "EXTERNAL_EMAIL", "EXTERNAL_REGISTRATION_NUMBER" ] }, "Transaction-Account": { "type": "object", "description": "Account details", "allOf": [ { "$ref": "#/components/schemas/Transaction-Account-Summary" }, { "type": "object", "properties": { "hashedPan": { "type": "string", "description": "The Sha-256 hash of card number (PAN) of the party at the source service" }, "maskedPan": { "type": "string", "description": "The masked card number (PAN) of the party at the source service" }, "route": { "type": "string", "description": "The branch/BIN/BSB identifier to go with the pan" }, "iban": { "type": "string", "description": "The IBAN identifier to go with the pan" }, "swiftCode": { "type": "string", "description": "The Swift code identifier (or BIC - Bank Identifier Code) to go with the pan" }, "name": { "type": "string", "description": "The name of the account/card", "maxLength": 64 }, "class": { "$ref": "#/components/schemas/Transaction-Account-Class" }, "externalIdentifier": { "type": "string", "description": "If there is an external identifier associated with this account (e.g. PayID for an NPP transaction), then include that here", "maxLength": 100 }, "externalIdentifierType": { "$ref": "#/components/schemas/Transaction-Account-ExternalId-Type" } } } ] }, "Transaction-Type": { "type": "string", "description": "The type of movement of funds", "enum": [ "WITHDRAWAL", "DEPOSIT" ] }, "Transaction-Merchant-Industry-Code": { "type": "object", "description": "A merchant industry code and description pair. (e.g. MCC, ANZSIC)", "properties": { "code": { "description": "Short standard code or normalized representation of the information", "type": "string" }, "description": { "description": "The information relevant to the code, could be a more descriptive information", "type": "string" }, "type": { "description": "Determines the type of the industry code.", "type": "string" } } }, "Transaction-Merchant-Details": { "type": "object", "description": "A merchant reflects details of the merchant owner.", "properties": { "merchantIdentifier": { "type": "string", "description": "The merchant identifier of the merchant owner." }, "industryCodes": { "type": "array", "items": { "$ref": "#/components/schemas/Transaction-Merchant-Industry-Code" } } } }, "Transaction": { "type": "object", "description": "A transaction represents the details of a deposit or withdrawal of a entity.", "required": [ "amount", "currency", "currencyType", "transactionType", "transferMethod", "transactionIdentifier" ], "properties": { "amount": { "type": "number", "format": "double", "description": "The amount to be applied to the party" }, "currency": { "$ref": "#/components/schemas/Currency" }, "currencyType": { "$ref": "#/components/schemas/Currency-Type" }, "transferMethod": { "$ref": "#/components/schemas/Transaction-Method" }, "counterpartyAmount": { "type": "number", "format": "double", "description": "The amount to be applied to the party" }, "counterpartyCurrency": { "$ref": "#/components/schemas/Currency" }, "counterpartyCurrencyType": { "$ref": "#/components/schemas/Currency-Type" }, "counterpartyTransferMethod": { "$ref": "#/components/schemas/Transaction-Method" }, "description": { "type": "string", "description": "Short description of the payment from the perspective of the\nparty, or any attached reference details.\n", "maxLength": 240 }, "account": { "$ref": "#/components/schemas/Transaction-Account" }, "transactionType": { "$ref": "#/components/schemas/Transaction-Type" }, "merchant": { "$ref": "#/components/schemas/Transaction-Merchant-Details" }, "transactionIdentifier": { "type": "string", "description": "A payment identifier supplied by an external party / source to associate with this party in the transaction.\nThis should be a unique reference for the customer to tie their transaction records to FrankieOne data." } } }, "Counter-Party-Detail": { "type": "object", "description": "A party describes the details of one of the parties in a given transaction (natch). It can be used to \ndescribe any participant and is differentiated by the paymentRole fulfilled.\n\nYou can either provide the raw entity ID as a reference or fill in the details. If an entity ID is provided,\nthe data will be extracted from the entity in the FrankieOne system. Data provided here will take precedence \nover the entity data but will not enrich the entity details in the FrankieOne system.\n", "allOf": [ { "$ref": "#/components/schemas/Party-Detail" }, { "type": "object", "properties": { "account": { "$ref": "#/components/schemas/Transaction-Account" } } } ] }, "Transaction-Details": { "type": "object", "description": "Transaction details", "required": [ "transaction" ], "properties": { "transaction": { "$ref": "#/components/schemas/Transaction" }, "counterparty": { "$ref": "#/components/schemas/Counter-Party-Detail" } } }, "Activity-Transaction": { "type": "object", "description": "An activity detailing a transaction, use for financial activities and asset movements.\n\nExamples: Deposits, withdrawals (fiat or crypto), payments, fund transfers.\n", "allOf": [ { "$ref": "#/components/schemas/Activity-Detail-Base" }, { "$ref": "#/components/schemas/Transaction-Details" } ] }, "Activity-Detail": { "type": "object", "description": "Details of the activity being checked", "oneOf": [ { "$ref": "#/components/schemas/Activity-Event" }, { "$ref": "#/components/schemas/Activity-Transaction" } ], "discriminator": { "propertyName": "activityType", "mapping": { "EVENT": "#/components/schemas/Activity-Event", "TRANSACTION": "#/components/schemas/Activity-Transaction" } } }, "Behavior-Biometrics": { "type": "object", "properties": { "hesitationPercentileLongTermMemory": { "type": "number", "description": "The hesitation percentile for fields like address, name, etc which\nare associated with long term memory.\n" }, "hesitationPercentileNonLongTermMemory": { "type": "number", "description": "The hesitation percentile for fields like amount fields which\nare not associated with long term memory.\n" }, "numberDistractionEvents": { "type": "integer" } } }, "Likelihood": { "type": "string", "description": "Likelihood of a particular scenario\n", "enum": [ "LOW", "MEDIUM", "HIGH", "VERY_HIGH", "UNKNOWN" ] }, "Device-Indicators": { "type": "object", "properties": { "riskScore": { "type": "integer", "description": "Risk score as determine by the device checking service" }, "riskLevel": { "$ref": "#/components/schemas/Risk-Level" }, "behaviorBiometrics": { "$ref": "#/components/schemas/Behavior-Biometrics" }, "isRat": { "type": "boolean", "description": "Was the device user determined to be a rat?" }, "isSupported": { "type": "boolean", "description": "Was the device supported or not?" }, "isEmulated": { "type": "boolean", "description": "Was the device determined to be real or emulated?" }, "isRooted": { "type": "boolean", "description": "Was the device determined to be rooted?" }, "reputation": { "type": "string", "description": "The reputation of the device" }, "vpnLikelihood": { "$ref": "#/components/schemas/Likelihood" }, "proxyLikelihood": { "$ref": "#/components/schemas/Likelihood" }, "botLikelihood": { "$ref": "#/components/schemas/Likelihood" } } }, "Device-ID": { "type": "string", "description": "ID of the device", "format": "ulid" }, "Device-Properties": { "type": "object", "description": "Device properties", "properties": { "deviceId": { "$ref": "#/components/schemas/Device-ID" }, "sourceId": { "type": "string", "description": "The source from where a specific information was sourced from. This is a link to an informationSource object in the informationSources map." }, "providerName": { "type": "string", "description": "The name of the provider" }, "externalIdentifiers": { "type": "array", "items": { "$ref": "#/components/schemas/External-Reference-Information" } }, "os": { "type": "string", "description": "the device operating system" }, "trueOs": { "type": "string", "description": "the true OS of the device" }, "firstSeenAt": { "type": "string", "format": "date-time", "description": "the first time the device was seen in the provider network" }, "browser": { "type": "string", "description": "the device browser (if relevant)" }, "platform": { "type": "string", "description": "the device platform" }, "model": { "type": "string", "description": "the device model" }, "fingerprint": { "type": "string", "description": "the device fingerprint" }, "fingerprintConfidence": { "type": "number", "description": "the confidence of the fingerprint" } } }, "Device-Detail": { "type": "object", "description": "Device details", "allOf": [ { "$ref": "#/components/schemas/Device-Indicators" }, { "$ref": "#/components/schemas/Device-Properties" } ] }, "Geolocation": { "type": "object", "description": "Geolocation details if it can be determined, typically related to a device during an activity", "properties": { "city": { "type": "string", "description": "The city", "example": [ "Melbourne", "San Francisco" ] }, "country": { "type": "string", "description": "The country in alpha 3 ISO-3166-1 standard", "example": [ "AUS", "USA" ] }, "subdivision": { "type": "string", "description": "The subdivision", "example": [ "Victoria", "California" ] }, "latitude": { "type": "number", "format": "double", "description": "The latitude" }, "longitude": { "type": "number", "format": "double", "description": "The longitude" } } }, "IP-Information": { "type": "object", "description": "IP information, typically in relation to a device", "properties": { "v4Address": { "type": "string", "description": "The IPv4 address", "format": "ipv4" }, "v6Address": { "type": "string", "description": "The IPv6 address", "format": "ipv6" }, "trueAddress": { "type": "string", "description": "The true IP address" }, "asn": { "type": "string", "description": "The ASN of the IP address" }, "connectionType": { "type": "string", "description": "The type of IP connection (if available)", "example": [ "Fixed Line ISP" ] }, "location": { "$ref": "#/components/schemas/Geolocation" } } }, "Device": { "type": "object", "description": "Device information associated with an activity, used for submitting device checks using an external service.\n", "allOf": [ { "$ref": "#/components/schemas/Device-Detail" }, { "type": "object", "properties": { "geolocation": { "$ref": "#/components/schemas/Geolocation" }, "ipAddressInformation": { "$ref": "#/components/schemas/IP-Information" }, "createdAt": { "type": "string", "description": "the time the device was created in UTC ISO8601 format", "format": "date-time", "readOnly": true } } } ] }, "Activity-Base": { "type": "object", "required": [ "party", "detail" ], "description": "Activity details", "properties": { "activityId": { "$ref": "#/components/schemas/Activity-ID" }, "session": { "$ref": "#/components/schemas/Session" }, "party": { "$ref": "#/components/schemas/Party-Detail" }, "detail": { "$ref": "#/components/schemas/Activity-Detail" }, "device": { "$ref": "#/components/schemas/Device" }, "activityRequestId": { "type": "string", "format": "ulid", "description": "The request ID associated to the activity being submitted" } } }, "Evaluation-ID": { "type": "string", "description": "The ID of the evaluation", "readOnly": true, "format": "ulid" }, "Activity-Result-ID": { "type": "string", "readOnly": true, "description": "Activity Result ID that identifies a result from an evaluation of an activity", "format": "ulid" }, "Result-Reference-Type": { "type": "string", "description": "The type of the reference (e.g. url)", "enum": [ "URL", "REFERENCE" ] }, "Result-Reference": { "type": "object", "properties": { "name": { "type": "string", "description": "The source of the result (e.g. sardine)" }, "type": { "$ref": "#/components/schemas/Result-Reference-Type" }, "reference": { "type": "string", "description": "A link or reference to the source of the result. \nThe format will depend on the source and the reference type.\n" } } }, "Indicator-ID": { "type": "string", "readOnly": true, "format": "ulid", "description": "Indicator ID that identifies an indicator from a check on an activity" }, "Rule-ID": { "type": "string", "readOnly": true, "format": "ulid", "description": "Rule ID that identifies an instance of a rule within the FrankieOne platform" }, "Supplementary-Data-Activity-Result-Detail-Rule": { "type": "object", "properties": { "ruleId": { "$ref": "#/components/schemas/Rule-ID" }, "reference": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "isActive": { "type": "boolean" } } }, "Supplementary-Data-Activity-Result-Detail-Indicator": { "type": "object", "properties": { "indicatorId": { "$ref": "#/components/schemas/Indicator-ID" }, "name": { "type": "string" }, "value": { "type": "string" }, "score": { "type": "string" }, "rules": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-Activity-Result-Detail-Rule" } } } }, "Supplementary-Data-Activity-Result-Detail": { "type": "object", "properties": { "riskLevel": { "$ref": "#/components/schemas/Risk-Level" }, "evaluationId": { "$ref": "#/components/schemas/Evaluation-ID" }, "activityResultId": { "$ref": "#/components/schemas/Activity-Result-ID" }, "reference": { "$ref": "#/components/schemas/Result-Reference" }, "indicators": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-Activity-Result-Detail-Indicator" } } } }, "Supplementary-Data-Activity-AML": { "type": "object", "description": "Provides details of an activity Anti-Money Laundering (AML) result.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "activity": { "$ref": "#/components/schemas/Activity-Base" }, "result": { "$ref": "#/components/schemas/Supplementary-Data-Activity-Result-Detail" } } } ] }, "Supplementary-Data-Activity-Fraud": { "type": "object", "description": "Defines the details of an activity fraud result.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "activity": { "$ref": "#/components/schemas/Activity-Base" }, "result": { "$ref": "#/components/schemas/Supplementary-Data-Activity-Result-Detail" } } } ] }, "Supplementary-Data-Activity-Event": { "type": "object", "description": "Defines the details of an activity device result.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "activity": { "$ref": "#/components/schemas/Activity-Base" }, "result": { "$ref": "#/components/schemas/Supplementary-Data-Activity-Result-Detail" } } } ] }, "Session-Data": { "type": "object", "description": "Session data for an activity, this is always scoped to a singular entity.", "allOf": [ { "$ref": "#/components/schemas/Session" }, { "type": "object", "properties": { "sessionId": { "type": "string", "description": "A FrankieOne ID for the session", "format": "ulid", "readOnly": true }, "providerName": { "type": "string" }, "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "createdAt": { "type": "string", "description": "the time the session was created in UTC ISO8601 format", "format": "date-time", "readOnly": true }, "expiresAt": { "type": "string", "description": "the time the session expires in UTC ISO8601 format", "format": "date-time", "readOnly": true } } } ] }, "Supplementary-Data-Fraud-Device-Data": { "type": "object", "description": "Provides details of a single fraud check for device and related device data.\n", "properties": { "device": { "$ref": "#/components/schemas/Device" }, "session": { "$ref": "#/components/schemas/Session-Data" }, "indicators": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-Activity-Result-Detail-Indicator" } }, "riskLevel": { "$ref": "#/components/schemas/Risk-Level" }, "reference": { "$ref": "#/components/schemas/Result-Reference" } } }, "Supplementary-Data-Fraud-Device": { "type": "object", "description": "Provides details of a single device fraud check.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "$ref": "#/components/schemas/Supplementary-Data-Fraud-Device-Data" } ] }, "Supplementary-Data-Fraud-Email-Address": { "type": "object", "description": "Defines the details of a single email fraud check.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "emailAddressId": { "$ref": "#/components/schemas/Email-Address-ID" }, "riskLevel": { "$ref": "#/components/schemas/Risk-Level" }, "reference": { "$ref": "#/components/schemas/Result-Reference" }, "indicators": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-Activity-Result-Detail-Indicator" } } } } ] }, "Supplementary-Data-Fraud-IP-Address-Data": { "type": "object", "description": "Defines the details of a single fraud check for IP address related data.\n", "properties": { "deviceId": { "$ref": "#/components/schemas/Device-ID" }, "ipAddressInformation": { "$ref": "#/components/schemas/IP-Information" }, "session": { "$ref": "#/components/schemas/Session-Data" }, "indicators": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-Activity-Result-Detail-Indicator" } }, "riskLevel": { "$ref": "#/components/schemas/Risk-Level" }, "reference": { "$ref": "#/components/schemas/Result-Reference" } } }, "Supplementary-Data-Fraud-IP-Address": { "type": "object", "description": "Defines the details of a single IP address fraud check.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "$ref": "#/components/schemas/Supplementary-Data-Fraud-IP-Address-Data" } ] }, "Supplementary-Data-Fraud-Phone-Number": { "type": "object", "description": "Defines the details of a single phone number fraud check.\n", "allOf": [ { "$ref": "#/components/schemas/Supplementary-Data-Base" }, { "type": "object", "properties": { "phoneNumberId": { "$ref": "#/components/schemas/Phone-Number-ID" }, "riskLevel": { "$ref": "#/components/schemas/Risk-Level" }, "reference": { "$ref": "#/components/schemas/Result-Reference" }, "indicators": { "type": "array", "items": { "$ref": "#/components/schemas/Supplementary-Data-Activity-Result-Detail-Indicator" } } } } ] }, "Supplementary-Data": { "type": "object", "readOnly": true, "oneOf": [ { "$ref": "#/components/schemas/Supplementary-Data-AML" }, { "$ref": "#/components/schemas/Supplementary-Data-KYC-Address" }, { "$ref": "#/components/schemas/Supplementary-Data-KYC-DoB" }, { "$ref": "#/components/schemas/Supplementary-Data-KYC-Gender" }, { "$ref": "#/components/schemas/Supplementary-Data-KYC-Name" }, { "$ref": "#/components/schemas/Supplementary-Data-ID" }, { "$ref": "#/components/schemas/Supplementary-Data-Visa" }, { "$ref": "#/components/schemas/Supplementary-Data-NameValidation" }, { "$ref": "#/components/schemas/Supplementary-Data-KYB-Organization" }, { "$ref": "#/components/schemas/Supplementary-Data-Duplicate" }, { "$ref": "#/components/schemas/Supplementary-Data-IDV-Document" }, { "$ref": "#/components/schemas/Supplementary-Data-IDV-Facial-Comparison" }, { "$ref": "#/components/schemas/Supplementary-Data-IDV-Facial-Liveness" }, { "$ref": "#/components/schemas/Supplementary-Data-IDV-OCR" }, { "$ref": "#/components/schemas/Supplementary-Data-IDV-OCR-Comparison" }, { "$ref": "#/components/schemas/Supplementary-Data-Matchlist" }, { "$ref": "#/components/schemas/Supplementary-Data-Activity-AML" }, { "$ref": "#/components/schemas/Supplementary-Data-Activity-Fraud" }, { "$ref": "#/components/schemas/Supplementary-Data-Activity-Event" }, { "$ref": "#/components/schemas/Supplementary-Data-Fraud-Device" }, { "$ref": "#/components/schemas/Supplementary-Data-Fraud-Email-Address" }, { "$ref": "#/components/schemas/Supplementary-Data-Fraud-IP-Address" }, { "$ref": "#/components/schemas/Supplementary-Data-Fraud-Phone-Number" } ], "discriminator": { "propertyName": "type", "mapping": { "AML": "#/components/schemas/Supplementary-Data-AML", "KYC_ADDRESS": "#/components/schemas/Supplementary-Data-KYC-Address", "KYC_DOB": "#/components/schemas/Supplementary-Data-KYC-DoB", "KYC_GENDER": "#/components/schemas/Supplementary-Data-KYC-Gender", "KYC_NAME": "#/components/schemas/Supplementary-Data-KYC-Name", "ID": "#/components/schemas/Supplementary-Data-ID", "VISA": "#/components/schemas/Supplementary-Data-Visa", "NAME_VALIDATION": "#/components/schemas/Supplementary-Data-NameValidation", "KYB_ORGANIZATION": "#/components/schemas/Supplementary-Data-KYB-Organization", "DUPLICATE": "#/components/schemas/Supplementary-Data-Duplicate", "IDV_DOCUMENT": "#/components/schemas/Supplementary-Data-IDV-Document", "IDV_FACIAL_COMPARISON": "#/components/schemas/Supplementary-Data-IDV-Facial-Comparison", "IDV_FACIAL_LIVENESS": "#/components/schemas/Supplementary-Data-IDV-Facial-Liveness", "IDV_OCR": "#/components/schemas/Supplementary-Data-IDV-OCR", "IDV_OCR_COMPARISON": "#/components/schemas/Supplementary-Data-IDV-OCR-Comparison", "MATCHLIST": "#/components/schemas/Supplementary-Data-Matchlist", "ACTIVITY_AML": "#/components/schemas/Supplementary-Data-Activity-AML", "ACTIVITY_FRAUD": "#/components/schemas/Supplementary-Data-Activity-Fraud", "ACTIVITY_EVENT": "#/components/schemas/Supplementary-Data-Activity-Event", "FRAUD_DEVICE": "#/components/schemas/Supplementary-Data-Fraud-Device", "FRAUD_EMAIL_ADDRESS": "#/components/schemas/Supplementary-Data-Fraud-Email-Address", "FRAUD_IP_ADDRESS": "#/components/schemas/Supplementary-Data-Fraud-IP-Address", "FRAUD_PHONE_NUMBER": "#/components/schemas/Supplementary-Data-Fraud-Phone-Number" } } }, "Process-Result-Error": { "type": "object", "properties": { "code": { "type": "string", "description": "The error code associated with the process result." }, "description": { "type": "string", "description": "A description of the error." }, "location": { "type": "string", "description": "The location or context where the error occurred." } } }, "Process-Result-System-StatusEnum": { "type": "string", "description": "If there has been an additional system status applied to the process.\n- VALID: The process result is valid and has not been marked for any special handling.\n- EXPIRED: The process result has expired and is no longer valid.\n- STALE: The process result is considered stale, meaning it may be outdated but not necessarily invalid.\n- MARKED_INVALID: The process result has been explicitly marked as invalid.\n- MARKED_IGNORE: The process result has been marked to be ignored, meaning it should not be considered in further processing.\n", "enum": [ "VALID", "EXPIRED", "STALE", "MARKED_INVALID", "MARKED_IGNORE" ], "default": "VALID", "readOnly": true }, "Process-Result-Manual-StatusEnum-AML": { "type": "string", "enum": [ "TRUE_POSITIVE", "FALSE_POSITIVE", "TRUE_POSITIVE_ACCEPT", "TRUE_POSITIVE_REJECT", "UNKNOWN", "UNKNOWN_ACCEPT", "UNKNOWN_REJECT" ], "description": "The manual status that the AML process result should be set to after the results have been reviewed.\n- FALSE_POSITIVE: The result is determined to be a false positive, but you do not necessarily want to resolve it.\n- TRUE_POSITIVE_ACCEPT: The result is determined to be a true positive and you want to resolve it. \"Accept\" infers you want to accept the activity.\n- TRUE_POSITIVE: The result is determined to be a true positive, but you do not necessarily want to resolve it.\n- TRUE_POSITIVE_REJECT: The result is determined to be a true positive and you want to resolve it. \"Reject\" infers you want to reject the activity.\n- UNKNOWN: The result is determined to be unknown, but you do not necessarily want to resolve it.\n- UNKNOWN_ACCEPT: The result is determined to be unknown and you want to resolve it. \"Accept\" infers you want to accept the activity.\n- UNKNOWN_REJECT: The result is determined to be unknown and you want to resolve it. \"Reject\" infers you want to reject the activity.\n" }, "Process-Result-Manual-StatusEnum-KYC": { "type": "string", "enum": [ "PASS", "FAIL" ], "description": "Any manual status set after the results have been reviewed.\n- PASS: When the result is determined to be a pass and no further action is needed.\n- FAIL: When the result is determined to be a fail and no further action is needed.\n" }, "Process-Result-Manual-StatusEnum-IDV": { "type": "string", "enum": [ "CLEAR", "REJECTED" ], "description": "Any manual status set after the results have been reviewed.\n- CLEAR: When the result is determined to be clear and no further action is needed.\n- REJECTED: When the result is determined to be rejected and no further action is needed.\n" }, "Process-Result-Manual-StatusEnum-Duplicate": { "type": "string", "enum": [ "FALSE_POSITIVE", "TRUE_POSITIVE_ACCEPT", "TRUE_POSITIVE_REJECT" ], "description": "Manual review status options for duplicate entity resolution. Used to indicate the outcome of a manual duplicate check between an existing entity (A) and an incoming entity (B):\n- FALSE_POSITIVE: Entities are not duplicates. Both Entity A and Entity B are distinct and should be retained as separate records.\n- TRUE_POSITIVE_ACCEPT: Entities are duplicates. Keep the incoming entity (Entity B) as the primary record and mark the existing entity (Entity A) as the duplicate. Use when the incoming record is more accurate or complete.\n- TRUE_POSITIVE_REJECT: Entities are duplicates. Keep the existing entity (Entity A) as the primary record and mark the incoming entity (Entity B) as the duplicate. Use when the existing record is more trusted or complete.\n" }, "Process-Result-Manual-StatusEnum-Matchlist": { "type": "string", "enum": [ "FALSE_POSITIVE", "TRUE_POSITIVE_REJECT" ], "description": "Any manual status set after the results have been reviewed.\n- FALSE_POSITIVE: The result is determined to be a false positive, but you do not necessarily want to resolve it.\n- TRUE_POSITIVE_REJECT: The result is determined to be a true positive and you want to resolve it. \"Reject\" infers you want to reject the activity.\n" }, "Process-Result-Manual-StatusEnum-SupportDoc": { "type": "string", "enum": [ "APPROVED", "REJECTED", "NEEDS_ATTENTION" ], "description": "Any manual status set after the results have been reviewed.\n- APPROVED: When the document has been reviewed and is acceptable.\n- REJECTED: When the document has been reviewed and is deemed to be not acceptable.\n- NEEDS_ATTENTION: When the document has been reviewed and requires further attention.\n" }, "Process-Result-Manual-StatusEnum": { "allOf": [ { "$ref": "#/components/schemas/Process-Result-Manual-StatusEnum-AML" }, { "$ref": "#/components/schemas/Process-Result-Manual-StatusEnum-KYC" }, { "$ref": "#/components/schemas/Process-Result-Manual-StatusEnum-IDV" }, { "$ref": "#/components/schemas/Process-Result-Manual-StatusEnum-Duplicate" }, { "$ref": "#/components/schemas/Process-Result-Manual-StatusEnum-Matchlist" }, { "$ref": "#/components/schemas/Process-Result-Manual-StatusEnum-SupportDoc" } ] }, "Process-Result-StateEnum": { "type": "string", "readOnly": true, "description": "Denotes the final disposition of this element's check result", "enum": [ "IN_PROGRESS", "COMPLETED", "TIMEOUT", "ERROR" ] }, "Process-Risk-Factor-Value": { "type": "object", "description": "Risk Factor Value", "required": [ "factor", "value" ], "properties": { "factor": { "type": "string", "description": "Name of the risk factor." }, "value": { "type": "string", "description": "Supplier/service provided value that Frankie will plug into the risk engine to determine a score." } } }, "Process-Result-Object": { "type": "object", "properties": { "processResultId": { "$ref": "#/components/schemas/Process-Result-ID" }, "schemaVersion": { "type": "integer", "readOnly": true }, "entityId": { "type": "string", "readOnly": true }, "requestId": { "$ref": "#/components/schemas/Request-ID", "readOnly": true }, "stepName": { "type": "string", "readOnly": true }, "stepType": { "type": "string", "readOnly": true }, "objectType": { "type": "string", "readOnly": true }, "objectId": { "type": "string", "readOnly": true }, "createdAt": { "type": "string", "format": "date-time", "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "readOnly": true }, "groupId": { "type": "string", "readOnly": true }, "providerResult": { "$ref": "#/components/schemas/Provider-Result" }, "result": { "$ref": "#/components/schemas/Process-ResultEnum" }, "class": { "$ref": "#/components/schemas/Process-Result-ClassEnum" }, "supplementaryData": { "$ref": "#/components/schemas/Supplementary-Data" }, "errors": { "type": "array", "items": { "$ref": "#/components/schemas/Process-Result-Error" }, "readOnly": true }, "notes": { "readOnly": true, "allOf": [ { "$ref": "#/components/schemas/Custom-Attributes" } ] }, "systemStatus": { "$ref": "#/components/schemas/Process-Result-System-StatusEnum" }, "manualStatus": { "$ref": "#/components/schemas/Process-Result-Manual-StatusEnum" }, "state": { "$ref": "#/components/schemas/Process-Result-StateEnum" }, "riskFactors": { "type": "array", "items": { "$ref": "#/components/schemas/Process-Risk-Factor-Value" }, "readOnly": true }, "updatedBy": { "type": "string", "readOnly": true } } }, "Workflow-Execution-Step-Result": { "type": "object", "properties": { "stepResultId": { "type": "string", "description": "Unique identifier for this step result." }, "workflowExecutionId": { "type": "string", "description": "Identifier of the associated workflow execution." }, "stepName": { "type": "string", "description": "The name of the step, in SCREAMING_SNAKE_CASE." }, "requestId": { "type": "string", "description": "Identifier of the request associated with this step." }, "objectType": { "$ref": "#/components/schemas/Workflow-Execution-ObjectTypeEnum", "description": "Type of the primary object checked in this step." }, "objectId": { "type": "string", "description": "Identifier of the object checked in this step." }, "schemaVersion": { "type": "integer", "description": "Version of the schema used for this step." }, "startedAt": { "type": "string", "format": "date-time", "description": "Date and time when this step started." }, "endedAt": { "type": "string", "format": "date-time", "description": "Date and time when this step ended." }, "serviceProviders": { "type": "array", "description": "List of service providers involved in this step.", "items": { "$ref": "#/components/schemas/Service-Providers" } }, "result": { "$ref": "#/components/schemas/Workflow-Step-ResultEnum", "description": "Result of this workflow step." }, "errors": { "type": "array", "description": "List of errors encountered during this step.", "items": { "$ref": "#/components/schemas/Workflow-Errors" } }, "summary": { "$ref": "#/components/schemas/Workflow-Step-Summary", "description": "Summary of the workflow step." }, "risk": { "$ref": "#/components/schemas/Workflow-Step-Risk-Result", "description": "Risk assessment result for this step." }, "notes": { "$ref": "#/components/schemas/Custom-Attributes", "description": "Additional notes or custom attributes for this step." }, "processResults": { "type": "array", "description": "List of process result objects for this step.", "items": { "$ref": "#/components/schemas/Process-Result-Object" } }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when this step result was created." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Date and time when this step result was last updated." }, "updatedBy": { "type": "string", "description": "Identifier of the user or system that last updated this step result." } } }, "Workflow-Execution-Result": { "type": "object", "required": [ "workflowExecutionId", "workflowId", "requestId", "entityId", "entityType", "schemaVersion", "startedAt", "serviceProfileId", "workflowName", "result", "workflowExecutionState", "createdAt" ], "properties": { "workflowExecutionId": { "type": "string", "description": "Unique identifier for the workflow execution." }, "workflowId": { "type": "string", "description": "Identifier of the workflow definition." }, "requestId": { "type": "string", "description": "Identifier of the request that initiated the workflow." }, "entityId": { "type": "string", "description": "Identifier of the entity being processed." }, "entityType": { "$ref": "#/components/schemas/Entity-Type", "description": "Type of the entity being processed." }, "schemaVersion": { "type": "integer", "description": "Version of the schema used for this workflow execution." }, "startedAt": { "type": "string", "format": "date-time", "description": "Date and time when the workflow execution started." }, "endedAt": { "type": "string", "format": "date-time", "description": "Date and time when the workflow execution ended." }, "serviceProfileId": { "type": "string", "description": "Identifier of the service profile used." }, "endWorkflowId": { "type": "string", "description": "Identifier of the workflow that ended." }, "endWorkflowName": { "type": "string", "description": "Name of the workflow that ended." }, "workflowName": { "type": "string", "readOnly": true, "description": "Name of the workflow." }, "workflowStepResults": { "type": "array", "items": { "$ref": "#/components/schemas/Workflow-Execution-Step-Result" }, "description": "List of results for each workflow step." }, "result": { "$ref": "#/components/schemas/Workflow-Execution-ResultEnum", "description": "Final result of the workflow execution." }, "workflowExecutionState": { "$ref": "#/components/schemas/Workflow-Execution-StateEnum", "description": "Current state of the workflow execution." }, "errors": { "type": "array", "items": { "$ref": "#/components/schemas/Workflow-Errors" }, "description": "List of errors encountered during workflow execution." }, "notes": { "$ref": "#/components/schemas/Custom-Attributes", "description": "Additional notes or custom attributes related to the workflow execution." }, "createdAt": { "type": "string", "format": "date-time", "description": "Date and time when the workflow execution record was created." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Date and time when the workflow execution record was last updated." }, "updatedBy": { "type": "string", "description": "Identifier of the user or system that last updated the workflow execution record." } } }, "Workflow-Result": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/Workflow-Execution-Summary" }, { "$ref": "#/components/schemas/Workflow-Execution-Result" } ] }, "Workflow-Execution-ID": { "type": "string", "description": "The execution ID (formerly known as Check ID) representing a single workflow execution instance.\n", "example": "e39b46ca-514b-4730-8caf-7ab423831ff1", "readOnly": true }, "List-Operation-Meta": { "type": "object", "description": "Meta information about the request and response returned during a list operation.", "properties": { "page": { "type": "integer", "description": "The current page number of the request." }, "total": { "type": "integer", "description": "The total number of items found for the search criteria." }, "limit": { "type": "integer", "description": "The limit applied to this response." }, "count": { "type": "integer", "description": "The number of items returned in this response." }, "sort": { "type": "string", "enum": [ "asc", "desc" ], "description": "The sort order applied to the items in the response." }, "sortFields": { "type": "array", "items": { "type": "string", "enum": [ "createdAt", "updatedAt" ] } } } }, "Workflow-Execution-State": { "type": "string", "description": "Indicates the current state of this workflow execution.\nRefer to the documentation for a full description of each possible workflow execution state.\n", "example": "INPROGRESS", "readOnly": true }, "Service-Profile-State-Patch": { "type": "string", "description": "Current state of the Service Profile. This is a restricted set that can be changed externally.", "enum": [ "ARCHIVED", "INACTIVE" ] }, "Service-Profile-Patch": { "type": "object", "properties": { "assignee": { "type": "string", "description": "The name of the officer assigned to approve this profile", "example": "Ryan Gosling" }, "reviewer": { "type": "string", "description": "The name of the officer assigned to review this profile", "example": "Ryan Trahan" }, "currentWorkflowName": { "type": "string" }, "state": { "$ref": "#/components/schemas/Service-Profile-State-Patch" } } }, "Manual-KYC": { "type": "object", "description": "Provides a list of approved identity documents used in the manual KYC (mKYC) verification of this individual. The approved documents must be present on the entity for the mKYC process to be successful.", "required": [ "approvedBy", "approvedDocuments" ], "properties": { "approvedBy": { "type": "string", "description": "The person or system who approved the mKYC verification process." }, "approvedDocuments": { "type": "array", "items": { "type": "string", "format": "uuid" }, "description": "The identity documents that were approved as part of the mKYC verification process." }, "comment": { "$ref": "#/components/schemas/Comment" } } }, "Process-Result-Manual-StatusEnum-Fraud": { "type": "string", "enum": [ "FALSE_POSITIVE", "TRUE_POSITIVE_ACCEPT", "TRUE_POSITIVE_REJECT" ], "description": "The status that the fraud process result should be set to after the results have been reviewed.\n- FALSE_POSITIVE: When the result is determined to be false positive and it is an acceptable risk.\n- TRUE_POSITIVE_ACCEPT: When the result is determined to be true positive and it is an acceptable risk.\n- TRUE_POSITIVE_REJECT: When the result is determined to be true positive and it is an unacceptable risk.\n" }, "individual_pro_fraud_req": { "type": "object", "required": [ "processResults", "manualStatus" ], "properties": { "processResults": { "description": "The process result IDs to update. These are the PROs created when a fraud has been found.", "type": "array", "items": { "type": "string", "format": "UUID" } }, "manualStatus": { "$ref": "#/components/schemas/Process-Result-Manual-StatusEnum-Fraud" }, "comment": { "$ref": "#/components/schemas/Comment" } } }, "individual_pro_fraud_res": { "type": "object", "required": [ "requestId", "processResults" ], "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "processResults": { "type": "array", "items": { "$ref": "#/components/schemas/Process-Result-Object" } } } }, "Consent-Type-Param": { "type": "string", "enum": [ "GENERAL", "DOCS", "CREDITHEADER", "UNDER18", "PAYROLL", "INSURANCE", "SUPERANNUATION" ], "description": "The type of consent provided by an entity.", "example": "UNDER18" }, "Search-Type": { "type": "string", "description": "Specifies the type of search to perform.\n\n- \"EXACT\": Returns only results that exactly match the search term.\n- \"FUZZY\": Returns results that are similar to the search term.", "enum": [ "EXACT", "FUZZY" ] }, "Search-Field": { "type": "string", "description": "List of fields that can be searched.\n\n - \"NAME\": Searches all name parts of the profile.\n - \"GIVEN_NAME\": Searches the given name of the individual linked to the profile.\n - \"FAMILY_NAME\": Searches the family name of the individual linked to the profile.\n - \"MIDDLE_NAME\": Searches the middle name of the individual linked to the profile.\n - \"DISPLAY_NAME\": Searches the preferred display name. By default, this is the combined given, middle, and family names.\n - \"OTHER_NAME\": Searches other names of the individual linked to the profile.\n - \"EXTERNAL_REFERENCE\": Searches the external reference of the entity linked to the profile.\n - \"REGISTERED_NAME\": Searches the registered names of the organization linked to the profile.\n - \"ALTERNATE_NAME\": Searches the alternate (other than registered) names of the organization linked to the profile.\n - \"REGISTRATION_NUMBER\": Searches the registration numbers of the organization linked to the profile.\n\nPlanned for future implementation:\n - \"ADDRESS\": Searches the address of the entity linked to the profile.\n - \"EMAIL_ADDRESS\": Searches the email address of the entity linked to the profile.\n - \"PHONE_NUMBER\": Searches the phone number of the entity linked to the profile.\n - \"DOCUMENT_IDENTIFIER\": Searches primary and secondary identifiers in documents linked to the profile.\n\nIf an individual field type is specified and the search is limited to organizations, or vice versa, then nothing\nwill be found for those fields. The \"NAME\" and \"EXTERNAL_REFERENCE\" field types will search both individuals and\norganziations, if both are requested in the search, which is the default.", "enum": [ "NAME", "GIVEN_NAME", "FAMILY_NAME", "MIDDLE_NAME", "DISPLAY_NAME", "OTHER_NAME", "ADDRESS", "EMAIL_ADDRESS", "PHONE_NUMBER", "DOCUMENT_IDENTIFIER", "EXTERNAL_REFERENCE", "REGISTERED_NAME", "ALTERNATE_NAME", "REGISTRATION_NUMBER" ] }, "Search-Term": { "type": "object", "required": [ "term", "field" ], "properties": { "term": { "description": "The value to search for in profiles. This term will be matched against the specified field.", "type": "string" }, "field": { "$ref": "#/components/schemas/Search-Field" } } }, "Search-Criteria": { "type": "object", "required": [ "type", "terms" ], "properties": { "type": { "$ref": "#/components/schemas/Search-Type" }, "terms": { "type": "array", "items": { "$ref": "#/components/schemas/Search-Term" }, "description": "List of search terms to be used as criteria." } } }, "Search-Filter-Entity-Type": { "type": "string", "enum": [ "INDIVIDUAL", "ORGANIZATION" ], "description": "The type of entity within Frankie to filter on. This can be \"INDIVIDUAL\" or \"ORGANIZATION\"." }, "Status-Override-Type-Filter": { "type": "string", "description": "Filter on the status override type. Accepted values are:\n\n- ONLY_OVERRIDDEN: Returns only profiles with manually overridden statuses.\n- EXCLUDE_OVERRIDDEN: Excludes profiles with manually overridden statuses.\n- ALL: Returns both profiles with and without manually overridden statuses.", "enum": [ "ONLY_OVERRIDDEN", "EXCLUDE_OVERRIDDEN", "ALL" ], "default": "ALL" }, "Workflow-Execution-Statuses": { "type": "object", "required": [ "status", "overrideType" ], "properties": { "overrideType": { "$ref": "#/components/schemas/Status-Override-Type-Filter" }, "status": { "description": "List of workflowStatus value that the Service Profiles will be filter with", "type": "array", "items": { "$ref": "#/components/schemas/Workflow-Execution-ResultEnum" } } } }, "Workflow-Execution-ScopeEnum": { "type": "string", "enum": [ "LAST", "ANY" ], "description": "Determines how workflow status and name filters are applied:\n - LAST: Applies filters only to the most recent workflow execution.\n - ANY: Searches across all workflow executions.\n", "default": "ANY", "example": "LAST" }, "Search-Filters": { "type": "object", "properties": { "entityIds": { "type": "array", "items": { "type": "string" }, "description": "Entity IDs to filter the Service Profiles by." }, "entityTypes": { "type": "array", "items": { "$ref": "#/components/schemas/Search-Filter-Entity-Type" }, "description": "Limit result to entities of the given types. By default all types are considered.\nAccepted values are:\n - INDIVIDUAL\n - ORGANIZATION", "example": [ "INDIVIDUAL", "ORGANIZATION" ] }, "createdAtBefore": { "type": "string", "format": "date-time", "description": "Filter Service Profiles created on or before this date and time (inclusive)." }, "createdAtAfter": { "type": "string", "format": "date-time", "description": "Filter Service Profiles created on or after this date and time (inclusive)." }, "updatedAtAfter": { "type": "string", "format": "date-time", "description": "Filter Service Profiles updated on or after this date and time (inclusive)." }, "updatedAtBefore": { "type": "string", "format": "date-time", "description": "Filter Service Profiles updated on or before this date and time (inclusive)." }, "assignees": { "type": "array", "items": { "type": "string" }, "description": "Filter Service Profiles by assignee(s)." }, "reviewers": { "type": "array", "items": { "type": "string" }, "description": "Filter Service Profiles by reviewer(s)." }, "states": { "description": "List of Service Profile state values to filter Service Profiles.", "type": "array", "items": { "$ref": "#/components/schemas/Service-Profile-State" } }, "workflowNames": { "type": "array", "items": { "type": "string" }, "description": "Filter by workflow execution summary workflow names." }, "workflowExecutionStatuses": { "description": "Filter by combinations of workflowStatus and statusOverrideType.\nIf this filter is used, the deprecated statusOverrideType and workflowStatuses filters are ignored.", "type": "array", "items": { "$ref": "#/components/schemas/Workflow-Execution-Statuses" } }, "statusOverrideType": { "type": "string", "description": "Filter by status override type. Accepted values are:\n - ONLY_OVERRIDDEN: Returns only profiles with manually overridden statuses.\n - EXCLUDE_OVERRIDDEN: Excludes profiles with manually overridden statuses.\n - ALL: Returns both profiles with and without manually overridden statuses.\nIf not provided, the default behavior is ALL.", "enum": [ "ONLY_OVERRIDDEN", "EXCLUDE_OVERRIDDEN", "ALL" ], "default": "ALL", "deprecated": true }, "workflowStatuses": { "deprecated": true, "description": "List of workflowStatus values to filter Service Profiles.", "type": "array", "items": { "$ref": "#/components/schemas/Workflow-Execution-ResultEnum" } }, "issueCategories": { "type": "array", "items": { "$ref": "#/components/schemas/Workflow-Issue-Category" }, "description": "List of issue categories to filter Service Profiles." }, "issueSeverities": { "type": "array", "items": { "$ref": "#/components/schemas/Workflow-Issue-Severity" }, "description": "List of issue severities to filter Service Profiles." }, "riskLevels": { "type": "array", "items": { "$ref": "#/components/schemas/Risk-Level" }, "description": "Filter by workflow execution summary risk levels. If workflow name is not provided, all execution summaries are searched." }, "issues": { "type": "array", "items": { "$ref": "#/components/schemas/Workflow-Issue-Type", "description": "Filter for issues. Should match categories being filtered for. For each category, this provides the actual issue.\nVERIFY:\n NOT_FOUND (was 404)\n BAD_DATA_NAME\n BAD_DATA_DOB\n BAD_DATA_ADDRESS\n BAD_DATA_ID\n BAD_DATA_EMAIL\n BAD_DATA_MOBILE\nDECEASED:\n DECEASED\nEXPIRY:\n REQUIRES_KYC\n REQUIRES_IDV\n REQUIRES_AML\nINFORMATIONAL:\n CREDIT_HEADER\nAML:\n PEP\n SANCTION\n MEDIA\n WATCHLIST\nFRAUD:\n FRAUD_LIST \n FRAUD_CHECK\nDEVICE:\n DEVICE_FRAUD_MATCH\n DEVICE_INVALID\nTRANSACTION:\n AML_ISSUE\n FRAUD_ISSUE\n BLOCKED\nWATCHLIST:\n INTERNAL_MATCH\nDUPLICATE:\n DUPLICATE\nBLOCKLISTED:\n MATCHED_INTERNAL\n MATCHED_SHARED\n MATCHED_EXTERNAL\nSYSTEM:\n SERVICE_TIMEOUT\n SERVICE_ERROR" } }, "workflowExecutionScope": { "$ref": "#/components/schemas/Workflow-Execution-ScopeEnum" } } }, "Search-Profile": { "type": "object", "properties": { "search": { "$ref": "#/components/schemas/Search-Criteria" }, "filters": { "$ref": "#/components/schemas/Search-Filters" } } }, "Search-Field-Match": { "type": "object", "properties": { "field": { "$ref": "#/components/schemas/Search-Field" }, "confidence": { "$ref": "#/components/schemas/Search-Confidence" } } }, "Search-Match": { "type": "object", "properties": { "serviceProfile": { "$ref": "#/components/schemas/Service-Profile" }, "confidence": { "$ref": "#/components/schemas/Search-Confidence" }, "fieldsMatched": { "type": "array", "items": { "$ref": "#/components/schemas/Search-Field-Match" } } } }, "Search-Matches": { "type": "array", "items": { "$ref": "#/components/schemas/Search-Match" } }, "Document-Create": { "title": "DocumentCreate", "type": "object", "allOf": [ { "type": "object", "properties": { "class": { "$ref": "#/components/schemas/Document-Class" } } }, { "$ref": "#/components/schemas/Document-Information" } ] }, "individuals_entity_document_response": { "type": "object", "required": [ "requestId" ], "properties": { "entity": { "$ref": "#/components/schemas/Entity-ID", "description": "This field is deprecated and will be removed in the future version. Please use entityId instead.", "deprecated": true }, "entityId": { "$ref": "#/components/schemas/Entity-ID" }, "document": { "$ref": "#/components/schemas/Document-Information" }, "requestId": { "$ref": "#/components/schemas/Request-ID" } } }, "Subscription-Status": { "type": "string", "description": "Indicates the current status of the subscription.\n\n - `ENABLED`: The subscription is active and operational.\n - `DISABLED`: The subscription is inactive and not operational.", "enum": [ "ENABLED", "DISABLED" ] }, "entity_patch_monitoring_subscriptions_details_response": { "type": "object", "description": "The subscription details for monitoring, this object is returned per monitoring type", "properties": { "serviceName": { "type": "string", "description": "The name of service associated the service profile" }, "serviceProfileId": { "type": "string", "description": "The ID of the service profile" }, "status": { "$ref": "#/components/schemas/Subscription-Status" }, "enabledAt": { "type": "string", "format": "date-time", "description": "The date and time when the subscription was last enabled" }, "enabledRequestId": { "type": "string", "description": "The request id when the subscription was last enabled" }, "enabledBy": { "type": "string", "description": "The username of last user who enabled the subscription" }, "disabledAt": { "type": "string", "format": "date-time", "description": "The date and time when the subscription was last disabled" }, "disabledRequestId": { "type": "string", "description": "The request id when the subscription was last disabled" }, "disabledBy": { "type": "string", "description": "The username of last user who disabled the subscription" }, "workflows": { "type": "array", "description": "The workflows that will be executed by the type for the service profile", "items": { "type": "object", "properties": { "workflowName": { "type": "string", "description": "Name of the workflow." }, "workflowId": { "type": "string", "description": "Unique ID of the workflow." }, "lifecyclePhase": { "$ref": "#/components/schemas/Workflow-LifecyclePhaseEnum" } } } } } }, "entity_patch_monitoring_subscriptions_aml_response": { "type": "object", "description": "The subscription details for AML monitoring", "properties": { "subscriptions": { "type": "array", "description": "The list of AML monitoring subscriptions", "items": { "$ref": "#/components/schemas/entity_patch_monitoring_subscriptions_details_response" } }, "providers": { "type": "array", "description": "The providers that will be affected by the subscription", "items": { "type": "string", "description": "The provider name" } }, "status": { "$ref": "#/components/schemas/Subscription-Status" } } }, "entity_patch_monitoring_subscriptions_response": { "type": "object", "properties": { "AML": { "$ref": "#/components/schemas/entity_patch_monitoring_subscriptions_aml_response" } } }, "entity_patch_monitoring_response": { "type": "object", "properties": { "requestId": { "$ref": "#/components/schemas/Request-ID" }, "monitoring": { "$ref": "#/components/schemas/entity_patch_monitoring_subscriptions_response" } } }, "IDV-Token-Request": { "type": "object", "description": "IDV Token Request, queries the IDV provider for a token to be used with their sdk. If there is an existing token for this given entity that isn't expired, that will be returned instead of a new token.", "properties": { "applicantId": { "description": "ID of the applicant/individual in the IDV provider's system. Specify this if resuming/continuing an IDV check", "example": "412e8c806fdfb0bb19b5", "type": "string" }, "applicationId": { "description": "Reference or name of the application running this IDV check. Specify this if running this check embedded in a application rather than a web page.", "example": "94d9a75a5072444c", "type": "string" }, "country": { "description": "Country code to check for. Must be a ISO-3166 alpha-3 code entry. Only for use with providers that can restrict to a single country.", "example": "AUS", "type": "string" }, "documentType": { "description": "Document type that will be used for the check. Can be one of DRIVERS_LICENCE, PASSPORT, NATIONAL_ID. . Only for use with providers that can restrict to a single document type.", "example": "DRIVER_LICENCE", "type": "string" }, "referrer": { "description": "If this is for a web SDK, then you need to supply the referrer domain so that the token can be validated by the IDV service", "example": "https://example.com", "type": "string" }, "relayState": { "description": "State from start of flow that should be relayed through the process via any redirects.", "example": "412e8c806fdfb0bb19b5", "type": "string" }, "provider": { "description": "What provider to use for the IDV check. This is the name of the provider as configured in the system. If not provided the default provider will be used.", "example": "onfido", "type": "string" }, "products": { "description": "What product(s) for the provider to use for the IDV check. If not provided the default product for a provider will be used.", "example": "idv", "type": "array", "items": { "type": "string" } }, "comment": { "$ref": "#/components/schemas/Comment" } } }, "IDV-Token-Response": { "type": "object", "description": "IDV Token Response, contains the token and it's expiry, and any vendor specific parameters.", "properties": { "applicantId": { "description": "The ID of the applicant attached to this check.", "type": "string" }, "country": { "description": "Country code to check for. Must be a ISO-3166 alpha-3 code entry.", "example": "AUS", "type": "string" }, "documentType": { "description": "Document type that will be used for the check.", "example": "DRIVER_LICENCE", "type": "string" }, "provider": { "description": "Underlying provider, used for selecting the correct SDK if not using SmartUI.", "example": "OCRLabs", "type": "string" }, "smsSent": { "description": "Has a sms to the user already been sent as part of the token request", "example": true, "type": "boolean" }, "token": { "description": "Tokens are only valid for a limited time.", "example": "41cf9401f0f889616bef", "type": "string" }, "tokenExpiry": { "description": "The time at which the provided token will expire.", "type": "string", "format": "date-time", "example": "2020-01-01T00:00:00.000Z" }, "vendorParameters": { "description": "Vendor specific parameters, used for passing through additional parameters from the vendor to instantiate the SDK.", "additionalProperties": { "type": "string" }, "example": { "tokenURL": "example1.com" }, "type": "object" }, "requestId": { "$ref": "#/components/schemas/Request-ID" } } }, "IDV-OCR-Request": { "type": "object", "description": "OCR request, used to submit an image of an identity document for OCR processing. The image can be uploaded via a vendor SDK after calling get IDV token, or can be submitted directly as a fileData.", "properties": { "digital": { "description": "Is this a digital version of the id, eg Digital Driver Licence screenshot. If not provided assumed to be false.", "type": "boolean" }, "documentId": { "description": "document id if known that the scan data should be attached to", "type": "string" }, "fileData": { "$ref": "#/components/schemas/Document-Attachment" }, "token": { "description": "if the image was captured via a provder SDK, pass through the token instead of the fileData", "example": "41cf9401f0f889616bef", "type": "string" } } }, "IDV-OCR-Response": { "type": "object", "description": "OCR response", "properties": { "status": { "type": "string", "example": "COMPLETE_OCR", "description": "Status of the OCR process. Status can be one of:\n- AWAITING_OCR_RESULTS_PROVIDER_OFFLINE - the provider is offline and the OCR results are not available\n- AWAITING_DOCUMENT_UPLOAD_INVALID_TYPE - the document type is not supported, mostly only passport, driving license and national id are supported but this is provider specific\n- WAITING_DOCUMENT_UPLOAD_FAILED_OCR - the document upload failed to the provider\n- AWAITING_DOCUMENT_OCR - the document is being processed by the provider still and it awaiting results\n- DOCUMENT_INVALID_EXCEEDED_SIZE_LIMIT - the document is too large to be processed\n- DOCUMENT_INVALID_INCORRECT_FILE_FORMAT - the document is not a supported file format, mostly only jpeg and png are supported but this is provider specific\n- AWAITING_DOCUMENT_UPLOAD_BACK - the back of the document needs to be uploaded\n- AWAITING_DOCUMENT_UPLOAD_FRONT - the front of the document needs to be upload\n- COMPLETE_OCR - document OCR is valid and completed\n", "enum": [ "AWAITING_OCR_RESULTS_PROVIDER_OFFLINE", "AWAITING_DOCUMENT_UPLOAD_INVALID_TYPE", "WAITING_DOCUMENT_UPLOAD_FAILED_OCR", "AWAITING_DOCUMENT_OCR", "DOCUMENT_INVALID_EXCEEDED_SIZE_LIMIT", "DOCUMENT_INVALID_INCORRECT_FILE_FORMAT", "AWAITING_DOCUMENT_UPLOAD_BACK", "AWAITING_DOCUMENT_UPLOAD_FRONT", "COMPLETE_OCR" ] }, "individual": { "$ref": "#/components/schemas/Individual" }, "requestId": { "$ref": "#/components/schemas/Request-ID" }, "ocrResult": { "$ref": "#/components/schemas/Process-Result-Object" } } }, "IDV-InitProcess-Request": { "type": "object", "description": "Init IDV Process Request, used after capture of IDV data from a customer, including photos/videos of the face and ID. For providers that support it, this will synchronously report all report results from the provider. For providers that do not support synchronous reporting, this will request the reports and return a request id and status. The status can be polled for the final result or sent via webhook. Body parameters are optional, if they are not sent, then the latest token for the entity is used.", "properties": { "providerReferenceId": { "description": "provider reference Id if known. May be referred to as checkId or interviewId in vendor specific document", "example": "41cf9401f0f889616bef", "type": "string" }, "token": { "description": "if no check id has yet been created for this idv check, pass through the token instead", "example": "41cf9401f0f889616bef", "type": "string" }, "comment": { "$ref": "#/components/schemas/Comment" } } }, "IDV-InitProcess-Response": { "type": "object", "description": "Init Process Response, used after retrieval of IDV reports from a provider. For providers that support it, this will synchronously report all report results from the provider. For providers that do not support synchronous reporting, this will request the reports and return a request id and status. The status can be polled for the final result or sent via webhook", "properties": { "status": { "type": "string", "example": "COMPLETE", "description": "Status of the process. Status can be one of:\n- IN_PROGRESS - the provider has been sent the request and is currently still processing the result\n- CHECK_PROCESSING_DOWNLOAD_FAIL - the provider has been sent the request and is currently still processing the result, there was an issue downloading the images that will be retried later automatically\n- WAITING_SELFIE_UPLOAD - the selfie has not been uploaded yet by the applicant, still awaiting applicant action\n- CHECK_PROCESSING - the provider has been sent the request and is currently still processing the result\n- DOCUMENT_INVALID_EXCEEDED_SIZE_LIMIT - the document is too large to be processed\n- DOCUMENT_INVALID_INCORRECT_FILE_FORMAT - the document is not a supported file format, mostly only jpeg and png are supported but this is provider specific\n- PROVIDER_OFFLINE - the provider is not available for processing the request\n- COMPLETE - process is valid and completed\n", "enum": [ "IN_PROGRESS", "CHECK_PROCESSING_DOWNLOAD_FAIL", "WAITING_SELFIE_UPLOAD", "CHECK_PROCESSING", "DOCUMENT_INVALID_EXCEEDED_SIZE_LIMIT", "DOCUMENT_INVALID_INCORRECT_FILE_FORMAT", "PROVIDER_OFFLINE", "COMPLETE" ] }, "requestId": { "$ref": "#/components/schemas/Request-ID" }, "workflowExecutionId": { "type": "string", "description": "If a workflow was run as part of the processing, this is the workflow execution id" }, "ocrResult": { "$ref": "#/components/schemas/Process-Result-Object" } } }, "IDV-HostedUrl-Request-Document": { "description": "The document to be requested from the customer for this onesdk session", "type": "object", "properties": { "documentType": { "type": "string", "description": "The type of document" }, "subType": { "type": "string", "description": "The sub type of document" } } }, "IDV-HostedUrl-Request-Partial-Document": { "description": "The partial document to be requested from the customer for this onesdk session", "type": "object", "properties": { "title": { "type": "string", "description": "The title of document" }, "minimumRequirement": { "type": "integer", "description": "The minimum requirement of document" }, "documents": { "type": "array", "description": "List of documents that are partial to issue the JWT Token", "items": { "$ref": "#/components/schemas/IDV-HostedUrl-Request-Document" } } } }, "IDV-HostedUrl-Request": { "type": "object", "description": "Hosted OneSDK URL Request, used to request a hosted OneSDK URL with entity specific token for a customer to use a hosted OneSDK session to do an action. Examples of actions that may be done is to complete their onboarding process or to re-attempt IDV checks. If sendSMS is true and a phone number is supplied, an SMS will be sent to the phone number with the generated URL.", "properties": { "applicationRef": { "type": "string", "description": "Reference or name of the application running this IDV check. Specify this if running this check embedded in a application rather than a web page." }, "channelRef": { "type": "string", "description": "channel this application is being submitted through, eg WEB, MOBILE" }, "consent": { "type": "boolean", "description": "Has user consented for IDV check. If not supplied or is false, consent will need to be submitted via provider SDK." }, "customerRef": { "description": "external customer reference for this entity. If supplied and an entity id not, we will search for an entity with this customer ref. If not found, a new entity will be created with this customer ref.", "type": "string" }, "entityId": { "type": "string", "description": "Unique FrankieOne identifier for an entity if already created" }, "errorRedirectURL": { "description": "if provider sdk fails, redirect to this url", "type": "string" }, "oneSDKFlowId": { "type": "string", "description": "Flow id to use for OneSDK, to determine what data needs to be captured from the user, for example :\"idv\" or \"ocr_only\"" }, "phoneCode": { "description": "country phone code", "type": "string" }, "phoneNumber": { "description": "phone code can be included with phone number or split out", "example": "+6140000000", "type": "string" }, "recipientName": { "description": "if supplied will be used as the recipient name for the SMS", "type": "string" }, "sendSMS": { "description": "if true, will send an SMS to the phone number supplied", "type": "boolean" }, "successRedirectURL": { "description": "url to redirect to on success", "type": "string" }, "comment": { "$ref": "#/components/schemas/Comment" }, "requestedDocuments": { "description": "List of documents that are requested from customer for onesdk session", "type": "array", "items": { "$ref": "#/components/schemas/IDV-HostedUrl-Request-Document" } }, "optionalDocuments": { "description": "List of documents that are optional from customer for onesdk session", "type": "array", "items": { "$ref": "#/components/schemas/IDV-HostedUrl-Request-Document" } }, "partialDocuments": { "description": "List of documents that are partial from customer for onesdk session", "type": "array", "items": { "$ref": "#/components/schemas/IDV-HostedUrl-Request-Partial-Document" } } } }, "IDV-HostedUrl-Response": { "type": "object", "description": "Onboarding URL Response, contains the url for onboarding as well as the expiry. Each call to this endpoint will generate a new URL with a new expiry.", "properties": { "status": { "type": "string", "description": "Status of the response for generating the onboarding URL and optionally sending via SMS." }, "url": { "type": "string", "description": "URL to redirect the user to for onboarding, will point to a page where the user can complete their onboarding or IDV check." }, "urlExpiry": { "type": "string", "format": "date-time", "example": "2020-01-01T00:00:00.000Z", "description": "The time at which the provided URL will expire according to configuration. Can not be set longer than 7 days" }, "requestId": { "$ref": "#/components/schemas/Request-ID" }, "entityId": { "$ref": "#/components/schemas/Entity-ID" } } } } } }