openapi: 3.0.3 info: title: 'Pascal API Documentation' description: '' version: 1.0.0 servers: - url: 'https://app.pascal.vartion.com' tags: - name: 'Bank Accounts' description: '' - name: Cases description: '' - name: Clients description: '' - name: 'Onboarding forms' description: '' - name: 'One time case links' description: "The usual flow for a one time case link is as follows:\n1. Create a one time case link using your personal access token.\n2. Store the generated one time case link id and token somewhere secure.\n3. Use a one time case link (this is done by your user). See: Authenticate using a one time case link" - name: Reports description: '' - name: Transactions description: '' components: securitySchemes: default: type: http scheme: bearer description: 'You can retrieve your token by visiting your personal settings page and clicking Add API token.' security: - default: [] paths: /api/v1/bank-accounts/import: post: summary: 'Import bank accounts' operationId: importBankAccounts description: "This endpoint allows you to import a list of bank accounts asynchronously.\nYou can provide up to 200 bank accounts per request.\n\n**Note:** Access to transaction monitoring is required to use this endpoint." parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"id\": \"99cbb5f6-49a7-492c-a1de-92ff356d98d8\",\n \"name\": \"Importing bank accounts...\",\n \"totalJobs\": 1,\n \"pendingJobs\": 1,\n \"progress\": 0,\n \"createdAt\": \"2023-08-02T18:48:22.000000Z\",\n \"finishedAt\": null,\n}" tags: - 'Bank Accounts' requestBody: required: true content: application/json: schema: type: object properties: bank_accounts: type: array description: 'List of bank accounts to import.' example: null items: type: object properties: name: type: string description: 'Name or identifier for the bank account. Must not be larger than 255.' example: 'Main Business Account' nullable: false account_number: type: string description: 'Bank account number (IBAN or local format). Must not be larger than 255.' example: NL91ABNA0417164300 nullable: false swift_code: type: string description: 'SWIFT/BIC code of the bank account. Must not be larger than 255.' example: ABNANL2A nullable: true bank_name: type: string description: 'Name of the bank. Must not be larger than 255.' example: 'ABN AMRO Bank N.V.' nullable: true currency: type: string description: 'Currency code, 3 letters.' example: EUR nullable: false account_type: type: string description: 'Type of bank account (e.g., current, savings, etc.). Must not be larger than 255.' example: current nullable: false clients: type: array description: 'Must not be larger than 255.' example: - b items: type: string active: type: boolean description: 'Can be set to false to deactivate the account (default: true).' example: false nullable: true required: - name - account_number - currency - account_type batch_id: type: string description: 'Because each import request is limited to 200 items, you can use this parameter to add more items to an existing batch. If the batch does not exist or is already finished, a 404 response will be returned. This field must be a valid UUID.' example: 99cbb5f6-49a7-492c-a1de-92ff356d98d8 nullable: true count: type: integer description: 'When you want to import using multiple requests in a single batch, you should provide the total number of items to import in your first request (without a batch_id). When a batch has nothing to process, it will remain active for 1 minute, allowing you to add more items to it. When the total number of items has been processed, the batch will be marked as finished. Must not be smaller than 1.' example: 150 nullable: true required: - bank_accounts /api/v1/cases/import: post: summary: 'Import cases' operationId: importCases description: "This endpoint allows you to import and search a list of new cases asynchronously.\nAfter making a request, a list of case UUIDs will be returned in the same order as your request.\nA list of \"imported\" case UUIDs will also be returned. This allows you to distinguish between cases that were imported and those that were deduplicated.\nYou can use the case search API to check the status of the imported cases." parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"id\": \"99cbb5f6-49a7-492c-a1de-92ff356d98d8\",\n \"name\": \"Importing cases...\",\n \"totalJobs\": 1,\n \"pendingJobs\": 1,\n \"progress\": 0,\n \"createdAt\": \"2023-08-02T18:48:22.000000Z\",\n \"finishedAt\": null,\n \"uuids\": [\n \"a2546955-de2d-4907-a533-0846ee46f719\",\n \"d6253422-5197-429c-a8eb-4af7f6f7fffc\",\n ],\n \"imported\": [\n \"a2546955-de2d-4907-a533-0846ee46f719\",\n ]\n}" tags: - Cases requestBody: required: true content: application/json: schema: type: object properties: cases: type: array description: 'An array of cases to be imported. You can import up to 200 cases per request.' example: - [] items: type: object properties: type: type: string description: 'Must be one of Person, Business, or Asset.' example: Person nullable: false enum: - Person - Business - Asset status: type: string description: 'Must be one of: Preview or In review.' example: 'In review' nullable: false enum: - 'In review' - Preview name: type: string description: 'The name to be checked. Must match the regex /[^'' '',\-\/\.]/. Must not be smaller than 2. Must not be larger than 255.' example: 'John Doe' nullable: false confidence: type: string description: '' example: Exact nullable: false enum: - Relative - Exact aliases: type: array description: 'A list of additional name variations to be checked. Must not be larger than 255.' example: - 'J. Doe' items: type: string additional_terms: type: array description: 'A list words that boost confidence if present in any visible text field. Must not be larger than 255.' example: - CEO items: type: string description: type: string description: 'Additional information to be displayed in the case.' example: 'Relation of a high risk client' nullable: true clients: type: array description: 'Must not be larger than 255.' example: - b items: type: string sources: type: array description: 'If provided, will only enable these sources in the created case. Must be one or more of: sanctions, enforcements, peps, news, other. Sources that are not enabled in the organization will be skipped.' example: - sanctions items: type: string enum: - sanctions - enforcements - peps - news - other gender: type: string description: '[Person case] Must be one of Male or Female. This field is required when cases.passportVerificationForm is present.' example: Male nullable: true enum: - Female - Male nationalities: type: array description: '[Person case] [Asset case] array of max 10 nationalities, nationality SO 3166-1 alpha-2 or alpha-3 country code string.' example: - NLD items: type: string country_of_birth: type: string description: '[Person case] ISO 3166-1 alpha-2 or alpha-3 country code string.' example: NLD nullable: true country_of_residence: type: string description: '[Person case] ISO 3166-1 alpha-2 or alpha-3 country code string.' example: NLD nullable: true date_of_birth: type: string description: '[Person case] ISO date string. Must be a valid date in the format Y-m-d.' example: '2000-01-31' nullable: true passportVerificationForm: type: object description: '[Person case] Optional passport check information to be added to the case. This field must contain 7 items.' example: null nullable: true properties: country: type: string description: 'This field is required when cases.passportVerificationForm is present. Must not be larger than 255.' example: 'n' nullable: false dateOfExpiry: type: string description: 'This field is required when cases.passportVerificationForm is present. Must be a valid date in the format Y-m-d.' example: '2025-09-04' nullable: false documentNumber: type: string description: 'This field is required when cases.passportVerificationForm is present. Must not be smaller than 6. Must not be larger than 9.' example: gzmiyvd nullable: false givenNames: type: string description: 'This field is required when cases.passportVerificationForm is present. Must not be larger than 255.' example: l nullable: false lastName: type: string description: 'This field is required when cases.passportVerificationForm is present. Must not be larger than 255.' example: j nullable: false nationality: type: string description: 'This field is required when cases.passportVerificationForm is present.' example: null nullable: false optionalData: type: string description: 'Must not be larger than 14.' example: nikhwaykcmyuwp nullable: true company_number: type: string description: '[Business case] string of max 255 characters. Must not be larger than 255.' example: NL123 nullable: true country: type: string description: '[Business case] ISO 3166-1 alpha-2 or alpha-3 country code string.' example: NL nullable: false address: type: string description: '[Business case] string of max 255 characters. Must not be larger than 255.' example: '3721 West Fork Street, Montana' nullable: true asset_type: type: string description: '[Asset case] Must be one of vessel or aircraft.' example: vessel nullable: true enum: - vessel - aircraft identifier: type: string description: '[Asset case] string of max 255 characters. Must not be larger than 255.' example: '123456' nullable: true user_id: type: integer description: 'The assignee of the case. If both this and group_id are missing, the case is assigned to the default assignee specified in the organisation policies. If either is provided but neither specifies an id, the case is unassigned.' example: null nullable: true group_id: type: integer description: 'The assigned group of the case. If both this and user_id are missing, the case is assigned to the default assignee specified in the organisation policies. If either is provided but neither specifies an id, the case is unassigned.' example: null nullable: true required: - type - name - confidence - nationalities deduplicate: type: boolean description: 'Whether or not to skip any cases that already exist in the organisation. A case is considered a duplicate if all of the following fields are an exact match (case insensitive): name, aliases, additional_terms, gender, date_of_birth, nationalities, country_of_birth, country_of_residence, address, country, company_number, asset_type, and identifier.' example: false nullable: true update_duplicates: type: boolean description: "When a duplicate case is found, perform a new search.\nIf the existing case is 'archived', its status will be changed to 'in review'.\nSearch is skipped if the case is already monitored." example: false nullable: true update_duplicates_clients: type: boolean description: 'If a case with the same name already exists, its client(s) will be updated with the provided information.' example: false nullable: true batch_id: type: string description: 'Because each import request is limited to 200 items, you can use this parameter to add more items to an existing batch. If the batch does not exist or is already finished, a 404 response will be returned. This field must be a valid UUID.' example: 99cbb5f6-49a7-492c-a1de-92ff356d98d8 nullable: true count: type: integer description: 'When you want to import using multiple requests in a single batch, you should provide the total number of items to import in your first request (without a batch_id). When a batch has nothing to process, it will remain active for 1 minute, allowing you to add more items to it. When the total number of items has been processed, the batch will be marked as finished. Must not be smaller than 1.' example: 150 nullable: true required: - cases /api/v1/cases/searches: post: summary: 'Search cases' operationId: searchCases description: "This endpoint allows you to search for cases using filters.\nReturning basic information on a list of cases.\nPaginating through results is possible using the per_page and page parameters." parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: - additional_terms: null address: null aliases: null clients: - name: 'John Doe' id: 1 company_number: null confidence: Relative country_of_birth: null country_of_residence: null created_at: '2023-08-02T18:48:22.000000Z' date_of_birth: null deleted_at: null description: 'Voluptas ad rem illum est dignissimos aut provident vitae.' excluded_terms: [] gender: null group_id: null hit_counts: negative: enforcements: 0 news: 0 other: 0 peps: 0 sanctions: 0 positive: enforcements: 0 news: 0 other: 0 peps: 0 sanctions: 0 unresolved: enforcements: 0 news: 0 other: 0 peps: 0 sanctions: 0 hits_unresolved_count: 0 id: 2049050 country: null monitoring_frequency: 28 name: 'My test case' nationalities: null organization_id: 19 origin: import resolve_progress: 100 risk: 0 searched_at: '2023-08-02T18:48:32.000000Z' sources: - active: true case_id: 2049050 data_source: active: true deactivated_at: '2023-02-21T12:57:31.000000Z' id: 409 source: peps vendor: default data_source_id: 409 id: 18320030 searched_at: '2023-08-02T18:48:22.000000Z' succeeded: true - active: true case_id: 2049050 data_source: active: true deactivated_at: '2023-02-21T12:57:31.000000Z' id: 413 source: news vendor: default data_source_id: 413 id: 18320031 searched_at: '2023-08-02T18:48:22.000000Z' succeeded: true status: 'In review' type: Person unresolved_risk: 0 updated_at: '2023-08-02T18:48:22.000000Z' user_id: null uuid: a2546955-de2d-4907-a533-0846ee46f719 meta: current_page: 1 from: 1 last_page: 1 per_page: 10 to: 1 total: 1 properties: data: type: array example: - additional_terms: null address: null aliases: null clients: - name: 'John Doe' id: 1 company_number: null confidence: Relative country_of_birth: null country_of_residence: null created_at: '2023-08-02T18:48:22.000000Z' date_of_birth: null deleted_at: null description: 'Voluptas ad rem illum est dignissimos aut provident vitae.' excluded_terms: [] gender: null group_id: null hit_counts: negative: enforcements: 0 news: 0 other: 0 peps: 0 sanctions: 0 positive: enforcements: 0 news: 0 other: 0 peps: 0 sanctions: 0 unresolved: enforcements: 0 news: 0 other: 0 peps: 0 sanctions: 0 hits_unresolved_count: 0 id: 2049050 country: null monitoring_frequency: 28 name: 'My test case' nationalities: null organization_id: 19 origin: import resolve_progress: 100 risk: 0 searched_at: '2023-08-02T18:48:32.000000Z' sources: - active: true case_id: 2049050 data_source: active: true deactivated_at: '2023-02-21T12:57:31.000000Z' id: 409 source: peps vendor: default data_source_id: 409 id: 18320030 searched_at: '2023-08-02T18:48:22.000000Z' succeeded: true - active: true case_id: 2049050 data_source: active: true deactivated_at: '2023-02-21T12:57:31.000000Z' id: 413 source: news vendor: default data_source_id: 413 id: 18320031 searched_at: '2023-08-02T18:48:22.000000Z' succeeded: true status: 'In review' type: Person unresolved_risk: 0 updated_at: '2023-08-02T18:48:22.000000Z' user_id: null uuid: a2546955-de2d-4907-a533-0846ee46f719 items: type: object properties: additional_terms: type: string example: null address: type: string example: null aliases: type: string example: null clients: type: array example: - name: 'John Doe' id: 1 items: type: object properties: name: type: string example: 'John Doe' id: type: integer example: 1 company_number: type: string example: null confidence: type: string example: Relative country_of_birth: type: string example: null country_of_residence: type: string example: null created_at: type: string example: '2023-08-02T18:48:22.000000Z' date_of_birth: type: string example: null deleted_at: type: string example: null description: type: string example: 'Voluptas ad rem illum est dignissimos aut provident vitae.' excluded_terms: type: array example: [] gender: type: string example: null group_id: type: string example: null hit_counts: type: object properties: negative: type: object properties: enforcements: type: integer example: 0 news: type: integer example: 0 other: type: integer example: 0 peps: type: integer example: 0 sanctions: type: integer example: 0 positive: type: object properties: enforcements: type: integer example: 0 news: type: integer example: 0 other: type: integer example: 0 peps: type: integer example: 0 sanctions: type: integer example: 0 unresolved: type: object properties: enforcements: type: integer example: 0 news: type: integer example: 0 other: type: integer example: 0 peps: type: integer example: 0 sanctions: type: integer example: 0 hits_unresolved_count: type: integer example: 0 id: type: integer example: 2049050 country: type: string example: null monitoring_frequency: type: integer example: 28 name: type: string example: 'My test case' nationalities: type: string example: null organization_id: type: integer example: 19 origin: type: string example: import resolve_progress: type: integer example: 100 risk: type: integer example: 0 searched_at: type: string example: '2023-08-02T18:48:32.000000Z' sources: type: array example: - active: true case_id: 2049050 data_source: active: true deactivated_at: '2023-02-21T12:57:31.000000Z' id: 409 source: peps vendor: default data_source_id: 409 id: 18320030 searched_at: '2023-08-02T18:48:22.000000Z' succeeded: true - active: true case_id: 2049050 data_source: active: true deactivated_at: '2023-02-21T12:57:31.000000Z' id: 413 source: news vendor: default data_source_id: 413 id: 18320031 searched_at: '2023-08-02T18:48:22.000000Z' succeeded: true items: type: object properties: active: type: boolean example: true case_id: type: integer example: 2049050 data_source: type: object properties: active: type: boolean example: true deactivated_at: type: string example: '2023-02-21T12:57:31.000000Z' id: type: integer example: 409 source: type: string example: peps vendor: type: string example: default data_source_id: type: integer example: 409 id: type: integer example: 18320030 searched_at: type: string example: '2023-08-02T18:48:22.000000Z' succeeded: type: boolean example: true status: type: string example: 'In review' type: type: string example: Person unresolved_risk: type: integer example: 0 updated_at: type: string example: '2023-08-02T18:48:22.000000Z' user_id: type: string example: null uuid: type: string example: a2546955-de2d-4907-a533-0846ee46f719 meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 per_page: type: integer example: 10 to: type: integer example: 1 total: type: integer example: 1 tags: - Cases requestBody: required: true content: application/json: schema: type: object properties: per_page: type: integer description: 'number between 1 and 1000. Must not be smaller than 1. Must not be larger than 1000.' example: 10 nullable: false page: type: integer description: 'Page to be returned. Must not be smaller than 1.' example: 1 nullable: false sort_by: type: string description: '' example: updated_at nullable: true enum: - updated_at - status - uuid - name - type - confidence - assignee - hits_unresolved_count - resolve_progress - risk - unresolved_risk - searched_at - passport_expiry_date - organization_name sort_order: type: string description: '' example: asc nullable: true enum: - asc - desc secondary_sort_by: type: string description: '' example: null nullable: true enum: - updated_at - status - uuid - name - type - confidence - assignee - hits_unresolved_count - resolve_progress - risk - unresolved_risk - searched_at - passport_expiry_date - organization_name secondary_sort_order: type: string description: '' example: desc nullable: true enum: - asc - desc with: type: array description: 'Adds additional values to the results. Must be one of: hitCounts, hitCountsPerSource.' example: - hitCountsPerSource items: type: string enum: - hitCounts - hitCountsPerSource - passportVerification - caseUsers - caseGroups - user - group - organization id: type: array description: 'Case IDs to be filtered on. Must not be smaller than 1.' example: null items: type: integer type: type: array description: 'Must be one of Person, Business, or Asset.' example: null items: type: string enum: - Person - Business - Asset status: type: array description: '' example: null items: type: string enum: - Preview - 'In review' - Archived - Monitored user_id: type: array description: 'Filter on case assignees using user ids.' example: null items: type: integer nullable: true group_id: type: array description: 'Filter on case assigned to groups using group ids.' example: null items: type: integer nullable: true organization_id: type: array description: 'Filter on cases from a specific organization (if token has access to multiple organizations).' example: null items: type: integer origin: type: array description: '' example: null items: type: string enum: - person-check - business-check - hyperlink confidence: type: array description: '' example: null items: type: string enum: - Exact - Relative created_at: type: object description: '' example: null nullable: true properties: { } updated_at: type: object description: 'A date range, always expanded to full days (start = 00:00:00, end = 23:59:59).' example: - '2025-01-01' - '2025-01-31' nullable: true properties: { } hit_time_range: type: object description: '' example: null nullable: true properties: { } hit_resolution: type: array description: '' example: - negative items: type: string enum: - unresolved - positive - negative hit_source: type: array description: '' example: - peps items: type: string enum: - sanctions - enforcements - peps - news - other name: type: string description: 'Search on case names. Supports SQL LIKE wildcards. Must not be larger than 255.' example: null nullable: true client_id: type: array description: 'Cases associated to a list of clients. Must not be smaller than 1.' example: null items: type: integer nullable: true exclude_client_id: type: array description: 'Exclude cases associated to any of a list of clients. Must not be smaller than 1.' example: null items: type: integer nullable: true client_status: type: array description: '' example: - Archived items: type: string enum: - Active - Archived deleted: type: boolean description: '' example: false nullable: false uuid: type: array description: 'Search on case UUIDs. Supports SQL LIKE wildcards. This field must be a valid UUID.' example: - a2546955-de2d-4907-a533-0846ee46f719 items: type: string query: type: string description: 'Must not be larger than 255.' example: null nullable: true nationalities: type: array description: '' example: null items: type: string nullable: true country_of_birth: type: array description: '' example: null items: type: string nullable: true country_of_residence: type: array description: '' example: null items: type: string nullable: true date_of_birth: type: array description: 'This field must be a valid date.' example: null items: type: string nullable: true company_number: type: string description: 'Must not be larger than 255.' example: b nullable: true address: type: string description: 'Must not be larger than 255.' example: 'n' nullable: true country: type: array description: '' example: null items: type: string nullable: true identifier: type: array description: 'The identifier of an asset. Must not be larger than 255.' example: null items: type: string nullable: true risk: type: array description: '' example: null items: type: string enum: - 'very low' - low - moderate - high - 'very high' - 'no risk' custom_filters: type: array description: '' example: null items: type: string required: - with - hit_resolution - hit_source - client_status '/api/v1/cases/{id}': patch: summary: 'Update case' operationId: updateCase description: "This endpoint allows you to edit the specifications or status of an existing case.\nOnly fields provided will be updated, fields that are not provided will remain in the current state.\nWill return the updated case information.\n" parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: additional_terms: null address: null aliases: null asset_type: null clients: - name: 'John Doe' id: 1 company_number: null confidence: Relative country_of_birth: null country_of_residence: null created_at: '2023-08-02T18:48:22.000000Z' date_of_birth: null deleted_at: null description: 'Voluptas ad rem illum est dignissimos aut provident vitae.' excluded_terms: [] gender: null group_id: null id: 2049050 identifier: null country: null monitoring_frequency_sanctions: 90 monitoring_frequency_peps: 90 monitoring_frequency_news: 90 monitoring_frequency_enforcements: 90 monitoring_frequency_other: 90 name: 'My test case' nationalities: null organization_id: 19 origin: import risk: 0 searched_at: '2023-08-02T18:48:32.000000Z' sources: - active: true case_id: 2049050 data_source: active: true deactivated_at: '2023-02-21T12:57:31.000000Z' id: 409 source: peps vendor: default data_source_id: 409 id: 18320030 searched_at: '2023-08-02T18:48:22.000000Z' succeeded: true - active: true case_id: 2049050 data_source: active: true deactivated_at: '2023-02-21T12:57:31.000000Z' id: 413 source: news vendor: default data_source_id: 413 id: 18320031 searched_at: '2023-08-02T18:48:22.000000Z' succeeded: true status: Monitored type: Person unresolved_risk: 0 updated_at: '2023-08-02T18:48:22.000000Z' user_id: null uuid: a2546955-de2d-4907-a533-0846ee46f719 properties: additional_terms: type: string example: null address: type: string example: null aliases: type: string example: null asset_type: type: string example: null clients: type: array example: - name: 'John Doe' id: 1 items: type: object properties: name: type: string example: 'John Doe' id: type: integer example: 1 company_number: type: string example: null confidence: type: string example: Relative country_of_birth: type: string example: null country_of_residence: type: string example: null created_at: type: string example: '2023-08-02T18:48:22.000000Z' date_of_birth: type: string example: null deleted_at: type: string example: null description: type: string example: 'Voluptas ad rem illum est dignissimos aut provident vitae.' excluded_terms: type: array example: [] gender: type: string example: null group_id: type: string example: null id: type: integer example: 2049050 identifier: type: string example: null country: type: string example: null monitoring_frequency_sanctions: type: integer example: 90 monitoring_frequency_peps: type: integer example: 90 monitoring_frequency_news: type: integer example: 90 monitoring_frequency_enforcements: type: integer example: 90 monitoring_frequency_other: type: integer example: 90 name: type: string example: 'My test case' nationalities: type: string example: null organization_id: type: integer example: 19 origin: type: string example: import risk: type: integer example: 0 searched_at: type: string example: '2023-08-02T18:48:32.000000Z' sources: type: array example: - active: true case_id: 2049050 data_source: active: true deactivated_at: '2023-02-21T12:57:31.000000Z' id: 409 source: peps vendor: default data_source_id: 409 id: 18320030 searched_at: '2023-08-02T18:48:22.000000Z' succeeded: true - active: true case_id: 2049050 data_source: active: true deactivated_at: '2023-02-21T12:57:31.000000Z' id: 413 source: news vendor: default data_source_id: 413 id: 18320031 searched_at: '2023-08-02T18:48:22.000000Z' succeeded: true items: type: object properties: active: type: boolean example: true case_id: type: integer example: 2049050 data_source: type: object properties: active: type: boolean example: true deactivated_at: type: string example: '2023-02-21T12:57:31.000000Z' id: type: integer example: 409 source: type: string example: peps vendor: type: string example: default data_source_id: type: integer example: 409 id: type: integer example: 18320030 searched_at: type: string example: '2023-08-02T18:48:22.000000Z' succeeded: type: boolean example: true status: type: string example: Monitored type: type: string example: Person unresolved_risk: type: integer example: 0 updated_at: type: string example: '2023-08-02T18:48:22.000000Z' user_id: type: string example: null uuid: type: string example: a2546955-de2d-4907-a533-0846ee46f719 tags: - Cases requestBody: required: true content: application/json: schema: type: object properties: clients: type: array description: "List of clients to link this case to. Each item can be either a number (client id) or string (client name). If a client with the given name doesn't exist, it will be created. Any previously linked clients that are not in this list will be unlinked. If you don't provide this parameter, the linked clients will not change. Must not be larger than 255." example: null items: type: string excluded_terms: type: array description: 'List terms that should not be matched on when searching for new hits in this case. Must not be larger than 255.' example: null items: type: string status: type: string description: '' example: Monitored nullable: false enum: - 'In review' - Archived - Monitored description: type: string description: 'Additional information to be displayed in the case.' example: null nullable: true monitoring_frequency: type: integer description: '' example: '7' nullable: true enum: - '0' - '1' - '7' - '28' - '90' - '365' monitoring_frequency_sanctions: type: integer description: 'The frequency in days that the case should be monitored for new sanctions hits. Must be one of 0, 1, 7, 28, 90, 365. If set to 0, the case will not be monitored for sanctions hits.' example: null nullable: true enum: - '0' - '1' - '7' - '28' - '90' - '365' monitoring_frequency_enforcements: type: integer description: 'The frequency in days that the case should be monitored for new enforcement hits. Must be one of 0, 1, 7, 28, 90, 365. If set to 0, the case will not be monitored for enforcement hits.' example: null nullable: true enum: - '0' - '1' - '7' - '28' - '90' - '365' monitoring_frequency_peps: type: integer description: 'The frequency in days that the case should be monitored for new PEP hits. Must be one of 0, 1, 7, 28, 90, 365. If set to 0, the case will not be monitored for PEP hits.' example: null nullable: true enum: - '0' - '1' - '7' - '28' - '90' - '365' monitoring_frequency_other: type: integer description: 'The frequency in days that the case should be monitored for new hits from other sources. Must be one of 0, 1, 7, 28, 90, 365. If set to 0, the case will not be monitored for hits from other sources.' example: null nullable: true enum: - '0' - '1' - '7' - '28' - '90' - '365' monitoring_frequency_news: type: integer description: 'The frequency in days that the case should be monitored for new media hits. Must be one of 0, 1, 7, 28, 90, 365. If set to 0, the case will not be monitored for media hits.' example: null nullable: true enum: - '0' - '1' - '7' - '28' - '90' - '365' name: type: string description: 'Must match the regex /[^'' '',\-\/\.]/. Must not be larger than 255.' example: 'John Doe' nullable: false aliases: type: array description: 'Must not be larger than 255.' example: null items: type: string confidence: type: string description: '' example: Relative nullable: false enum: - Relative - Exact additional_terms: type: array description: 'Must not be larger than 255.' example: null items: type: string sources: type: array description: 'If provided, will update the enabled case sources to the selection. Must be one or more of: sanctions, enforcements, peps, news, other.' example: null items: type: string enum: - sanctions - enforcements - peps - news - other gender: type: string description: '[Person case] Must be one of Male or Female. This field is required when cases.passportVerificationForm is present.' example: Male nullable: true enum: - Female - Male nationalities: type: array description: '[Person case] array of max 10 nationalities, nationality ISO 3166-1 alpha-2 or alpha-3 country code string.' example: - NLD items: type: string country_of_birth: type: string description: '[Person case] ISO 3166-1 alpha-2 or alpha-3 country code string.' example: NLD nullable: true country_of_residence: type: string description: '[Person case] ISO 3166-1 alpha-2 or alpha-3 country code string.' example: NLD nullable: true date_of_birth: type: string description: '[Person case] ISO date string. Must be a valid date in the format Y-m-d.' example: '2000-01-31' nullable: true passportVerificationForm: type: object description: '[Person case] Optional passport check information to be added to the case.' example: null nullable: true properties: country: type: string description: 'This field is required when cases.passportVerificationForm is present. Must not be larger than 255.' example: b nullable: false dateOfExpiry: type: string description: 'This field is required when cases.passportVerificationForm is present. Must not be larger than 255.' example: 'n' nullable: false documentNumber: type: string description: 'This field is required when cases.passportVerificationForm is present. Must not be smaller than 6. Must not be larger than 9.' example: gzmiyvd nullable: false givenNames: type: string description: 'This field is required when cases.passportVerificationForm is present. Must not be larger than 255.' example: l nullable: false lastName: type: string description: 'This field is required when cases.passportVerificationForm is present. Must not be larger than 255.' example: j nullable: false nationality: type: string description: 'This field is required when cases.passportVerificationForm is present. This field must be 3 characters.' example: nik nullable: false optionalData: type: string description: 'Must not be larger than 14.' example: hwaykcmyuwpwlv nullable: true company_number: type: string description: '[Business case] string of max 255 characters. Must not be larger than 255.' example: NL123 nullable: true country: type: string description: '[Business case] ISO 3166-1 alpha-2 or alpha-3 country code string.' example: NL nullable: false address: type: string description: '[Business case] string of max 255 characters. Must not be larger than 255.' example: '3721 West Fork Street, Montana' nullable: true asset_type: type: string description: '[Asset case] Must be one of vessel or aircraft.' example: vessel nullable: true enum: - vessel - aircraft identifier: type: string description: '[Asset case] string of max 255 characters. Must not be larger than 255.' example: '123456' nullable: true search: type: boolean description: "Controls whether or not to initiate a new search after updating the case. By default, this parameter is set to false.\n\nWhen search is set to false (the default), the operation will not trigger a new search on the case. This means that no changes will be made to the existing hits, resolved or unresolved.\nHowever, when you set search to true, the API will perform a new search on the case. Here's what happens when you initiate a new search:\n\nUnresolved Hits: Will be deleted.
\nResolved Hits: Any existing resolved hits, regardless of their current state, will not be deleted.\n\nPossible refound hits: It is possible that some hits that were previously unresolved might be refound during the new search. These hits will reappear as unresolved items.
\nPossible new hits: The new search might also discover new hits that were not present in the previous search. These hits will be added as unresolved items." example: null nullable: true required: - clients - name - confidence - nationalities parameters: - in: path name: id description: 'The ID of the case.' example: B3b1a0de-E464-0660-dEBB-cE54cDE1a84b|15 required: true schema: type: string '/api/v1/cases/{id}/hits-key-information': get: summary: 'Case hits key information' operationId: caseHitsKeyInformation description: "This endpoint allows you to get the key information of a case's hits." parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: unresolved: enforcements: - data: birth_dates: null connections: null name: 'John Doe' nationalities: - country: 'United States of America' resolution: unresolved source: enforcements properties: unresolved: type: object properties: enforcements: type: array example: - data: birth_dates: null connections: null name: 'John Doe' nationalities: - country: 'United States of America' resolution: unresolved source: enforcements items: type: object properties: data: type: object properties: birth_dates: type: string example: null connections: type: string example: null name: type: string example: 'John Doe' nationalities: type: array example: - country: 'United States of America' items: type: object properties: country: { type: string, example: 'United States of America' } resolution: type: string example: unresolved source: type: string example: enforcements tags: - Cases parameters: - in: path name: id description: 'The ID of the case.' example: B3b1a0de-E464-0660-dEBB-cE54cDE1a84b|15 required: true schema: type: string /api/v1/clients: post: summary: 'Create client' operationId: createClient description: 'This endpoint allows you to create a new client.' parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: id: 39304 name: b organization_id: 1 created_at: '2025-09-04T10:25:52.000000Z' updated_at: '2025-09-04T10:25:52.000000Z' description: 'Et animi quos velit et fugiat.' status: Active assignee_user_id: null onboarding_status: null onboarding_risk: null cases_count: 0 risk: null hits_total_count: 0 hits_unresolved_count: 0 resolve_progress: 100 properties: id: type: integer example: 39304 name: type: string example: b organization_id: type: integer example: 1 created_at: type: string example: '2025-09-04T10:25:52.000000Z' updated_at: type: string example: '2025-09-04T10:25:52.000000Z' description: type: string example: 'Et animi quos velit et fugiat.' status: type: string example: Active assignee_user_id: type: string example: null onboarding_status: type: string example: null onboarding_risk: type: string example: null cases_count: type: integer example: 0 risk: type: string example: null hits_total_count: type: integer example: 0 hits_unresolved_count: type: integer example: 0 resolve_progress: type: integer example: 100 tags: - Clients requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be larger than 255.' example: b nullable: false description: type: string description: 'Must not be larger than 2000.' example: 'Et animi quos velit et fugiat.' nullable: true required: - name '/api/v1/clients/{id}': get: summary: 'Get client' operationId: getClient description: 'This endpoint allows you to get detailed information on a specific client.' parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 404: description: '' content: application/json: schema: type: object example: message: 'No query results for model [App\Models\Client].' properties: message: type: string example: 'No query results for model [App\Models\Client].' tags: - Clients parameters: - in: path name: id description: 'The ID of the client.' example: 3456 required: true schema: type: integer /api/v1/clients/searches: post: summary: 'Search clients' operationId: searchClients description: "This endpoint allows you to search for clients using filters.\nReturning basic information on a list of clients.\nPaginating through results is possible using the per_page and page parameters." parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: [] meta: current_page: 1 from: null last_page: 1 per_page: 10 to: null total: 0 properties: data: type: array example: [] meta: type: object properties: current_page: type: integer example: 1 from: type: string example: null last_page: type: integer example: 1 per_page: type: integer example: 10 to: type: string example: null total: type: integer example: 0 tags: - Clients requestBody: required: true content: application/json: schema: type: object properties: custom_filters: type: array description: "Specific filters:
- 'has_onboarding_forms': Filter clients that have at least one onboarding form." example: - has_onboarding_forms items: type: string enum: - 'cases assigned' - has_onboarding_forms id: type: array description: 'Client IDs to be filtered on. Must not be smaller than 1.' example: null items: type: integer not_id: type: array description: 'Must not be smaller than 1.' example: - 16 items: type: integer assignee_user_id: type: array description: 'Must not be smaller than 1.' example: - 22 items: type: integer client_client_id: type: array description: 'Must not be smaller than 1.' example: - 67 items: type: integer not_client_client_id: type: array description: 'Must not be smaller than 1.' example: - 66 items: type: integer not_cases_id: type: array description: 'Must not be smaller than 1.' example: - 27 items: type: integer name: type: string description: 'Search on client names. Supports SQL LIKE wildcards.' example: null nullable: true onboarding_status: type: array description: '' example: - 'waiting for approval' items: type: string enum: - 'waiting for client' - 'in review' - 'waiting for approval' - completed - declined organization_id: type: array description: 'Filter on clients from a specific organization (if token has access to multiple organizations). Must not be smaller than 1.' example: null items: type: integer page: type: integer description: 'Page to be returned. Must not be smaller than 1.' example: 1 nullable: false per_page: type: integer description: 'number between 1 and 1000. Must not be smaller than 1. Must not be larger than 1000.' example: 10 nullable: false sort_by: type: string description: '' example: updated_at nullable: true enum: - updated_at - name - risk - resolve_progress - status - onboarding_status sort_order: type: string description: '' example: desc nullable: true enum: - asc - desc status: type: array description: '' example: null items: type: string enum: - Active - Archived updated_at: type: object description: 'A date range, always expanded to full days (start = 00:00:00, end = 23:59:59).' example: - '2025-01-01' - '2025-01-31' nullable: true properties: { } required: - id - not_id - assignee_user_id - client_client_id - not_client_client_id - not_cases_id - organization_id '/api/v1/clients/{id}/clients': post: summary: 'Link clients' operationId: linkClients description: 'This endpoint allows you to link a client to other clients.' parameters: [] responses: 204: description: 'Clients linked successfully.' content: application/json: schema: type: object nullable: true tags: - Clients requestBody: required: true content: application/json: schema: type: object properties: client_ids: type: array description: "The list of client id's to link to the client." example: - 2 - 3 items: type: string required: - client_ids delete: summary: 'Unlink clients' operationId: unlinkClients description: 'This endpoint allows you to unlink a client from other clients.' parameters: [] responses: 204: description: 'Clients unlinked successfully.' content: application/json: schema: type: object nullable: true tags: - Clients requestBody: required: true content: application/json: schema: type: object properties: client_ids: type: array description: "The list of client id's to unlink from the client." example: - 2 - 3 items: type: string required: - client_ids parameters: - in: path name: id description: 'The id of the client that you want to link to other clients.' example: 1 required: true schema: type: integer /api/v1/onboarding-form-templates/searches: post: summary: 'Search onboarding form templates' operationId: searchOnboardingFormTemplates description: 'This endpoint allows you search for any created onboarding form templates.' parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: - created_at: '2024-11-28T08:34:03.000000Z' external_name: 'Standard Form' id: 88 name: 'Standard Form' organization_id: 15 updated_at: '2024-11-28T08:34:03.000000Z' meta: current_page: 1 from: 1 last_page: 1 per_page: 10 to: 1 total: 1 properties: data: type: array example: - created_at: '2024-11-28T08:34:03.000000Z' external_name: 'Standard Form' id: 88 name: 'Standard Form' organization_id: 15 updated_at: '2024-11-28T08:34:03.000000Z' items: type: object properties: created_at: type: string example: '2024-11-28T08:34:03.000000Z' external_name: type: string example: 'Standard Form' id: type: integer example: 88 name: type: string example: 'Standard Form' organization_id: type: integer example: 15 updated_at: type: string example: '2024-11-28T08:34:03.000000Z' meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 per_page: type: integer example: 10 to: type: integer example: 1 total: type: integer example: 1 tags: - 'Onboarding forms' requestBody: required: false content: application/json: schema: type: object properties: id: type: array description: 'Must not be smaller than 1.' example: null items: type: integer page: type: integer description: 'Page to be returned. Must not be smaller than 1.' example: 1 nullable: false per_page: type: integer description: 'number between 1 and 1000. Must not be smaller than 1. Must not be larger than 1000.' example: 10 nullable: false updated_at: type: object description: 'A date range, always expanded to full days (start = 00:00:00, end = 23:59:59).' example: - '2025-01-01' - '2025-01-31' nullable: true properties: { } sort_by: type: string description: '' example: created_at nullable: true enum: - created_at - updated_at - name sort_order: type: string description: '' example: asc nullable: true enum: - asc - desc organization_id: type: array description: 'Must not be smaller than 1.' example: null items: type: integer name: type: string description: 'Must not be larger than 255.' example: null nullable: true /api/v1/onboarding-forms: post: summary: 'Create onboarding form' operationId: createOnboardingForm description: "This endpoint allows you to create an onboarding form for an existing client.
\nAdding an onboarding form to a client will make it visible in the Onboarding application." parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 201: description: '' content: application/json: schema: type: object example: assignee_user_id: 24 client_id: 2834 created_at: '2025-03-31T11:22:10.000000Z' external_name: 'Standard Form' external_questions_open: 1 external_questions_total: 1 id: 273 name: 'Standard Form' organization_id: 10240 questions_open: 1 questions_total: 1 status: 'in progress' updated_at: '2025-03-31T11:22:10.000000Z' properties: assignee_user_id: type: integer example: 24 client_id: type: integer example: 2834 created_at: type: string example: '2025-03-31T11:22:10.000000Z' external_name: type: string example: 'Standard Form' external_questions_open: type: integer example: 1 external_questions_total: type: integer example: 1 id: type: integer example: 273 name: type: string example: 'Standard Form' organization_id: type: integer example: 10240 questions_open: type: integer example: 1 questions_total: type: integer example: 1 status: type: string example: 'in progress' updated_at: type: string example: '2025-03-31T11:22:10.000000Z' tags: - 'Onboarding forms' requestBody: required: true content: application/json: schema: type: object properties: assignee_user_email: type: string description: 'This field must be a valid email address of a user in the organisation. Leaving this empty will assign the onboarding form to the authenticated user that performs the API call.' example: gbailey@example.net nullable: true external_users: type: array description: 'A list of all the individuals you want to send the onboarding form to. These individuals will receive an email requesting they fill out the form. Must not be smaller than 1.' example: - [] items: type: object properties: first_name: type: string description: 'Must not be larger than 255.' example: g nullable: false last_name: type: string description: 'Must not be larger than 255.' example: z nullable: false email: type: string description: 'This field must be a valid email address.' example: rempel.chadrick@example.org nullable: false required: - first_name - last_name - email onboarding_form_template_id: type: integer description: 'You can retrieve the available onboarding form templates by using the Search Onboarding Form Templates endpoint. This endpoint will return a list of templates, including their IDs, which you can use when creating an onboarding form. Must not be smaller than 1.' example: 16 nullable: false client_id: type: integer description: 'To find the appropriate client ID, you can use the Search Clients endpoint. This endpoint allows you to filter and retrieve clients. The response will include the client IDs, which you can use when creating an onboarding form. Alternatively new clients can be created using the Create Client which directly return the id of the created client. Must not be smaller than 1.' example: 22 nullable: false required: - external_users - onboarding_form_template_id - client_id /api/v1/onboarding-forms/searches: post: summary: 'Search onboarding forms' operationId: searchOnboardingForms description: "This endpoint allows you to search for onboarding forms using filters.\nReturning basic information on a list of onboarding forms.\nPaginating through results is possible using the per_page and page parameters." parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: [] meta: current_page: 1 from: null last_page: 1 per_page: 10 to: null total: 0 properties: data: type: array example: [] meta: type: object properties: current_page: type: integer example: 1 from: type: string example: null last_page: type: integer example: 1 per_page: type: integer example: 10 to: type: string example: null total: type: integer example: 0 tags: - 'Onboarding forms' requestBody: required: true content: application/json: schema: type: object properties: id: type: array description: 'Onboarding form IDs to be filtered on. Must not be smaller than 1.' example: null items: type: integer page: type: integer description: 'Page to be returned. Must not be smaller than 1.' example: 1 nullable: false per_page: type: integer description: 'number between 1 and 1000. Must not be smaller than 1. Must not be larger than 1000.' example: 10 nullable: false name: type: string description: 'Must not be larger than 255.' example: b nullable: true updated_at: type: object description: 'A date range, always expanded to full days (start = 00:00:00, end = 23:59:59).' example: - '2025-01-01' - '2025-01-31' nullable: true properties: { } sort_by: type: string description: '' example: created_at nullable: true enum: - created_at - updated_at - name sort_order: type: string description: '' example: asc nullable: true enum: - asc - desc organization_id: type: array description: 'Filter on onboarding forms from a specific organization (if token has access to multiple organizations). Must not be smaller than 1.' example: null items: type: integer external_user_ids: type: array description: 'Must not be smaller than 1.' example: - 22 items: type: integer client_id: type: array description: 'Must not be smaller than 1.' example: - 67 items: type: integer with: type: array description: 'Additional information to include with the onboarding forms. Must be one of: user, externalUsers, organizationTheme.' example: - user items: type: string enum: - user - externalUsers - organizationTheme - questions - 'client:id,name' required: - external_user_ids - with /api/v1/onboarding-form-questions/searches: post: summary: 'Search onboarding form questions' operationId: searchOnboardingFormQuestions description: "This endpoint allows you to search for onboarding form questions using filters.

\nThe following properties are always returned for each question:
\n- id: A globally unique identifier of the question.\n- external_id: An optional identifier manually assigned to questions by developers.\n- question_id: A unique identifier of the question within the onboarding form.\n- parent_question_id: This is the 'question_id' of the parent question if it exists. It is used to retrieve a question's parent, enabling hierarchical organization of questions. This is particularly useful for groups of questions from repeatable entities, such as persons, businesses, or other repeaters.\nFor example, in a form with questions about multiple individuals (e.g., Person 1, Person 2), the parent_question_id links each nested question (like \"First Name\" or \"Last Name\") to its corresponding parent entity. By querying with the parent_question_id, you can determine which person or entity a specific question belongs to within the form structure.\nRepeatable entity questions will always have an empty answer field.\n- linked_to_parent_answer_option: If this question is a child of a 'true_false' question, this field will contain the option of the parent question that this question is linked to. For example if the parent question has a 'Yes' and 'No' option, the parent question's answer is 'Yes', and this field is 'Yes', then this question is visible. If this field is 'No', then this question is hidden.\n- title\n- answer\n- type\n- created_at\n- updated_at" parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 164 question_id: 2 parent_question_id: null title: 'Yes / No' answer: 'Yes' type: true_false created_at: '2024-04-18T09:55:40.000000Z' updated_at: '2024-04-18T09:55:48.000000Z' - id: 178 question_id: 3 parent_question_id: null title: 'Date of birth' answer: '2024-04-02' type: datepicker created_at: '2024-04-19T07:47:24.000000Z' updated_at: '2024-04-19T07:58:17.000000Z' - id: 168 question_id: 4 parent_question_id: null title: 'True or false' answer: 'Yes' type: true_false created_at: '2024-04-18T10:01:46.000000Z' updated_at: '2024-04-18T10:01:54.000000Z' - id: 173 question_id: 5 parent_question_id: null title: 'Yes / No' answer: 'Yes' type: true_false created_at: '2024-04-18T11:40:29.000000Z' updated_at: '2024-04-18T11:51:59.000000Z' - id: 175 question_id: 6 parent_question_id: null title: Name answer: 'John Doe' type: text created_at: '2024-04-18T11:51:56.000000Z' updated_at: '2024-04-18T11:52:01.000000Z' - id: 176 question_id: 7 parent_question_id: null title: E-mail answer: john.doe@vartion.com type: text created_at: '2024-04-18T11:51:56.000000Z' updated_at: '2024-04-18T11:52:04.000000Z' - id: 548 question_id: 8 parent_question_id: null title: Name answer: null type: text created_at: '2024-05-28T11:15:07.000000Z' updated_at: '2024-05-28T11:15:07.000000Z' - id: 170 question_id: 9 parent_question_id: null title: Website answer: null type: url created_at: '2024-04-18T10:01:46.000000Z' updated_at: '2024-05-07T07:39:07.000000Z' - id: 166 question_id: 10 parent_question_id: null title: 'Please give a number' answer: '2' type: number created_at: '2024-04-18T10:01:46.000000Z' updated_at: '2024-04-23T12:42:32.000000Z' - id: 167 question_id: 11 parent_question_id: null title: Website answer: 'http://example.com' type: url created_at: '2024-04-18T10:01:46.000000Z' updated_at: '2024-04-23T12:42:38.000000Z' - id: 171 question_id: 12 parent_question_id: null title: 'Choose a fruit' answer: null type: dropdown created_at: '2024-04-18T10:01:46.000000Z' updated_at: '2024-05-07T07:39:10.000000Z' - id: 172 question_id: 13 parent_question_id: null title: 'Choose another fruit' answer: a type: dropdown created_at: '2024-04-18T10:01:46.000000Z' updated_at: '2024-04-23T12:42:40.000000Z' - id: 177 question_id: 14 parent_question_id: null title: 'Please upload your document' answer: null type: upload created_at: '2024-04-18T11:51:56.000000Z' updated_at: '2024-04-18T11:51:56.000000Z' - id: 189 question_id: 15 parent_question_id: null title: 'Persons to email' answer: null type: repeater created_at: '2024-04-22T08:11:43.000000Z' updated_at: '2024-04-23T14:28:48.000000Z' - id: 185 question_id: 16 parent_question_id: 15 title: E-mail answer: null type: text created_at: '2024-04-22T08:11:43.000000Z' updated_at: '2024-04-23T14:28:48.000000Z' - id: 169 question_id: 17 parent_question_id: null title: 'Please choose another number' answer: '2' type: number created_at: '2024-04-18T10:01:46.000000Z' updated_at: '2024-04-23T12:43:29.000000Z' meta: current_page: 1 from: 1 last_page: 13 per_page: 15 to: 15 total: 187 properties: data: type: array example: - id: 164 question_id: 2 parent_question_id: null title: 'Yes / No' answer: 'Yes' type: true_false created_at: '2024-04-18T09:55:40.000000Z' updated_at: '2024-04-18T09:55:48.000000Z' - id: 178 question_id: 3 parent_question_id: null title: 'Date of birth' answer: '2024-04-02' type: datepicker created_at: '2024-04-19T07:47:24.000000Z' updated_at: '2024-04-19T07:58:17.000000Z' - id: 168 question_id: 4 parent_question_id: null title: 'True or false' answer: 'Yes' type: true_false created_at: '2024-04-18T10:01:46.000000Z' updated_at: '2024-04-18T10:01:54.000000Z' - id: 173 question_id: 5 parent_question_id: null title: 'Yes / No' answer: 'Yes' type: true_false created_at: '2024-04-18T11:40:29.000000Z' updated_at: '2024-04-18T11:51:59.000000Z' - id: 175 question_id: 6 parent_question_id: null title: Name answer: 'John Doe' type: text created_at: '2024-04-18T11:51:56.000000Z' updated_at: '2024-04-18T11:52:01.000000Z' - id: 176 question_id: 7 parent_question_id: null title: E-mail answer: john.doe@vartion.com type: text created_at: '2024-04-18T11:51:56.000000Z' updated_at: '2024-04-18T11:52:04.000000Z' - id: 548 question_id: 8 parent_question_id: null title: Name answer: null type: text created_at: '2024-05-28T11:15:07.000000Z' updated_at: '2024-05-28T11:15:07.000000Z' - id: 170 question_id: 9 parent_question_id: null title: Website answer: null type: url created_at: '2024-04-18T10:01:46.000000Z' updated_at: '2024-05-07T07:39:07.000000Z' - id: 166 question_id: 10 parent_question_id: null title: 'Please give a number' answer: '2' type: number created_at: '2024-04-18T10:01:46.000000Z' updated_at: '2024-04-23T12:42:32.000000Z' - id: 167 question_id: 11 parent_question_id: null title: Website answer: 'http://example.com' type: url created_at: '2024-04-18T10:01:46.000000Z' updated_at: '2024-04-23T12:42:38.000000Z' - id: 171 question_id: 12 parent_question_id: null title: 'Choose a fruit' answer: null type: dropdown created_at: '2024-04-18T10:01:46.000000Z' updated_at: '2024-05-07T07:39:10.000000Z' - id: 172 question_id: 13 parent_question_id: null title: 'Choose another fruit' answer: a type: dropdown created_at: '2024-04-18T10:01:46.000000Z' updated_at: '2024-04-23T12:42:40.000000Z' - id: 177 question_id: 14 parent_question_id: null title: 'Please upload your document' answer: null type: upload created_at: '2024-04-18T11:51:56.000000Z' updated_at: '2024-04-18T11:51:56.000000Z' - id: 189 question_id: 15 parent_question_id: null title: 'Persons to email' answer: null type: repeater created_at: '2024-04-22T08:11:43.000000Z' updated_at: '2024-04-23T14:28:48.000000Z' - id: 185 question_id: 16 parent_question_id: 15 title: E-mail answer: null type: text created_at: '2024-04-22T08:11:43.000000Z' updated_at: '2024-04-23T14:28:48.000000Z' - id: 169 question_id: 17 parent_question_id: null title: 'Please choose another number' answer: '2' type: number created_at: '2024-04-18T10:01:46.000000Z' updated_at: '2024-04-23T12:43:29.000000Z' items: type: object properties: id: type: integer example: 164 question_id: type: integer example: 2 parent_question_id: type: string example: null title: type: string example: 'Yes / No' answer: type: string example: 'Yes' type: type: string example: true_false created_at: type: string example: '2024-04-18T09:55:40.000000Z' updated_at: type: string example: '2024-04-18T09:55:48.000000Z' meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 13 per_page: type: integer example: 15 to: type: integer example: 15 total: type: integer example: 187 tags: - 'Onboarding forms' requestBody: required: true content: application/json: schema: type: object properties: external_ids: type: array description: 'Filter on specific question external IDs. Must not be larger than 200.' example: - ABC123 items: type: string nullable: true page: type: integer description: 'Page to be returned. Must not be smaller than 1.' example: 1 nullable: true per_page: type: integer description: 'number between 1 and 1000. Must not be smaller than 1. Must not be larger than 1000.' example: 10 nullable: true onboarding_form_ids: type: array description: 'Filter on specific onboarding forms. Must not be smaller than 1.' example: null items: type: integer required: - onboarding_form_ids '/api/v1/onboarding-form-question-uploads/{id}': get: summary: 'Download `upload` question file' operationId: downloaduploadQuestionFile description: 'This endpoint allows you to download an uploaded file for a question in an onboarding form.' parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: application/pdf content: text/plain: schema: type: string example: '' tags: - 'Onboarding forms' parameters: - in: path name: id description: 'The ID of the onboarding form question.' example: 1 required: true schema: type: integer /api/v1/one-time-case-links: post: summary: 'Create one time case links' operationId: createOneTimeCaseLinks description: 'This endpoint allows you to create one time case links.
' parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: case_uuid: ac6962da-4ff0-42ad-b5ee-35153d15e924 created_at: '2023-08-14T10:50:25.000000Z' created_by_id: 4 expires_at: '2099-01-31T23:00:00.000000Z' id: 11 return_url: 'https://localhost' token: ehgwKBKPPubqQ7CC updated_at: '2023-08-14T10:50:25.000000Z' user_id: 13989 properties: case_uuid: type: string example: ac6962da-4ff0-42ad-b5ee-35153d15e924 created_at: type: string example: '2023-08-14T10:50:25.000000Z' created_by_id: type: integer example: 4 expires_at: type: string example: '2099-01-31T23:00:00.000000Z' id: type: integer example: 11 return_url: type: string example: 'https://localhost' token: type: string example: ehgwKBKPPubqQ7CC updated_at: type: string example: '2023-08-14T10:50:25.000000Z' user_id: type: integer example: 13989 tags: - 'One time case links' requestBody: required: true content: application/json: schema: type: object properties: case_uuid: type: uuid description: 'The uuid of the case.' example: ac6962da-4ff0-42ad-b5ee-35153d15e924 nullable: false user_email: type: email description: 'The email address of the user that will use the link.' example: example@vartion.com nullable: false return_url: type: url description: 'The url that the user will be redirected to when they finish resolving the case. If no return_url is supplied, the window is closed instead. (this only works when the page is opened in a new tab)' example: 'https://localhost' nullable: false expires_at: type: datetime description: 'When the link should expire. This needs to be later than "now" and less than 31 days from now.' example: '1970-01-31 23:00:00' nullable: false interface_language: type: string description: 'The language that the user interface should be displayed in. Must be one of: en-gb, en, nl, fr, ru, or es.' example: en-gb nullable: false required: - case_uuid - user_email - expires_at '/api/v1/one-time-case-links/{id}': get: summary: 'View a one time case link' operationId: viewAOneTimeCaseLink description: 'This endpoint allows you to view a one time case link.
' parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: case_uuid: ac6962da-4ff0-42ad-b5ee-35153d15e924 created_at: '2023-08-14T10:50:25.000000Z' created_by_id: 4 expires_at: '2099-01-31T23:00:00.000000Z' id: 11 return_url: 'https://localhost' updated_at: '2023-08-14T10:50:25.000000Z' used_at: null user_id: 13989 properties: case_uuid: type: string example: ac6962da-4ff0-42ad-b5ee-35153d15e924 created_at: type: string example: '2023-08-14T10:50:25.000000Z' created_by_id: type: integer example: 4 expires_at: type: string example: '2099-01-31T23:00:00.000000Z' id: type: integer example: 11 return_url: type: string example: 'https://localhost' updated_at: type: string example: '2023-08-14T10:50:25.000000Z' used_at: type: string example: null user_id: type: integer example: 13989 tags: - 'One time case links' delete: summary: 'Delete a one time case link' operationId: deleteAOneTimeCaseLink description: 'This endpoint allows you to delete a one time case link.
' parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 404: description: '' content: application/json: schema: type: object example: message: '' properties: message: type: string example: '' tags: - 'One time case links' parameters: - in: path name: id description: 'The id of the one time case link.' example: 1 required: true schema: type: integer /v1/one-time-case-link-authentication: get: summary: 'Authenticate using a one time case link' operationId: authenticateUsingAOneTimeCaseLink description: "This endpoint allows you to authenticate using a one time case link.
\nWhen successful, the user will be redirected to the page where they can resolve the linked case." parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "\n\n...\n\n" 422: description: '' content: application/json: schema: type: object example: message: 'Incorrect id or token.' errors: authentication: - 'Incorrect id or token.' properties: message: type: string example: 'Incorrect id or token.' errors: type: object properties: authentication: type: array example: - 'Incorrect id or token.' items: type: string tags: - 'One time case links' requestBody: required: true content: application/json: schema: type: object properties: id: type: integer description: 'The one time case link ID.' example: 1 nullable: false token: type: 'The one time case link token.' description: '' example: fpncIktnu0GfUKJl nullable: false required: - id - token security: [] post: summary: 'Authenticate using a one time case link' operationId: authenticateUsingAOneTimeCaseLink description: "This endpoint allows you to authenticate using a one time case link.
\nWhen successful, the user will be redirected to the page where they can resolve the linked case." parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "\n\n...\n\n" 422: description: '' content: application/json: schema: type: object example: message: 'Incorrect id or token.' errors: authentication: - 'Incorrect id or token.' properties: message: type: string example: 'Incorrect id or token.' errors: type: object properties: authentication: type: array example: - 'Incorrect id or token.' items: type: string tags: - 'One time case links' requestBody: required: true content: application/json: schema: type: object properties: id: type: integer description: 'The one time case link ID.' example: 1 nullable: false token: type: 'The one time case link token.' description: '' example: fpncIktnu0GfUKJl nullable: false required: - id - token security: [] /api/v1/pdf/case: post: summary: 'Generate case reports' operationId: generateCaseReports description: "This endpoint allows you to start the generation of one or more PDF case reports.\nCases to be used are selected using the filter parameter.\nAn id is returned which can be used to check if the download is finished and download the PDF when it is finished." parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"id\": \"99d92417-1264-4cce-9e86-e71a8357e044\",\n \"name\": \"Generating case reports...\",\n \"totalJobs\": 1,\n \"pendingJobs\": 1,\n \"progress\": 0,\n \"createdAt\": \"2023-08-09T11:02:04.000000Z\",\n}" tags: - Reports requestBody: required: false content: application/json: schema: type: object properties: batch_name: type: string description: 'Must not be larger than 255.' example: b nullable: true filename: type: string description: 'Must not be larger than 255.' example: 'n' nullable: true detailed: type: boolean description: '' example: true nullable: false language: type: string description: 'The language that the report should be generated in. Must be one of: en-gb, en, nl, fr, ru, or es.' example: ru nullable: true enum: - en-gb - en - nl - fr - ru - es pages: type: array description: 'Pages to include in the report. Must be one or more of: overview, input, policies, passport_verification, key_findings, audit, comments, unresolved, positive, negative.' example: - overview items: type: string enum: - overview - input - policies - passport_verification - key_findings - audit - comments - unresolved - positive - negative comment: type: string description: 'An additional comment to be displayed in the report.' example: 'Automatically generated from the Pascal API' nullable: true to_email: type: boolean description: 'Whether or not to send the report as an email to the API user.' example: false nullable: false filters: type: object description: '' example: [] nullable: false properties: id: type: array description: 'Case IDs to be filtered on. Must not be smaller than 1.' example: null items: type: integer type: type: array description: 'Must be one of Person, Business, or Asset.' example: null items: type: string enum: - Person - Business - Asset status: type: array description: '' example: null items: type: string enum: - Preview - 'In review' - Archived - Monitored user_id: type: array description: 'Filter on case assignees using user ids.' example: null items: type: integer nullable: true group_id: type: array description: 'Filter on case assigned to groups using group ids.' example: null items: type: integer nullable: true organization_id: type: array description: 'Filter on cases from a specific organization (if token has access to multiple organizations).' example: null items: type: integer origin: type: array description: '' example: null items: type: string enum: - person-check - business-check - hyperlink confidence: type: array description: '' example: null items: type: string enum: - Exact - Relative created_at: type: object description: '' example: null nullable: true properties: { } updated_at: type: object description: 'A date range, always expanded to full days (start = 00:00:00, end = 23:59:59).' example: - '2025-01-01' - '2025-01-31' nullable: true properties: { } hit_time_range: type: object description: '' example: null nullable: true properties: { } hit_resolution: type: array description: '' example: - unresolved items: type: string enum: - unresolved - positive - negative hit_source: type: array description: '' example: - news items: type: string enum: - sanctions - enforcements - peps - news - other name: type: string description: 'Search on case names. Supports SQL LIKE wildcards. Must not be larger than 255.' example: null nullable: true client_id: type: array description: 'Cases associated to a list of clients. Must not be smaller than 1.' example: null items: type: integer nullable: true exclude_client_id: type: array description: 'Exclude cases associated to any of a list of clients. Must not be smaller than 1.' example: null items: type: integer nullable: true client_status: type: array description: '' example: - Active items: type: string enum: - Active - Archived deleted: type: boolean description: '' example: false nullable: false uuid: type: array description: 'Search on case UUIDs. Supports SQL LIKE wildcards. This field must be a valid UUID.' example: - a2546955-de2d-4907-a533-0846ee46f719 items: type: string query: type: string description: 'Must not be larger than 255.' example: null nullable: true nationalities: type: array description: '' example: null items: type: string nullable: true country_of_birth: type: array description: '' example: null items: type: string nullable: true country_of_residence: type: array description: '' example: null items: type: string nullable: true date_of_birth: type: array description: 'This field must be a valid date.' example: null items: type: string nullable: true company_number: type: string description: 'Must not be larger than 255.' example: g nullable: true address: type: string description: 'Must not be larger than 255.' example: z nullable: true country: type: array description: '' example: null items: type: string nullable: true identifier: type: array description: 'The identifier of an asset. Must not be larger than 255.' example: null items: type: string nullable: true risk: type: array description: '' example: null items: type: string enum: - 'very low' - low - moderate - high - 'very high' - 'no risk' custom_filters: type: array description: '' example: null items: type: string required: - hit_resolution - hit_source - client_status '/api/v1/reports/{id}/download': get: summary: 'Download reports' operationId: downloadReports description: 'This endpoint allows you to download a previously generated report, using a report id or a report job id.' parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: File content: text/plain: schema: type: string example: 'PDF report file' 404: description: '' content: text/plain: schema: type: string example: 'Report is not (yet) generated' tags: - Reports parameters: - in: path name: id description: 'The ID of the report.' example: B3b1a0de-E464-0660-dEBB-cE54cDE1a84b|15 required: true schema: type: string /api/v1/transactions/import: post: summary: 'Import transactions' operationId: importTransactions description: "This endpoint allows you to import a list of transactions asynchronously.\n\n**Note:** Access to transaction monitoring is required to use this endpoint." parameters: - in: header name: OrganizationId description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: id: 99cbb5f6-49a7-492c-a1de-92ff356d98d8 name: 'Importing transactions...' totalJobs: 1 pendingJobs: 1 progress: 0 createdAt: '2023-08-02T18:48:22.000000Z' finishedAt: null properties: id: type: string example: 99cbb5f6-49a7-492c-a1de-92ff356d98d8 name: type: string example: 'Importing transactions...' totalJobs: type: integer example: 1 pendingJobs: type: integer example: 1 progress: type: integer example: 0 createdAt: type: string example: '2023-08-02T18:48:22.000000Z' finishedAt: type: string example: null tags: - Transactions requestBody: required: true content: application/json: schema: type: object properties: transactions: type: array description: 'An array of transactions to be imported. You can import up to 200 transactions per request.' example: - [] items: type: object properties: client_account_number: type: string description: 'The client bank account number (spaces will be automatically removed). Must not be larger than 255.' example: '1234567890' nullable: false client_swift_code: type: string description: 'The client SWIFT/BIC code (spaces will be automatically removed). Must not be larger than 255.' example: ABNANL2A nullable: true client_bank_account_country: type: string description: 'ISO 3166-1 alpha-2 or alpha-3 country code for the client bank account.' example: NL nullable: true identifier: type: string description: 'Unique identifier for the transaction. If provided and a transaction with the same identifier already exists, it will be skipped. If not provided, an ID will be generated automatically. Must not be larger than 255.' example: TXN123456 nullable: true amount: type: number description: 'The transaction amount. Must not be smaller than 0. Must not be larger than 999999999999999.' example: 1000.5 nullable: false currency: type: string description: 'The currency code for the transaction amount.' example: EUR nullable: false direction: type: string description: 'The direction of the transaction. Must be either "incoming" or "outgoing".' example: incoming nullable: false enum: - incoming - outgoing counter_party_name: type: string description: 'The name of the counter party. Must not be larger than 255.' example: 'John Doe' nullable: true counter_party_currency: type: string description: 'The currency code for the counter party (if applicable).' example: USD nullable: true counter_party_account_number: type: string description: 'The counter party bank account number (spaces will be automatically removed). Must not be larger than 255.' example: '0987654321' nullable: false counter_party_swift_code: type: string description: 'The counter party SWIFT/BIC code (spaces will be automatically removed). Must not be larger than 255.' example: RABONL2U nullable: true counter_party_bank_name: type: string description: 'The name of the counter party bank. Must not be larger than 255.' example: Rabobank nullable: true counter_party_bank_account_country: type: string description: 'ISO 3166-1 alpha-2 or alpha-3 country code for the counter party bank account.' example: NL nullable: true description: type: string description: 'Description or reference for the transaction. Must not be larger than 2000.' example: 'Invoice payment #12345' nullable: true transaction_date: type: string description: 'The date and time when the transaction occurred. Accepts ISO 8601 format with timezone information (e.g., 2023-08-02T14:30:00+02:00) or simple format (2023-08-02 14:30:00). This field must be a valid date.' example: '2023-08-02T14:30:00+02:00' nullable: true type: type: string description: 'The type of transaction. Must not be larger than 255.' example: wire_transfer nullable: true balance_after_transaction: type: number description: 'The account balance on the bank account after this transaction was processed. Must not be smaller than -999999999999999. Must not be larger than 999999999999999.' example: 15000.75 nullable: true required: - client_account_number - amount - currency - direction - counter_party_account_number batch_id: type: string description: 'Because each import request is limited to 200 items, you can use this parameter to add more items to an existing batch. If the batch does not exist or is already finished, a 404 response will be returned. This field must be a valid UUID.' example: 99cbb5f6-49a7-492c-a1de-92ff356d98d8 nullable: true count: type: integer description: 'When you want to import using multiple requests in a single batch, you should provide the total number of items to import in your first request (without a batch_id). When a batch has nothing to process, it will remain active for 1 minute, allowing you to add more items to it. When the total number of items has been processed, the batch will be marked as finished. Must not be smaller than 1.' example: 150 nullable: true required: - transactions