---
openapi: 3.1.0
info:
  description: |
    dilisense provides REST APIs for screening individuals and entities against sanction, PEP and criminal watchlists and against adverse media. All APIs are served from `https://api.dilisense.com/v1/`, accept GET requests over HTTPS and answer in JSON, successes as well as errors.

    These guides apply to all APIs:

    - [Authentication](https://developers.dilisense.com/using-the-api/authentication) with the x-api-key header
    - [Errors](https://developers.dilisense.com/using-the-api/errors), including throttling and retries
    - [Quotas](https://developers.dilisense.com/using-the-api/quotas), and the usage endpoint that shows where you stand
    - [Versioning](https://developers.dilisense.com/using-the-api/versioning)
  title: dilisense API
  version: "1.0"
components:
  schemas:
    AmlRecord:
      type: object
      description: "A record from a sanction, PEP, criminal or other list. Attributes\
        \ which are empty are not present in the response. Individuals and entities\
        \ have different attributes."
      properties:
        id:
          type: string
          description: The unique id across the whole dataset in an alphanumeric format
            (e.g. 9a18cb44f9ff6af5).
        source_id:
          type: string
          description: The source id of the list that can be queried by the getSourceList
            API method call.
        source_type:
          type: string
          description: |-
            - SANCTION
            - PEP
            - CRIMINAL
            - NON_COMPLIANT_TAXPAYER
            - OTHER (These sources need to be requested from clients as they are not included by default. The current list is available at https://dilisense.com/en/sources/additional-sources)

            One of these values will be set. More values may be added.
        pep_type:
          type: string
          description: |-
            - POLITICIAN
            - JUDGE
            - BOARD_MEMBER_OF_CENTRAL_BANK
            - EXECUTIVE_AUDITOR
            - ADMINISTRATION_OFFICE_EXECUTIVE
            - MILITARY_OFFICIAL
            - EMBASSY_OFFICIAL
            - INTERNATIONAL_ORGANIZATION_OFFICIAL
            - RELATIVES_AND_CLOSE_ASSOCIATES
            - STATE_OWNED_ENTERPRISE
            - BOARD_MEMBER_OF_STATE_OWNED_ENTERPRISE
            - PROSECUTION_OFFICIAL
            - AGENCY_OFFICIAL
            - OTHER

            One of these values will be set only for source_type PEP. Entities only have STATE_OWNED_ENTERPRISE.
        pep_level:
          type: integer
          format: int32
          description: |-
            Indicates the level of political exposure associated with a person's public role. This is a beta feature that can be enabled per API key (ops@dilisense.com).

            - `1`: Top national leaders with direct control over executive, legislative, or defense matters, for example:
              - Heads of state or government (e.g., presidents, prime ministers, monarchs).
              - Members of the national executive cabinet.
              - Speakers or presidents of national parliaments.
              - Chiefs of defense, heads of national security or intelligence services.
            - `2`: Other senior officials with national-level authority or international representation, for example:
              - Members of national parliaments.
              - Ministers of state or deputy ministers.
              - Heads/board members of central banks and national regulatory agencies.
              - Senior judiciary (e.g., supreme or constitutional courts).
              - Senior military leadership (e.g., general staff, joint chiefs).
              - Ambassadors and permanent representatives to international organizations.
            - `3`: Sub-national or institutional positions with significant influence but below top national leadership, for example:
              - Governors, premiers, and members of state/provincial assemblies.
              - Mayors and councillors of large or capital cities.
              - Executives of nationally significant state-owned enterprises or agencies.
              - Leaders of major research, health, or educational institutions.
              - Senior officers of regional parliaments or courts.
              - Senior political party members (also depending on party relevance).
            - `4`: Local, administrative, judicial, or institutional roles with limited political exposure, for example:
              - Mayors of smaller towns, local councillors, municipal-level officials.
              - Managers of small or sectoral state-owned enterprises.
              - Cultural, academic, and technical government agencies.
              - Lower or special-purpose judicial authorities.

            Returned only for records with `source_type = PEP`. Availability is being rolled out across the dataset; the field may be missing if the source does not provide enough context for classification. When multiple qualifying roles are found, the highest applicable level is returned. The levels are designed to assist in screening and triage. They are not a substitute for internal risk ratings or regulatory definitions.
        entity_type:
          type: string
          description: |-
            - INDIVIDUAL
            - ENTITY
            - VESSEL
            - AIRCRAFT
            - JURISDICTION
            - OBJECT
            - UNKNOWN

            One of these values will be set. checkIndividual returns INDIVIDUAL or UNKNOWN, checkEntity ENTITY or UNKNOWN.
        list_date:
          type: string
          description: "Unix timestamp in milliseconds presenting the date of the\
            \ source as provided by the source authors. If not available, this value\
            \ will be \"0\"."
        gender:
          type: string
          description: |-
            - FEMALE
            - MALE
            - UNKNOWN

            One of these values will be set for individuals.
        name:
          type: string
          description: The name of the individual or entity.
        tl_name:
          type: string
          description: A third party tool is used for the transliteration of the name
            from Arabic or Chinese script into Latin script. The transliterated name
            is not coming from the original source.
        last_names:
          type: array
          items:
            type: string
          description: A list with last names of this individual.
        given_names:
          type: array
          items:
            type: string
          description: A list with given names of this individual.
        alias_names:
          type: array
          items:
            type: string
          description: A list with alias names of this individual or entity.
        alias_given_names:
          type: array
          items:
            type: string
          description: A list with alias given names of this individual.
        name_remarks:
          type: array
          items:
            type: string
          description: A list of name remarks for this individual or entity.
        spouse:
          type: array
          items:
            type: string
          description: A list of spouse names for this individual.
        parents:
          type: array
          items:
            type: string
          description: A list of parent names for this individual.
        children:
          type: array
          items:
            type: string
          description: A list of children names for this individual.
        siblings:
          type: array
          items:
            type: string
          description: A list of sibling names for this individual.
        date_of_birth:
          type: array
          items:
            type: string
          description: "A list of date of births for this individual, in the format\
            \ dd/mm/yyyy with 00 for an unknown day or month."
        date_of_birth_remarks:
          type: array
          items:
            type: string
          description: A list of date of birth remarks for this individual.
        place_of_birth:
          type: array
          items:
            type: string
          description: A list of place of births for this individual.
        place_of_birth_remarks:
          type: array
          items:
            type: string
          description: A list of place of birth remarks for this individual.
        address:
          type: array
          items:
            type: string
          description: A list of addresses for this individual or entity.
        address_remarks:
          type: array
          items:
            type: string
          description: A list of address remarks for this individual or entity.
        citizenship:
          type: array
          items:
            type: string
          description: A list of citizenships for this individual in ISO 3166-1 alpha-2
            format.
        citizenship_remarks:
          type: array
          items:
            type: string
          description: A list of citizenship remarks for this individual.
        jurisdiction:
          type: array
          items:
            type: string
          description: A list of jurisdictions for this entity in ISO 3166-1 alpha-2
            format.
        company_number:
          type: array
          items:
            type: string
          description: The company number of this entity (e.g. the registration number
            in the respective jurisdiction).
        sanction_details:
          type: array
          items:
            type: string
          description: "A list of sanction details for this individual or entity,\
            \ e.g. why it is sanctioned. Usually only available for source_type =\
            \ SANCTION."
        description:
          type: array
          items:
            type: string
          description: A list of descriptions for this individual.
        occupations:
          type: array
          items:
            type: string
          description: A list of occupations for this individual.
        positions:
          type: array
          items:
            type: string
          description: A list of positions for this individual.
        political_parties:
          type: array
          items:
            type: string
          description: A list of political parties for this individual. Usually this
            is only filled for source_type = PEP.
        titles:
          type: array
          items:
            type: string
          description: "A list of titles for this individual (e.g. Dr., Prof., Hon.\
            \ etc.)."
        functions:
          type: array
          items:
            type: string
          description: A list of functions for this individual.
        links:
          type: array
          items:
            type: string
          description: A list of links for this individual or entity. This can be
            websites but also email addresses.
        other_information:
          type: array
          items:
            type: string
          description: A list of other information for this individual or entity that
            cannot be categorized otherwise.
    Article:
      description: A news article.
      type: object
      properties:
        timestamp:
          type: string
          description: The timestamp of the article (ISO 8601 date time).
        id:
          type: string
          description: The unique ID of the article.
        language:
          type: string
          description: The ISO 639-1 code of the article language (e.g. `en` for English).
        headline:
          type: string
          description: The headline of the article.
        body:
          type: string
          description: The content of the article. Paragraphs are marked with `<p></p>`.
        source_link:
          type: string
          description: The link to the source of the article. Some articles might
            be only accessible with a subscription of the respective media company.
    ArticleSearchResponse:
      type: object
      properties:
        timestamp:
          type: string
          description: The timestamp of the response (ISO 8601 date time).
        total_hits:
          type: integer
          format: int64
          description: "The total number of articles matching the search across the\
            \ entire search index. `total_hits` counts matches in the index, not articles\
            \ in this response. Page through the results with `cursor` to retrieve\
            \ all of them."
        next_cursor:
          type: string
          description: The value to pass back as `cursor` to retrieve the next page.
            Absent on the last page.
        articles:
          type: array
          items:
            $ref: "#/components/schemas/Article"
          description: The articles of the current page. The number of articles per
            page is limited to 10 by default.
    CheckMediaResponse:
      type: object
      properties:
        timestamp:
          type: string
          description: The timestamp of the response (ISO 8601 date time).
        total_hits:
          type: integer
          format: int64
          description: "The sum of the category-specific `hits` in `news_exposures`.\
            \ The number of articles per `category` is limited to 10 by default, so\
            \ `total_hits` is normally much larger than the number of articles you\
            \ receive."
        news_exposures:
          type: object
          additionalProperties:
            $ref: "#/components/schemas/NewsExposure"
          description: "Object with the keys specified in `category`. All categories\
            \ will be returned, even if they contain 0 hits."
    CheckResponse:
      type: object
      properties:
        timestamp:
          type: string
          description: The timestamp of the response (ISO 8601 timestamp).
        total_hits:
          type: integer
          format: int64
          description: The total number of hits for the searched parameters.
        found_records:
          type: array
          items:
            $ref: "#/components/schemas/AmlRecord"
          description: "Array with the found records, at most 1'000. Attributes which\
            \ are empty are not present."
    ConsolidatedChange:
      description: A changed record of the AML Database.
      type: object
      properties:
        type:
          type: string
          description: |-
            - ADD
            - UPDATE
            - DELETE
        record:
          description: "The added, updated or deleted record, without `list_date`."
          type: object
          $ref: "#/components/schemas/AmlRecord"
    DailyUsage:
      description: The calls of one day.
      type: object
      properties:
        date:
          type: string
          description: "The day, in the format yyyy-mm-dd."
        used:
          type: integer
          format: int32
          description: The number of calls on that day.
    EndpointUsage:
      description: The usage of one endpoint.
      type: object
      properties:
        path:
          type: string
          description: "The path of the endpoint, e.g. `/v1/checkIndividual`."
        monthly_used:
          type: integer
          format: int32
          description: The number of calls of this endpoint in the month.
        daily:
          type: array
          items:
            $ref: "#/components/schemas/DailyUsage"
          description: "The calls per day, sorted by date. Days without calls are\
            \ not present."
    Error:
      description: The body of an error response.
      type: object
      properties:
        error_message:
          type: string
          description: "Description of the error. Base your error handling on the\
            \ HTTP status code, not on this text."
    Instant:
      type: string
      format: date-time
      examples:
      - 2022-03-10T16:15:50Z
    Jwk:
      description: An EC P-256 public key as JSON Web Key.
      type: object
      properties:
        kty:
          type: string
          description: "The key type, always `EC`."
        crv:
          type: string
          description: "The curve, always `P-256`."
        alg:
          type: string
          description: "The signature algorithm, always `ES256`."
        kid:
          type: string
          description: The key ID.
        x:
          type: string
          description: "The x coordinate of the public key point, a base64url-encoded\
            \ 32-byte value without padding."
        "y":
          type: string
          description: "The y coordinate of the public key point, a base64url-encoded\
            \ 32-byte value without padding."
    KeyDoc:
      description: A public signing key and its validity.
      type: object
      properties:
        status:
          type: string
          description: |-
            - ACTIVE: the key is in use for signing.
            - RETIRED: the key was replaced by a newer key in a scheduled rotation. Signatures created with it remain valid.
            - REVOKED: the key must not be trusted anymore.
        not_before:
          description: The start of the period in which the key is used for signing
            (ISO 8601 timestamp).
          type: string
          $ref: "#/components/schemas/Instant"
        not_after:
          description: The end of the period in which the key is used for signing
            (ISO 8601 timestamp).
          type: string
          $ref: "#/components/schemas/Instant"
        keys:
          type: array
          items:
            $ref: "#/components/schemas/Jwk"
          description: "Array with one JWK, the public key with the requested ID."
    LocalDate:
      type: string
      format: date
      examples:
      - 2022-03-10
    NewsExposure:
      description: The adverse media hits of one category.
      type: object
      properties:
        category:
          type: string
          description: |-
            - political
            - regulatory
            - terrorism
            - financial_crime
            - organized_crime
            - violent_crime

            More categories may be added.
        hits:
          type: integer
          format: int64
          description: The number of adverse media hits found in this category.
        articles:
          type: array
          items:
            $ref: "#/components/schemas/Article"
          description: The array is only present if `fetch_articles` parameter is
            set to `true`. The number of articles per `category` is limited to 10
            items. The limit can be increased per API key if required.
    Source:
      description: A source list of the dilisense database.
      type: object
      properties:
        source:
          type: string
          description: The unique ID of the source.
        name:
          type: string
          description: The clear text name of the source.
        description:
          type: string
          description: The description of the source.
        link:
          type: string
          description: The link to the source website.
        source_type:
          type: string
          description: |-
            - sanction
            - pep
            - criminal
            - other

            More types may be added.
        region:
          type: string
          description: |-
            - americas
            - apac
            - emea
            - international
        country_code:
          type: string
          description: Lower case ISO 3166-1 alpha-2 code.
        country_name:
          type: string
          description: The country which the source belongs to.
        issuer_name:
          type: string
          description: Name of the regulatory body which is issuing the source.
        status:
          type: string
          description: '`discontinued` if the source is no longer maintained. Empty
            for active sources.'
        last_checked:
          description: The last time the source was checked for updates (ISO 8601
            timestamp).
          type: string
          $ref: "#/components/schemas/Instant"
        last_modified:
          description: The last time a change was detected compared to the previous
            version (ISO 8601 timestamp).
          type: string
          $ref: "#/components/schemas/Instant"
        size:
          type: integer
          format: int64
          description: The number of records per source.
        included_for_api_key:
          type: boolean
          description: Whether the source is included for your API key.
    StatusResponse:
      description: The result of an Ongoing Monitoring call that returns no data.
      type: object
      properties:
        status:
          type: string
          description: Always success.
          examples:
          - success
    Usage:
      description: The usage of your API key in a month.
      type: object
      properties:
        month:
          type: string
          description: "The month of the usage, in the format yyyy-mm."
        timezone:
          type: string
          description: "The time zone that months and days are counted in, always\
            \ `UTC`."
        summary:
          description: The totals of the month and your quotas.
          type: object
          $ref: "#/components/schemas/UsageSummary"
        endpoints:
          type: array
          items:
            $ref: "#/components/schemas/EndpointUsage"
          description: "The usage per endpoint. Every endpoint that was called at\
            \ least once in the month is listed, free endpoints such as getSourceList\
            \ and usage itself included. Endpoints without calls are not present."
    UsageSummary:
      description: The totals of the month and your quotas.
      type: object
      properties:
        billed_requests_monthly_used:
          type: integer
          format: int32
          description: "The number of billed API calls in the month. Billed are the\
            \ screening calls of the AML Screening API (checkIndividual, checkEntity,\
            \ checkName, generateIndividualReport and generateEntityReport) and of\
            \ the Adverse Media Screening API (media/checkIndividual, media/checkEntity\
            \ and media/search)."
        billed_requests_quota:
          type: integer
          format: int32
          description: The number of billed API calls your API key may make per month.
            Absent if your API key has no monthly limit.
        ongoing_monitoring_profiles_registered:
          type: integer
          format: int32
          description: "The number of Ongoing Monitoring search profiles that are\
            \ currently registered for your API key. Absent if no search profiles\
            \ are registered. This value is always the current number of search profiles,\
            \ also when you request an earlier month."
        ongoing_monitoring_profiles_quota:
          type: integer
          format: int32
          description: The number of search profiles your API key may register at
            the same time. Absent if your API key has no limit.
    WebhookNotification:
      description: The payload sent to your webhook URL for a change to a search profile.
      type: object
      properties:
        timestamp:
          description: The timestamp of the notification (ISO 8601 timestamp).
          type: string
          $ref: "#/components/schemas/Instant"
        event_id:
          type: string
          description: "A unique identifier of the notification in UUID format, which\
            \ is always included. If a notification is delivered again, for example\
            \ because your endpoint did not acknowledge it in time, it is sent with\
            \ the same event_id, so that you can use it to detect and discard duplicates."
        profile_id:
          type: string
          description: A unique identifier the client sets to reference the notification
            to their records.
        match_type:
          type: string
          description: |-
            - ADD: The notification is for a new addition to the database.
            - UPDATE: The notification is for an update to an existing record.
            - DELETE: The notification is for a deletion of an existing record.
        entity:
          $ref: "#/components/schemas/AmlRecord"
          description: The entity contains the attributes for an Individual or an
            Entity. For DELETE it is the deleted record.
  securitySchemes:
    x-api-key:
      description: "Your API key, sent in the x-api-key header of every request."
      type: apiKey
      name: x-api-key
      in: header
  headers:
    Retry-After:
      description: Seconds to wait before retrying the request.
      schema:
        type: integer
  responses:
    BadRequest:
      description: "A parameter is missing, unknown or invalid, or the operation is\
        \ not enabled for your account. The error_message says which."
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
          examples:
            Missing search string:
              summary: Neither names nor search_all is set
              value:
                error_message: Either the 'names' or 'search_all' parameter is mandatory.
    Unauthorized:
      description: The x-api-key header is missing or the API key is invalid.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
    Forbidden:
      description: The API key has been revoked or the account is suspended.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
    TooManyRequests:
      description: "The request was throttled or the quota of your account is used\
        \ up. A throttled request can be retried after the Retry-After seconds. Without\
        \ a Retry-After header the quota is used up, and requests fail until it is\
        \ increased or renewed."
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
      headers:
        Retry-After:
          $ref: "#/components/headers/Retry-After"
    InternalServerError:
      description: "An unexpected error occurred. Retry the request, and contact support@dilisense.com\
        \ if it keeps failing. The body may be empty."
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
    ServiceUnavailable:
      description: "The server is temporarily overloaded or not ready yet. Retry the\
        \ request, after the Retry-After seconds if the header is set. The body may\
        \ be empty. A 502, 503 or 504 can also come from the load balancer, with a\
        \ non-JSON body."
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
      headers:
        Retry-After:
          $ref: "#/components/headers/Retry-After"
tags:
- name: aml_database
  description: |-
    The dilisense AML Database provides you with access to the dilisense consolidated file which includes a myriad of sanction, PEP, criminal watch lists and additional sources. All sources are listed on our website (https://dilisense.com). The file can be downloaded via API in JSON Lines format.

    You can download the consolidated file up to 50 times a day, getConsolidatedFile and getConsolidatedDelta together.
  x-displayName: AML Database
- name: aml_screening
  description: |-
    The dilisense API provides you with machine-to-machine access to the dilisense methods for checking individual and entity names against sanction, PEP and wanted lists.

    Screening calls count towards your monthly quota of billed requests, which the AML Screening API and the Adverse Media Screening API share.
  x-displayName: AML Screening
- name: media_screening
  description: |-
    The dilisense API provides you with machine-to-machine access to the dilisense methods for checking individual and entity names against Adverse Media news sources.

    Screening calls count towards your monthly quota of billed requests, which the AML Screening API and the Adverse Media Screening API share.
  x-displayName: Adverse Media Screening
- name: om_profiles
  description: |-
    The Ongoing Monitoring API is a comprehensive solution that enables businesses to proactively monitor their customers against dilisense's sanction, PEP, and criminal watchlist databases. This API provides a convenient and efficient way to register names of individuals and entities and receive real-time notifications if there are changes to the risk profiles (e.g., a name was found, removed or any attributes associated with that name were updated).

    **Usage.** The registerIndividual, registerEntity and removeSearchProfile calls are free of charge and do not count towards the usage of the AML Screening API. Ongoing Monitoring is billed based on the average number of active search profiles during a month.
  x-displayName: Ongoing Monitoring
- name: signing_keys
  description: |-
    A signed HTTP message from dilisense carries an `x-dilisense-signature` header next to its unchanged JSON body. The signature lets you verify that the body originates from dilisense and was not altered on its way to you, for example by a proxy, and it lets you prove later, for example in an audit, what dilisense sent. Verification is optional, clients that ignore the header keep working unchanged.

    The header value consists of comma-separated parts: `v1,kid=<key id>,sig=<signature>`

    - `v1`: the version of the signature scheme.
    - `kid`: the ID of the key that created the signature. Use it to fetch the public key from the keys endpoint.
    - `sig`: the signature, base64url-encoded without padding (RFC 4648 section 5).

    Signatures are created with **ES256**, i.e. ECDSA on the NIST P-256 curve (also known as secp256r1 or prime256v1) with SHA-256 as the hash function. The signed data are the exact UTF-8 bytes of the HTTP body as transmitted.
  x-displayName: Signing Keys
- name: sources
  description: The source lists that are part of the dilisense database. Use them
    to identify the relevant lists that should be passed in the `includes` parameter
    of the other API method calls.
  x-displayName: Sources
- name: usage
  description: "How many API calls your API key made, broken down by endpoint and\
    \ day, together with your quotas. The quotas themselves are described in [Quotas](https://developers.dilisense.com/using-the-api/quotas)."
  x-displayName: Usage
- name: om_webhook
  x-displayName: Ongoing Monitoring Webhooks
  description: The notifications that dilisense sends to your webhook URL when a change
    for one of your search profiles is found.
paths:
  /v1/checkEntity:
    get:
      summary: Screen an entity
      description: |-
        The checkEntity API method searches for entities that match certain criteria. The client can decide which lists should be included in the search to limit the results to the relevant ones.

        **Legal form synonym matching.** Company legal form terms in the search string are automatically matched against their synonyms. A record is found regardless of which abbreviation, punctuation variant or long form of the legal form is used in the search or in the record itself. Examples of legal forms that are treated as equivalent:

        - "LLC", "L.L.C." and "limited liability company"
        - "GmbH", "G m b H" and "Gesellschaft mit beschränkter Haftung"
        - "SARL", "S.A.R.L." and "société à responsabilité limitée"

        For example, a search for "Reyco Gesellschaft mit beschränkter Haftung" will also find the record "REYCO GMBH" and vice versa. The synonym matching works in both directions, applies to the `names` as well as the `search_all` parameter and is combined with the `fuzzy_search` parameter if set. No additional parameter is needed to activate it.
      operationId: checkEntity
      tags:
      - aml_screening
      parameters:
      - description: "Search string that is checked against sanction, PEP and criminal\
          \ lists. All fields are considered. Cannot be combined with 'names' parameter."
        name: search_all
        in: query
        schema:
          type: string
      - description: "Search string that is checked against sanction, PEP and criminal\
          \ lists. Only name fields (e.g. 'name', 'alias_names' etc.) are considered.\
          \ Cannot be combined with 'search_all' parameter."
        example: REYCO GMBH GERMANY
        name: names
        in: query
        schema:
          type: string
      - description: |-
          This parameter defines if spelling differences need to be considered for the search string.

          - 1: Fuzzy search with distance 1 (e.g. "business" will also match for "busines") for the "names" parameter.
          - 2: Fuzzy search with distance 2 (e.g. "business" will also match for "bisines") for the "names" parameter.
        name: fuzzy_search
        in: query
        schema:
          type: integer
          format: int32
      - description: |-
          Defines which sources are searched. If the `includes` parameter is not specified, the sources included for your API key are searched.

          The value is a comma-separated list of source IDs and/or the selector `included`. The searched sources are the union of all entries.

          - `included`: the sources that are included for your API key.
          - source IDs: exactly those sources, for example "us_department_of_treasury_non_sdn".

          For example `includes=us_department_of_treasury_non_sdn,eu_financial_sanction_list` searches exactly those two sources, while `includes=included,br_national_registry_cnep` searches the sources included for your API key plus that one.

          The source catalogue contains all screening sources available through the API. Your API key has a set of included sources, while additional sources from the catalogue can be selected individually. Use the getSourceList API call to retrieve the catalogue and source IDs.
        name: includes
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CheckResponse"
              examples:
                REYCO GMBH:
                  summary: Search by company name
                  value:
                    timestamp: 2024-09-24T20:29:52Z
                    total_hits: 1
                    found_records:
                    - id: 4bae94a04647a62f
                      entity_type: ENTITY
                      name: REYCO GMBH
                      address:
                      - Germany
                      - Nordrhein-Westfalen
                      - Dinslaken
                      - Karlstrasse 19
                      - "46535"
                      alias_names:
                      - REYCO GMBH GERMANY
                      sanction_details:
                      - Subject to Secondary Sanctions
                      source_id: us_department_of_treasury_sdn
                      source_type: SANCTION
                      list_date: "1615935600000"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/checkIndividual:
    get:
      summary: Screen an individual
      description: The checkIndividual API method searches for individuals that match
        certain criteria. The client can decide which lists should be included in
        the search to limit the results to the relevant ones.
      operationId: checkIndividual
      tags:
      - aml_screening
      parameters:
      - description: "Search string that is checked against sanction, PEP and criminal\
          \ lists. All fields are considered. Cannot be combined with 'names' parameter."
        name: search_all
        in: query
        schema:
          type: string
      - description: "Search string that is checked against sanction, PEP and criminal\
          \ lists. Only name fields (e.g. 'name', 'alias_names' etc.) are considered.\
          \ Cannot be combined with 'search_all' parameter."
        example: Boris Johnson
        name: names
        in: query
        schema:
          type: string
      - description: |-
          This parameter defines if spelling differences need to be considered for the search string.

          - 1: Fuzzy search with distance 1 (e.g. Angela will also match for Angelo) for the "names" parameter.
          - 2: Fuzzy search with distance 2 (e.g. Angela will also match for Angale) for the "names" parameter.
        example: 1
        name: fuzzy_search
        in: query
        schema:
          type: integer
          format: int32
      - description: |-
          This parameter searches for a match in the date of birth. Possible variations are

          - dd/mm/yyyy if the exact date is known (e.g. 01/05/1990).
          - 00/00/yyyy if only the year is known (e.g. 00/00/1990).
          - 00/mm/yyyy if only the month and the year are known (e.g. 00/05/1990).
          - dd/00/yyyy if only the day and the year are known (e.g. 01/00/1990).

          Individuals that match the given date of birth as well as individuals that have no date of birth value set are returned. For safety, records without a date of birth are not excluded, so that a potential match is not missed.
        example: 19/06/1964
        name: dob
        in: query
        schema:
          type: string
      - description: |-
          This parameter searches for a match in gender. Possible values are

          - `male` - For searching for individuals that are "male" or that have the gender value not set.
          - `female` - For searching for individuals that are "female" or that have the gender value not set.

          Individuals that have the given gender as well as individuals that have no gender value set are returned. For safety, records without a gender are not excluded, so that a potential match is not missed.
        example: male
        name: gender
        in: query
        schema:
          type: string
      - description: |-
          This parameter searches for a match in citizenship. The value has to be a single country code in ISO 3166-1 alpha-2 format (e.g. 'DE' for Germany). The value is case-insensitive.

          Individuals that have the given citizenship as well as individuals that have no citizenship value set are returned. If the value is not a two-letter country code, the API call will return a 400 HTTP error code.
        name: citizenship
        in: query
        schema:
          type: string
      - description: |-
          Defines which sources are searched. If the `includes` parameter is not specified, the sources included for your API key are searched.

          The value is a comma-separated list of source IDs and/or the selector `included`. The searched sources are the union of all entries.

          - `included`: the sources that are included for your API key.
          - source IDs: exactly those sources, for example "us_department_of_treasury_non_sdn".

          For example `includes=us_department_of_treasury_non_sdn,eu_financial_sanction_list` searches exactly those two sources, while `includes=included,br_national_registry_cnep` searches the sources included for your API key plus that one.

          The source catalogue contains all screening sources available through the API. Your API key has a set of included sources, while additional sources from the catalogue can be selected individually. Use the getSourceList API call to retrieve the catalogue and source IDs.
        example: dilisense_pep
        name: includes
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CheckResponse"
              examples:
                Boris Johnson:
                  summary: Search by name and date of birth
                  value:
                    timestamp: 2024-09-24T19:16:00Z
                    total_hits: 1
                    found_records:
                    - id: c438b18a93cd3c13
                      entity_type: INDIVIDUAL
                      children:
                      - Cassia Peaches Johnson
                      - Frank Alfred Odysseus Johnson
                      - Lara Lettice Johnson
                      - Milo Arthur Johnson
                      - Romy Iris Charlotte Johnson
                      - Stephanie Macintyre Johnson
                      - Theodore Apollo Johnson
                      - Wilfred Johnson
                      name: Boris Johnson
                      address:
                      - GB
                      last_names:
                      - Johnson
                      - Pfeffel
                      alias_names:
                      - Alexander Boris de Pfeffel Johnson
                      - Boris
                      - BoJo
                      - Bo Jo
                      given_names:
                      - Alexander
                      - Boris
                      date_of_birth:
                      - 19/06/1964
                      place_of_birth:
                      - New York City
                      citizenship:
                      - GB
                      - US
                      occupations:
                      - journalist
                      - politician
                      positions:
                      - 2001-06-07 - 2005-04-11  Member of the 53rd Parliament of
                        the United Kingdom
                      - 2005-05-05 - 2008-06-04  Member of the 54th Parliament of
                        the United Kingdom
                      - 2008-05-04 - 2016-05-07  Mayor of London
                      - 2015-05-07 - 2017-05-03  Member of the 56th Parliament of
                        the United Kingdom
                      - 2016-07-13 - 2018-07-09  Secretary of State for Foreign and
                        Commonwealth Affairs
                      - 2017-06-08 - 2019-11-06  Member of the 57th Parliament of
                        the United Kingdom
                      - Since 2016-01-01  Member of the Privy Council of the United
                        Kingdom
                      - Since 2019-07-23  Leader of the Conservative Party
                      - Since 2019-07-24  First Lord of the Treasury
                      - Since 2019-07-24  Minister for the Civil Service
                      - Since 2019-07-24  Prime Minister of the United Kingdom
                      - Since 2019-07-26  Minister for the Union
                      - Since 2019-12-12  Member of the 58th Parliament of the United
                        Kingdom
                      political_parties:
                      - Conservative Party
                      links:
                      - https://www.gov.uk/government/people/boris-johnson
                      - https://members.parliament.uk/member/1423/contact
                      - "Facebook: borisjohnson"
                      - https://members.parliament.uk
                      - https://www.gov.uk/government/people
                      source_id: dilisense_pep
                      source_type: PEP
                      pep_type: POLITICIAN
                      gender: MALE
                      spouse:
                      - Allegra Mostyn-Owen
                      - Carrie Johnson
                      - Marina Wheeler
                      siblings:
                      - Jo Johnson
                      - Leo Johnson
                      - Rachel Johnson
                      list_date: "0"
                      parents:
                      - Charlotte Johnson Wahl
                      - Stanley Johnson
                      description:
                      - Prime Minister of the United Kingdom from 2019 to 2022
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/checkName:
    get:
      summary: Screen a name across all entity types
      description: |-
        The checkName API method returns all entity types instead of only INDIVIDUALS or ENTITIES. The available `entity_types` are

        - INDIVIDUAL
        - ENTITY
        - VESSEL
        - AIRCRAFT
        - JURISDICTION
        - OBJECT
        - UNKNOWN

        The response attributes are the same as for the `checkIndividual` and `checkEntity` endpoints.
      operationId: checkName
      tags:
      - aml_screening
      parameters:
      - description: "Search string that is checked against sanction, PEP and criminal\
          \ lists. All fields are considered. Cannot be combined with 'names' parameter."
        name: search_all
        in: query
        schema:
          type: string
      - description: "Search string that is checked against sanction, PEP and criminal\
          \ lists. Only name fields (e.g. 'name', 'alias_names' etc.) are considered.\
          \ Cannot be combined with 'search_all' parameter."
        example: Boris Johnson
        name: names
        in: query
        schema:
          type: string
      - description: |-
          This parameter defines if spelling differences need to be considered for the search string.

          - 1: Fuzzy search with distance 1 (e.g. Angela will also match for Angelo) for the "names" parameter.
          - 2: Fuzzy search with distance 2 (e.g. Angela will also match for Angale) for the "names" parameter.
        name: fuzzy_search
        in: query
        schema:
          type: integer
          format: int32
      - description: |-
          Defines which sources are searched. If the `includes` parameter is not specified, the sources included for your API key are searched.

          The value is a comma-separated list of source IDs and/or the selector `included`. The searched sources are the union of all entries.

          - `included`: the sources that are included for your API key.
          - source IDs: exactly those sources, for example "us_department_of_treasury_non_sdn".

          For example `includes=us_department_of_treasury_non_sdn,eu_financial_sanction_list` searches exactly those two sources, while `includes=included,br_national_registry_cnep` searches the sources included for your API key plus that one.

          The source catalogue contains all screening sources available through the API. Your API key has a set of included sources, while additional sources from the catalogue can be selected individually. Use the getSourceList API call to retrieve the catalogue and source IDs.
        name: includes
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CheckResponse"
              examples:
                Boris Johnson:
                  summary: Search by name
                  value:
                    timestamp: 2024-09-24T19:16:00Z
                    total_hits: 1
                    found_records:
                    - id: c438b18a93cd3c13
                      entity_type: INDIVIDUAL
                      children:
                      - Cassia Peaches Johnson
                      - Frank Alfred Odysseus Johnson
                      - Lara Lettice Johnson
                      - Milo Arthur Johnson
                      - Romy Iris Charlotte Johnson
                      - Stephanie Macintyre Johnson
                      - Theodore Apollo Johnson
                      - Wilfred Johnson
                      name: Boris Johnson
                      address:
                      - GB
                      last_names:
                      - Johnson
                      - Pfeffel
                      alias_names:
                      - Alexander Boris de Pfeffel Johnson
                      - Boris
                      - BoJo
                      - Bo Jo
                      given_names:
                      - Alexander
                      - Boris
                      date_of_birth:
                      - 19/06/1964
                      place_of_birth:
                      - New York City
                      citizenship:
                      - GB
                      - US
                      occupations:
                      - journalist
                      - politician
                      positions:
                      - 2001-06-07 - 2005-04-11  Member of the 53rd Parliament of
                        the United Kingdom
                      - 2005-05-05 - 2008-06-04  Member of the 54th Parliament of
                        the United Kingdom
                      - 2008-05-04 - 2016-05-07  Mayor of London
                      - 2015-05-07 - 2017-05-03  Member of the 56th Parliament of
                        the United Kingdom
                      - 2016-07-13 - 2018-07-09  Secretary of State for Foreign and
                        Commonwealth Affairs
                      - 2017-06-08 - 2019-11-06  Member of the 57th Parliament of
                        the United Kingdom
                      - Since 2016-01-01  Member of the Privy Council of the United
                        Kingdom
                      - Since 2019-07-23  Leader of the Conservative Party
                      - Since 2019-07-24  First Lord of the Treasury
                      - Since 2019-07-24  Minister for the Civil Service
                      - Since 2019-07-24  Prime Minister of the United Kingdom
                      - Since 2019-07-26  Minister for the Union
                      - Since 2019-12-12  Member of the 58th Parliament of the United
                        Kingdom
                      political_parties:
                      - Conservative Party
                      links:
                      - https://www.gov.uk/government/people/boris-johnson
                      - https://members.parliament.uk/member/1423/contact
                      - "Facebook: borisjohnson"
                      - https://members.parliament.uk
                      - https://www.gov.uk/government/people
                      source_id: dilisense_pep
                      source_type: PEP
                      pep_type: POLITICIAN
                      gender: MALE
                      spouse:
                      - Allegra Mostyn-Owen
                      - Carrie Johnson
                      - Marina Wheeler
                      siblings:
                      - Jo Johnson
                      - Leo Johnson
                      - Rachel Johnson
                      list_date: "0"
                      parents:
                      - Charlotte Johnson Wahl
                      - Stanley Johnson
                      description:
                      - Prime Minister of the United Kingdom from 2019 to 2022
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/generateEntityReport:
    get:
      summary: Generate a screening report for an entity
      description: |-
        The generateEntityReport API method searches for entities and provides back a pdf-report that shows in which lists the search algorithm found hits based on the entered criteria. The report is only supported for the source_type SANCTION, PEP and CRIMINAL.

        The response provided back is a Base64 encoded String that can be decoded to a pdf file.
      operationId: generateEntityReport
      tags:
      - aml_screening
      parameters:
      - description: "Search string that is checked against sanction, PEP and criminal\
          \ lists. All fields are considered. Cannot be combined with 'names' parameter."
        name: search_all
        in: query
        schema:
          type: string
      - description: "Search string that is checked against sanction, PEP and criminal\
          \ lists. Only name fields (e.g. 'name', 'alias_names' etc.) are considered.\
          \ Cannot be combined with 'search_all' parameter."
        example: REYCO GMBH GERMANY
        name: names
        in: query
        schema:
          type: string
      - description: |-
          This parameter defines if spelling differences need to be considered for the search string.

          - 1: Fuzzy search with distance 1 (e.g. "business" will also match for "busines") for the "names" parameter.
          - 2: Fuzzy search with distance 2 (e.g. "business" will also match for "bisines") for the "names" parameter.
        name: fuzzy_search
        in: query
        schema:
          type: integer
          format: int32
      - description: |-
          Defines which sources are searched. If the `includes` parameter is not specified, the sources included for your API key are searched.

          The value is a comma-separated list of source IDs and/or the selector `included`. The searched sources are the union of all entries.

          - `included`: the sources that are included for your API key.
          - source IDs: exactly those sources, for example "us_department_of_treasury_non_sdn".

          For example `includes=us_department_of_treasury_non_sdn,eu_financial_sanction_list` searches exactly those two sources, while `includes=included,br_national_registry_cnep` searches the sources included for your API key plus that one.

          The source catalogue contains all screening sources available through the API. Your API key has a set of included sources, while additional sources from the catalogue can be selected individually. Use the getSourceList API call to retrieve the catalogue and source IDs.
        name: includes
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: string
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/generateIndividualReport:
    get:
      summary: Generate a screening report for an individual
      description: |-
        The generateIndividualReport API method searches for individuals and provides back a pdf-report that shows in which lists the search algorithm found hits based on the entered criteria. The report is only supported for the source_type SANCTION, PEP and CRIMINAL.

        The response provided back is a Base64 encoded String that can be decoded to a pdf file.
      operationId: generateIndividualReport
      tags:
      - aml_screening
      parameters:
      - description: "Search string that is checked against sanction, PEP and criminal\
          \ lists. All fields are considered. Cannot be combined with 'names' parameter."
        name: search_all
        in: query
        schema:
          type: string
      - description: "Search string that is checked against sanction, PEP and criminal\
          \ lists. Only name fields (e.g. 'name', 'alias_names' etc.) are considered.\
          \ Cannot be combined with 'search_all' parameter."
        example: Boris Johnson
        name: names
        in: query
        schema:
          type: string
      - description: |-
          This parameter defines if spelling differences need to be considered for the search string.

          - 1: Fuzzy search with distance 1 (e.g. Angela will also match for Angelo) for the "names" parameter.
          - 2: Fuzzy search with distance 2 (e.g. Angela will also match for Angale) for the "names" parameter.
        example: 1
        name: fuzzy_search
        in: query
        schema:
          type: integer
          format: int32
      - description: |-
          This parameter searches for a match in the date of birth. Possible variations are

          - dd/mm/yyyy if the exact date is known (e.g. 01/05/1990).
          - 00/00/yyyy if only the year is known (e.g. 00/00/1990).
          - 00/mm/yyyy if only the month and the year are known (e.g. 00/05/1990).
          - dd/00/yyyy if only the day and the year are known (e.g. 01/00/1990).

          Individuals that match the given date of birth as well as individuals that have no date of birth value set are returned. For safety, records without a date of birth are not excluded, so that a potential match is not missed.
        example: 19/06/1964
        name: dob
        in: query
        schema:
          type: string
      - description: |-
          This parameter searches for a match in gender. Possible values are

          - `male` - For searching for individuals that are "male" or that have the gender value not set.
          - `female` - For searching for individuals that are "female" or that have the gender value not set.

          Individuals that have the given gender as well as individuals that have no gender value set are returned. For safety, records without a gender are not excluded, so that a potential match is not missed.
        example: male
        name: gender
        in: query
        schema:
          type: string
      - description: |-
          Defines which sources are searched. If the `includes` parameter is not specified, the sources included for your API key are searched.

          The value is a comma-separated list of source IDs and/or the selector `included`. The searched sources are the union of all entries.

          - `included`: the sources that are included for your API key.
          - source IDs: exactly those sources, for example "us_department_of_treasury_non_sdn".

          For example `includes=us_department_of_treasury_non_sdn,eu_financial_sanction_list` searches exactly those two sources, while `includes=included,br_national_registry_cnep` searches the sources included for your API key plus that one.

          The source catalogue contains all screening sources available through the API. Your API key has a set of included sources, while additional sources from the catalogue can be selected individually. Use the getSourceList API call to retrieve the catalogue and source IDs.
        name: includes
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: string
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/getConsolidatedDelta:
    get:
      summary: Download the changes to the AML Database
      description: |-
        The getConsolidatedDelta API method returns a list of deviations compared to an earlier version of the database. It is formatted as JSON Lines and consists of the same attributes as described in the AML Screening API service, with a separate line per changed record.

        Additionally the file-version is provided in the header which needs to be stored for the next API call.
      operationId: getConsolidatedDelta
      tags:
      - aml_database
      parameters:
      - description: The file-version in the response header from the API call to
          `getConsolidatedFile` or `getConsolidatedDelta`. The file-version cannot
          be older than two weeks. An unknown file-version returns a 400 HTTP error
          code with the error_message `Provided previous version does not exists!`.
        example: "1744792260290"
        required: true
        name: previous
        in: query
        schema:
          type: string
      - description: |-
          Defines which sources the consolidated file contains. If the `includes` parameter is not specified, the sources included for your API key are used.

          The value is a comma-separated list of source IDs and/or the selector `included`. The contained sources are the union of all entries.

          - `included`: the sources that are included for your API key.
          - source IDs: exactly those sources, for example "us_department_of_treasury_non_sdn".

          For example `includes=us_department_of_treasury_non_sdn,eu_financial_sanction_list` returns exactly those two sources, while `includes=included,br_national_registry_cnep` returns the sources included for your API key plus that one.
        name: includes
        in: query
        schema:
          type: string
      responses:
        "200":
          description: "The changed records as JSON Lines, one change per line."
          headers:
            File-Version:
              description: "The file-version, store it to call `getConsolidatedDelta`\
                \ with it as `previous` next time."
              schema:
                type: string
          content:
            application/jsonl:
              schema:
                $ref: "#/components/schemas/ConsolidatedChange"
              examples:
                Three changes:
                  summary: "An added, an updated and a deleted record"
                  value: |
                    {"type":"ADD","record":{"source_id":"in_interpol_most_wanted_list","source_type":"CRIMINAL","id":"9a18cb49f9ff6af5","entity_type":"INDIVIDUAL","gender":"MALE","name":"TASAWAR IQBAL","last_names":["IQBAL"],"given_names":["TASAWAR"],"date_of_birth":["07/09/1981"],"place_of_birth":["Pakistan","Gujrat"],"citizenship":["Pakistan"],"sanction_details":["Issuing country: Pakistan","Charge: Murder"],"links":["https://www.interpol.int/en/How-we-work/Notices/View-Red-Notices#2018-14069"],"other_information":["Weight: 65 kg","Height: 1.72 m","Language spoken: Panjabi","Language spoken: Urdu","Eye color: BLA","Hair color: BLA"]}}
                    {"type":"UPDATE","record":{"source_id":"dilisense_pep","source_type":"PEP","id":"9a18cb46f9of6af5","pep_type":"POLITICIAN","entity_type":"INDIVIDUAL","gender":"MALE","name":"Joël Bruneau","last_names":["Bruneau"],"given_names":["Joël"],"date_of_birth":["07/09/1963"],"place_of_birth":["Châteauroux"],"citizenship":["France"],"description":["French politician"],"occupations":["board member","politician","professions libérales et assimilés"],"positions":["2014-03-30 - 2020-05-17  conseiller municipal de Caen","2014-04-05 - 2020-05-22  mayor of Caen","Since 2017-01-01  conseiller communautaire de Caen la Mer","Since 2020-05-18  conseiller municipal de Caen","Since 2020-05-23  mayor of Caen","conseiller régional de Basse-Normandie"],"political_parties":["Union for a Popular Movement"],"links":["Facebook: joel.bruneau.50"]}}
                    {"type":"DELETE","record":{"source_id":"us_occ_enforcement_actions_sanction_list","source_type":"SANCTION","id":"9a12cb46f9ff6af5","entity_type":"ENTITY","name":"First Fidelity Trust, National Association, Florida","address":["Boca Raton, Florida (FL), USA"],"jurisdiction":["USA"],"sanction_details":["Civil Money Penalty (CMP) for details see: https://www.occ.gov/topics/laws-regulations/enforcement-actions/enforcement-actions-types.html","Start date: 8/5/1991"]}}
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          description: The AML Database is not enabled for your API key.
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/getConsolidatedFile:
    get:
      summary: Download the AML Database
      description: |-
        The getConsolidatedFile API method returns the AML Database in JSON Lines format and consists of the same attributes as described in the AML Screening API Service: every line is one AmlRecord, without `list_date`.

        Additionally the file-version is provided in the header which can be stored in order to call the `getConsolidatedDelta` endpoint.
      operationId: getConsolidatedFile
      tags:
      - aml_database
      parameters:
      - description: |-
          Defines which sources the consolidated file contains. If the `includes` parameter is not specified, the sources included for your API key are used.

          The value is a comma-separated list of source IDs and/or the selector `included`. The contained sources are the union of all entries.

          - `included`: the sources that are included for your API key.
          - source IDs: exactly those sources, for example "us_department_of_treasury_non_sdn".

          For example `includes=us_department_of_treasury_non_sdn,eu_financial_sanction_list` returns exactly those two sources, while `includes=included,br_national_registry_cnep` returns the sources included for your API key plus that one.
        name: includes
        in: query
        schema:
          type: string
      responses:
        "200":
          description: "The AML Database as JSON Lines, one record per line."
          headers:
            File-Version:
              description: "The file-version, store it to call `getConsolidatedDelta`\
                \ with it as `previous` next time."
              schema:
                type: string
          content:
            application/jsonl:
              schema:
                $ref: "#/components/schemas/AmlRecord"
              examples:
                Six records:
                  summary: Individuals and entities
                  value: |
                    {"source_id":"eu_financial_sanction_list","source_type":"SANCTION","id":"9a485b46f9ff6af5","entity_type":"INDIVIDUAL","gender":"MALE","name":"Hodjatoleslam SOLTANI","last_names":["SOLTANI"],"alias_names":["Hodjatoleslam Seyed Mohammad SOLTANI"],"given_names":["Hodjatoleslam","Seyed Mohammad"],"sanction_details":["2020-04-08","IRN"],"functions":["Head of the Organisation for Islamic Propaganda in the province of Khorasan-Razavi. Judge, Mashhad Revolutionary Court until 2013."]}
                    {"source_id":"us_occ_enforcement_actions_sanction_list","source_type":"SANCTION","id":"9a12cb46f9ff6af5","entity_type":"ENTITY","name":"First Fidelity Trust, National Association, Florida","address":["Boca Raton, Florida (FL), USA"],"jurisdiction":["USA"],"sanction_details":["Civil Money Penalty (CMP) for details see: https://www.occ.gov/topics/laws-regulations/enforcement-actions/enforcement-actions-types.html","Start date: 8/5/1991"]}
                    {"source_id":"in_interpol_most_wanted_list","source_type":"CRIMINAL","id":"9a18cb49f9ff6af5","entity_type":"INDIVIDUAL","gender":"MALE","name":"TASAWAR IQBAL","last_names":["IQBAL"],"given_names":["TASAWAR"],"date_of_birth":["07/09/1981"],"place_of_birth":["Pakistan","Gujrat"],"citizenship":["Pakistan"],"sanction_details":["Issuing country: Pakistan","Charge: Murder"],"links":["https://www.interpol.int/en/How-we-work/Notices/View-Red-Notices#2018-14069"],"other_information":["Weight: 65 kg","Height: 1.72 m","Language spoken: Panjabi","Language spoken: Urdu","Eye color: BLA","Hair color: BLA"]}
                    {"source_id":"ru_ffms_terrorist_list","source_type":"SANCTION","id":"ca18hb46f9ff6af5","entity_type":"ENTITY","name":"МЕСТНАЯ РЕЛИГИОЗНАЯ ОРГАНИЗАЦИЯ СВИДЕТЕЛЕЙ ИЕГОВЫ Г.НИЖНЕКАМСКА И НИЖНЕКАМСКОГО РАЙОНА \"УПРАВЛЕНЧЕСКОГО ЦЕНТРА СВИДЕТЕЛЕЙ ИЕГОВЫ В РОССИИ\"","company_number":["ИНН: 1651024363;"]}
                    {"source_id":"fr_tresor_registre_national_des_gels_sanction_list","source_type":"SANCTION","id":"9a18cp46f9ff6af5","entity_type":"ENTITY","name":"Med Wave Shipping","sanction_details":["Regime de sanction ou de gel national concerne: Libye \n(UE Annexe III)","Fondement juridique: 2016/44 18/01/2016","Arrete d\u0027extension de la mesure aux PTOM: arrêté ECOT2025028A du 21/09/2020","Lien utile: https://www.tresor.economie.gouv.fr/services-aux-entreprises/sanctions-economiques","Date d\u0027ajout au registre: 9/21/20"],"other_information":["Adresse: Office 511, 5th Floor, Baraka Building, Dauwar Al-Waha, Jordanie;","Adel Al-Hojrat building n°3, 1st Floor, opposite Swefieh, Mall-Swefieh Po Box 850880 Amman, 11185 Jordanie;","Ground Floor, Orient Queen Homes Building, Liban","Tél. +962787064121; +96265865550; +96265868550","Courriel: operation@medwave.co","compagnie maritime qui exploite le navire Bana dont il a été établie qu’il a violé l’embargo sur les armes imposé à la Libye par la résolution 1970 (2011) du Conseil de sécurité des Nations unies et transposé à l’article 1er de la décision (PESC) 2015/1333. Le Bana a en particulier été lié à des transports de matériel militaire vers la Libye en janvier 2020.","Désigné par le règlement (UE) 2020/1309 du 21/09/2020"]}
                    {"source_id":"dilisense_pep","source_type":"PEP","id":"9a18cb46f9of6af5","pep_type":"POLITICIAN","entity_type":"INDIVIDUAL","gender":"MALE","name":"Joël Bruneau","last_names":["Bruneau"],"given_names":["Joël"],"date_of_birth":["07/09/1963"],"place_of_birth":["Châteauroux"],"citizenship":["France"],"description":["French politician"],"occupations":["board member","politician","professions libérales et assimilés"],"positions":["2014-03-30 - 2020-05-17  conseiller municipal de Caen","2014-04-05 - 2020-05-22  mayor of Caen","Since 2017-01-01  conseiller communautaire de Caen la Mer","Since 2020-05-18  conseiller municipal de Caen","Since 2020-05-23  mayor of Caen","conseiller régional de Basse-Normandie"],"political_parties":["Union for a Popular Movement"],"links":["Facebook: joel.bruneau.50"]}
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          description: The AML Database is not enabled for your API key.
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/getSourceList:
    get:
      summary: List the source lists
      description: |-
        The getSourceList API method returns all lists that are part of the dilisense database. This call can be used to identify the relevant lists that should be passed in the `includes` parameter for the other API method calls.

        By default you will get the sources that are included for your API key, which are the default sources plus the additional ones for which your key was enabled. Call the endpoint with `scope=all` to see the full catalogue and which of its sources your key includes. Please check https://dilisense.com/en/sources/additional-sources for the list of non-default sources and send us a request to get them enabled.

        The response is signed, see the `x-dilisense-signature` header.
      operationId: getSourceList
      tags:
      - sources
      parameters:
      - description: |-
          Defines which sources are returned. Possible values are

          - `included` (default): only the sources that are included for your API key.
          - `all`: the full source catalogue, including the sources that are not included for your API key.
        name: scope
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Source"
              examples:
                Included sources:
                  summary: With scope=included (default)
                  value:
                  - source: af_african_development_bank_debarred_entities
                    name: Debarred Entities
                    description: The African Development Bank Group have imposed sanctions
                      on entities found to have participated in fraudulent practices
                      and are therefore ineligible to participate in contracts financed
                      or administered by the African Development Bank Group.
                    link: https://www.afdb.org/en/projects-operations/debarment-and-sanctions-procedures
                    source_type: sanction
                    region: international
                    country_code: xx
                    country_name: Africa
                    issuer_name: African Development Bank
                    size: 1013
                  - source: na_sa_idb_sanctioned_firms_and_individuals
                    name: Sanctioned Firms and Individuals
                    description: "The Inter-American Development Bank have sanctioned\
                      \ firms and individuals for engaging in fraudulent, corrupt,\
                      \ collusive, coercive or obstructive practices, in violation\
                      \ of the IDB Group’s Sanctions Procedures and anti-corruption\
                      \ policies."
                    link: https://www.iadb.org/en/transparency/sanctioned-firms-and-individuals
                    source_type: sanction
                    region: international
                    country_code: xx
                    country_name: America
                    issuer_name: Inter-American Development Bank
                    size: 1007
                  - source: as_asia_development_bank
                    name: Sanction List
                    description: The Asian Development Bank have imposed sanctions
                      on entities who violated the sanctions while ineligible; entities
                      who committed second and subsequent violations; debarred entities
                      who are uncontactable; and cross debarred entities.
                    link: http://lnadbg4.adb.org/oga0009p.nsf/sancALLPublic?OpenView&count=999
                    source_type: sanction
                    region: international
                    country_code: xx
                    country_name: Asia
                    issuer_name: Asian Development Bank
                    size: 1282
                  - source: ar_repet_personas_y_entidades
                    name: Registro Público de Personas y Entidades
                    description: "The Argentine Ministry of Justice and Human Rights\
                      \ publishes a list of people and organizations related to terrorist\
                      \ attacks and their funding, also known as Registro Público\
                      \ de Personas y Entidades vinculadas a actos de Terrorismo y\
                      \ su Financiamiento."
                    link: https://repet.jus.gob.ar/
                    source_type: sanction
                    region: americas
                    country_code: ar
                    country_name: Argentina
                    issuer_name: RePET
                    size: 578
                  - source: au_australian_department_of_foreign_affairs_and_trade_sanction_list
                    name: Consolidated List
                    description: The Department of Foreign Affairs and Trade of Australia
                      (DFAT) have imposed financial sanctions and travel bans on persons
                      and entities to which the Charter of the United Nations Act
                      1945 and the Autonomous Sanctions Act 2011 currently applies.
                    link: https://www.dfat.gov.au/international-relations/security/sanctions/consolidated-list
                    source_type: sanction
                    region: apac
                    country_code: au
                    country_name: Australia
                    issuer_name: Department of Foreign Affairs and Trade
                    size: 3214
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/keys/{kid}:
    get:
      summary: Get a signing key
      description: |-
        The keys API method returns the public key for a key ID as a JSON Web Key.

        **Key rotation.** The signing key is rotated regularly, every key is used for signing for a limited period and is then retired. Keys stay retrievable by their ID after their retirement, so that you can verify a stored body at any later point in time. Follow these rules in your implementation:

        - Look up the key by the `kid` of the signature header, never rely on `current` for verification. The current key can change between the moment a body is signed and the moment you fetch the key.
        - Do not hardcode a key. Fetch a key the first time you see its ID and cache it by ID. The key material of a key document never changes, only its `status` does, so refresh cached keys from time to time to notice a revocation.
        - Accept the statuses ACTIVE and RETIRED, reject REVOKED.
      operationId: getSigningKey
      tags:
      - signing_keys
      parameters:
      - description: |-
          The key ID taken from the `x-dilisense-signature` header, e.g. `6f1c2d3e-4a5b-4c6d-8e9f-0a1b2c3d4e5f`. Two aliases are available in addition:

          - `current`: the key that is currently used for signing.
          - `previous`: the key that was replaced by the last rotation.

          For verifying a signature always use the `kid` of the header. The aliases are meant for monitoring and for fetching the keys ahead of time.

          A `kid` that is longer than 128 characters or contains other characters than letters, digits, `.`, `_`, `:` and `-` returns a 400 HTTP error code.
        example: current
        name: kid
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/KeyDoc"
              examples:
                Active key:
                  summary: A key that is used for signing
                  value:
                    status: ACTIVE
                    not_before: 2026-09-07T03:00:12.482Z
                    not_after: 2026-09-21T03:00:12.482Z
                    keys:
                    - kty: EC
                      crv: P-256
                      alg: ES256
                      kid: 6f1c2d3e-4a5b-4c6d-8e9f-0a1b2c3d4e5f
                      x: bKTx6DOR16BCmP_2pCIzfjjIuegFlS6Y3wsWH12Wr8o
                      "y": stY6VDFgVicJQnpBn763CwilIJBbDoy4sLg7Hsq1vP0
        "400":
          description: The kid is not a valid key ID.
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          description: No key with this kid exists.
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/media/checkEntity:
    get:
      summary: Screen an entity against adverse media
      description: "The checkEntity API method searches for entities that match certain\
        \ criteria. All categories are returned, even if they contain 0 hits."
      operationId: checkMediaEntity
      tags:
      - media_screening
      parameters:
      - description: Search string that is screened against Adverse Media news sources.
          All matches are considered. Cannot be combined with 'names' parameter.
        example: Deutsche Bank
        name: search_all
        in: query
        schema:
          type: string
      - description: Search string that is screened against Adverse Media news sources.
          Only names of entities within the articles are considered. Cannot be combined
          with 'search_all' parameter.
        name: names
        in: query
        schema:
          type: string
      - description: "If set, considers only articles from the start_date until \"\
          today\". The format is yyyy-mm-dd (inclusive), for example 2023-10-23."
        name: start_date
        in: query
        schema:
          $ref: "#/components/schemas/LocalDate"
      - description: "Comma-separated ISO 3166-1 alpha-2 codes of the countries the\
          \ articles are published in. A code prefixed with `-` excludes that country,\
          \ e.g. `de,at` or `-br`."
        name: publication_country
        in: query
        schema:
          type: string
      - description: |-
          Determines if detailed articles are included in the response. Defaults to `false`.

          The number of articles per `category` is limited to 10 items. The limit can be increased per API key if required.
        name: fetch_articles
        in: query
        schema:
          type: boolean
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CheckMediaResponse"
              examples:
                Categories only:
                  summary: With fetch_articles=false (default)
                  value:
                    timestamp: 2024-12-20T14:17:16.843Z
                    total_hits: 3508683
                    news_exposures:
                      violent_crime:
                        category: violent_crime
                        hits: 28466
                      terrorism:
                        category: terrorism
                        hits: 796691
                      regulatory:
                        category: regulatory
                        hits: 984492
                      financial_crime:
                        category: financial_crime
                        hits: 26088
                      political:
                        category: political
                        hits: 1649400
                      organized_crime:
                        category: organized_crime
                        hits: 23546
                With articles:
                  summary: With fetch_articles=true
                  value:
                    timestamp: 2024-11-11T14:22:07.447Z
                    total_hits: 126046
                    news_exposures:
                      regulatory:
                        category: regulatory
                        hits: 126046
                        articles:
                        - timestamp: 2025-04-06T01:10:53Z
                          id: 274534:3705
                          language: en
                          headline: "Deutsche Bank Fined €23mn by German Regulator:\
                            \ FT"
                          body: "<p>This hefty penalty is the second highest on record\
                            \ for BaFin, following a €40 million fine in 2015 over\
                            \ anti-money laundering lapses. The latest fine underscores\
                            \ Deutsche Bank's persistent struggle to overcome its\
                            \ history of regulatory lapses.</p> <p> The bulk of the\
                            \ new fine, €14.8 million, was imposed due to flaws in\
                            \ an internal investigation into mis-selling allegations\
                            \ in Spain. A whistleblower in 2019 flagged issues, leading\
                            \ to an internal probe that revealed Deutsche Bank had\
                            \ pushed risky foreign exchange derivatives to corporate\
                            \ clients. These clients, seeking to hedge currency risks,\
                            \ were sometimes exposed to heavy losses. Fewer than 12\
                            \ individuals were sanctioned by Deutsche, with most facing\
                            \ penalties for lack of oversight and some for exploiting\
                            \ flawed controls in bad faith.</p> <p> Spain's National\
                            \ Securities Market Commission (CNMV) also fined Deutsche\
                            \ Bank €10 million for alleged serious infringements of\
                            \ Spanish and EU law. The regulator found that Deutsche\
                            \ Bank failed to inform corporate clients properly about\
                            \ the risks associated with the derivatives. Deutsche\
                            \ Bank has announced plans to appeal this fine.</p> <p>\
                            \ BaFin criticized Deutsche Bank for a slow response to\
                            \ the issues. “The company did not make appropriate organisational\
                            \ arrangements to speed up the investigation of the breaches\
                            \ of the law and to implement measures to remedy the situation,”\
                            \ BaFin stated. Deutsche Bank has chosen not to appeal\
                            \ the fine imposed by BaFin.</p> <p> The Financial Times\
                            \ reported in 2023 that Deutsche Bank continued to sell\
                            \ risky foreign exchange derivatives to companies in Spain\
                            \ that had suffered significant losses from such products.\
                            \ This revelation highlights the bank's ongoing struggle\
                            \ to address mis-selling issues effectively.</p> <p> BaFin\
                            \ also fined Deutsche's domestic retail division, Postbank,\
                            \ €4.6 million for failing to record telephone conversations\
                            \ with clients who received investment advice and €3.7\
                            \ million for delayed processing of customer switching\
                            \ applications. Deutsche Bank stated that the penalty\
                            \ was covered by existing provisions and had no impact\
                            \ on its first-quarter profit. The bank emphasized its\
                            \ full cooperation with BaFin and improvements in processes\
                            \ and controls.</p> <p> The regulatory scrutiny on Deutsche\
                            \ Bank highlights a broader trend in the financial industry:\
                            \ enhanced oversight and compliance requirements. Financial\
                            \ institutions are under increasing pressure to implement\
                            \ robust internal controls and compliance frameworks to\
                            \ prevent mis-selling and other regulatory lapses.</p>\
                            \ <p> As regulatory demands grow, financial institutions\
                            \ are turning to technological innovations to stay compliant.\
                            \ Artificial Intelligence (AI) and machine learning (ML)\
                            \ are being used to monitor transactions, detect anomalies,\
                            \ and ensure adherence to regulations. For instance, AI-driven\
                            \ analytics can help identify patterns of mis-selling\
                            \ and alert banks to potential issues before they escalate.</p>\
                            \ <p> The role of whistleblowers in uncovering misconduct\
                            \ cannot be overstated. The case of Deutsche Bank in Spain\
                            \ underscores the importance of protecting and encouraging\
                            \ whistleblowers. Financial institutions are likely to\
                            \ see an increase in whistleblower programs and protections\
                            \ to foster a culture of transparency and accountability.</p>\
                            \ <p> Q: What was the primary reason for BaFin's latest\
                            \ fine on Deutsche Bank?</p> <p> A: The primary reason\
                            \ was flaws in an internal investigation into mis-selling\
                            \ allegations in Spain, where Deutsche Bank pushed risky\
                            \ foreign exchange derivatives to corporate clients.</p>\
                            \ <p> Q: How has Deutsche Bank responded to the fines?</p>\
                            \ <p> A: Deutsche Bank has stated that it will not appeal\
                            \ the fine imposed by BaFin but will appeal the fine from\
                            \ Spain's CNMV. The bank also emphasized improvements\
                            \ in processes and controls.</p> <p> Q: What are the future\
                            \ trends in financial regulation?</p> <p> A: Future trends\
                            \ include enhanced oversight and compliance, technological\
                            \ innovations in compliance, and increased focus on whistleblower\
                            \ protections.</p> <p> Did you know? Whistleblower protections\
                            \ are becoming a critical component of regulatory compliance.\
                            \ Financial institutions are increasingly implementing\
                            \ programs to encourage and protect whistleblowers.</p>\
                            \ <p> Pro Tips: For financial institutions, investing\
                            \ in AI and ML for compliance can save millions in fines\
                            \ and enhance regulatory adherence. Ensuring robust whistleblower\
                            \ protections can also help uncover issues early and mitigate\
                            \ risks.</p> <p> Ready to dive deeper into the world of\
                            \ financial regulation and compliance? Explore more of\
                            \ our articles on the latest trends and best practices\
                            \ in the financial industry. Subscribe to our newsletter\
                            \ for weekly insights and updates on regulatory developments.\
                            \ Share your thoughts in the comments below!</p>"
                          source_link: https://www.archynetys.com/deutsche-bank-fined-e23mn-by-german-regulator-ft/
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/media/checkIndividual:
    get:
      summary: Screen an individual against adverse media
      description: "The checkIndividual API method searches for individuals that match\
        \ certain criteria. All categories are returned, even if they contain 0 hits."
      operationId: checkMediaIndividual
      tags:
      - media_screening
      parameters:
      - description: Search string that is screened against Adverse Media news sources.
          All matches are considered. Cannot be combined with 'names' parameter.
        example: Boris Johnson
        name: search_all
        in: query
        schema:
          type: string
      - description: Search string that is screened against Adverse Media news sources.
          Only names of natural persons within the articles are considered. Cannot
          be combined with 'search_all' parameter.
        name: names
        in: query
        schema:
          type: string
      - description: "If set, considers only articles from the start_date until \"\
          today\". The format is yyyy-mm-dd (inclusive), for example 2023-10-23."
        name: start_date
        in: query
        schema:
          $ref: "#/components/schemas/LocalDate"
      - description: "Comma-separated ISO 3166-1 alpha-2 codes of the countries the\
          \ articles are published in. A code prefixed with `-` excludes that country,\
          \ e.g. `de,at` or `-br`."
        name: publication_country
        in: query
        schema:
          type: string
      - description: |-
          Determines if detailed articles are included in the response. Defaults to `false`.

          The number of articles per `category` is limited to 10 items. The limit can be increased per API key if required.
        name: fetch_articles
        in: query
        schema:
          type: boolean
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CheckMediaResponse"
              examples:
                Categories only:
                  summary: With fetch_articles=false (default)
                  value:
                    timestamp: 2024-12-20T14:17:16.843Z
                    total_hits: 3508683
                    news_exposures:
                      violent_crime:
                        category: violent_crime
                        hits: 28466
                      terrorism:
                        category: terrorism
                        hits: 796691
                      regulatory:
                        category: regulatory
                        hits: 984492
                      financial_crime:
                        category: financial_crime
                        hits: 26088
                      political:
                        category: political
                        hits: 1649400
                      organized_crime:
                        category: organized_crime
                        hits: 23546
                With articles:
                  summary: With fetch_articles=true
                  value:
                    timestamp: 2024-11-11T14:22:07.447Z
                    total_hits: 801
                    news_exposures:
                      terrorism:
                        category: terrorism
                        hits: 801
                        articles:
                        - timestamp: 2024-11-06T08:02:35Z
                          language: en
                          headline: Boris Johnson ‘fired' during live US election
                            coverage for plugging memoir - Evening Standard 1
                          body: "<p> Channel 4 ‘fired' Boris Johnson from US election\
                            \ show for promoting his book, co-host says</p> <p> The\
                            \ Guardian</p> <p> US election 2024 result viewers praise\
                            \ Emily Maitlis for eviscerating Boris Johnson</p> <p>\
                            \ The Independent</p> <p> Boris Johnson ‘fired' from Channel\
                            \ 4's US election coverage</p> <p> The Telegraph</p> <p>\
                            \ Stormy Daniels and Boris Johnson were only the start\
                            \ of a mad night</p> <p> The Times</p>"
                          source_link: https://www.info-flash.com/info-flash/actualites/royaume-uni/93518-united-kingdom/79685542-boris-johnson-fired-during-live-us-election-coverage-for-plugging-memoir-evening-standard.html
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/media/search:
    get:
      summary: Search adverse media articles
      description: |-
        The search API method returns the matching articles themselves instead of a category breakdown. It is the endpoint to use when you need every article that matches your query, because the results can be paged through with the `cursor` parameter.

        In contrast to `checkIndividual` and `checkEntity`, the articles are returned as a flat `articles` array without the `news_exposures` category breakdown.
      operationId: searchMedia
      tags:
      - media_screening
      parameters:
      - description: Search string that is screened against Adverse Media news sources.
          All matches are considered. Cannot be combined with 'names' parameter.
        example: Example Holding
        name: search_all
        in: query
        schema:
          type: string
      - description: Search string that is screened against Adverse Media news sources.
          Only names within the articles are considered. Cannot be combined with 'search_all'
          parameter.
        name: names
        in: query
        schema:
          type: string
      - description: |-
          Comma-separated list of terms that all have to appear in the body of the article, in addition to the `names` / `search_all` matching. An article is only returned if every term is present.

          For example `term_filter=fraud,money laundering` returns only those articles that contain both "fraud" and "money laundering".
        example: "fraud,money laundering"
        name: term_filter
        in: query
        schema:
          type: string
      - description: "If set, considers only articles from the start_date until \"\
          today\". The format is yyyy-mm-dd (inclusive), for example 2023-10-23."
        name: start_date
        in: query
        schema:
          $ref: "#/components/schemas/LocalDate"
      - description: "Comma-separated ISO 3166-1 alpha-2 codes of the countries the\
          \ articles are published in. A code prefixed with `-` excludes that country,\
          \ e.g. `de,at` or `-br`."
        name: publication_country
        in: query
        schema:
          type: string
      - description: |-
          Pages through all matching articles. Leave the parameter out for the first page. Every response contains a `next_cursor` value, which has to be passed back as `cursor` to retrieve the next page. On the last page `next_cursor` is absent.

          The `cursor` value is opaque and must neither be constructed nor parsed on your side. There is no parameter to change the page size, and `total_hits` stays constant while you page through the results.
        name: cursor
        in: query
        schema:
          type: string
      - description: |-
          If set, considers only articles of the given category. Possible values are

          - political
          - regulatory
          - terrorism
          - financial_crime
          - organized_crime
          - violent_crime
        name: category
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ArticleSearchResponse"
              examples:
                Last page:
                  summary: The last page has no next_cursor
                  value:
                    timestamp: 2026-08-21T08:52:27.399Z
                    total_hits: 1
                    articles:
                    - timestamp: 2026-06-27T19:44:50Z
                      id: 219938:26776
                      language: en
                      headline: Regulator fines Example Holding over money laundering
                        controls
                      body: "<p>The financial regulator has imposed a fine on Example\
                        \ Holding following an investigation into the company's anti-money\
                        \ laundering controls.</p> <p>According to the regulator,\
                        \ the company failed to monitor a number of high-risk client\
                        \ relationships over a period of three years, and suspicious\
                        \ transaction reports were not escalated in time.</p> <p>Example\
                        \ Holding stated that it has since strengthened its compliance\
                        \ function and will not appeal the decision. Two former board\
                        \ members are subject to separate proceedings on suspicion\
                        \ of fraud.</p>"
                      source_link: https://www.example.com/regulator-fines-example-holding
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/registerEntity:
    get:
      summary: Register an entity for monitoring
      description: |-
        The registerEntity endpoint allows clients to register an entity's name to be monitored against dilisense's database, and receive notifications if any matches are found from that point in time onwards.

        Registration does not perform an initial screening, and matches that already exist at the time of registration will not trigger a webhook. Therefore, first register the search profile and screen the name with checkEntity afterwards.
      operationId: registerEntity
      tags:
      - om_profiles
      parameters:
      - description: "The unique identifier of the search profile that you want to\
          \ associate with this request. If a search profile with this profile_id\
          \ is already registered, the existing profile is updated with the parameters\
          \ of the new request."
        example: abcdefg-1234
        name: profile_id
        in: query
        schema:
          type: string
      - description: "Search string that is checked against sanction, PEP and criminal\
          \ lists. All fields are considered. Cannot be combined with 'names' parameter."
        name: search_all
        in: query
        schema:
          type: string
      - description: "Search string that is checked against sanction, PEP and criminal\
          \ lists. Only name fields (e.g. 'name', 'alias_names' etc.) are considered.\
          \ Cannot be combined with 'search_all' parameter."
        example: REYCO GMBH GERMANY
        name: names
        in: query
        schema:
          type: string
      - description: |-
          This parameter defines if spelling differences need to be considered for the search string.

          - 1: Fuzzy search with distance 1 (e.g. "business" will also match for "busines") for the "names" parameter.
          - 2: Fuzzy search with distance 2 (e.g. "business" will also match for "bisines") for the "names" parameter.
        name: fuzzy_search
        in: query
        schema:
          type: integer
          format: int32
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StatusResponse"
              examples:
                Success:
                  summary: Success
                  value:
                    status: success
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/registerIndividual:
    get:
      summary: Register an individual for monitoring
      description: |-
        The registerIndividual endpoint allows clients to register an individual's name to be monitored against dilisense's database, and receive notifications if any matches are found from that point in time onwards.

        Registration does not perform an initial screening, and matches that already exist at the time of registration will not trigger a webhook. Therefore, first register the search profile and screen the name with checkIndividual afterwards.
      operationId: registerIndividual
      tags:
      - om_profiles
      parameters:
      - description: "The unique identifier of the search profile that you want to\
          \ associate with this request. If a search profile with this profile_id\
          \ is already registered, the existing profile is updated with the parameters\
          \ of the new request."
        example: abcdefg-1234
        name: profile_id
        in: query
        schema:
          type: string
      - description: "Search string that is checked against sanction, PEP and criminal\
          \ lists. All fields are considered. Cannot be combined with 'names' parameter."
        name: search_all
        in: query
        schema:
          type: string
      - description: "Search string that is checked against sanction, PEP and criminal\
          \ lists. Only name fields (e.g. 'name', 'alias_names' etc.) are considered.\
          \ Cannot be combined with 'search_all' parameter."
        example: Boris Johnson
        name: names
        in: query
        schema:
          type: string
      - description: |-
          This parameter defines if spelling differences need to be considered for the search string.

          - 1: Fuzzy search with distance 1 (e.g. Angela will also match for Angelo) for the "names" parameter.
          - 2: Fuzzy search with distance 2 (e.g. Angela will also match for Angale) for the "names" parameter.
        example: 1
        name: fuzzy_search
        in: query
        schema:
          type: integer
          format: int32
      - description: |-
          This parameter searches for a match in the date of birth. Possible variations are

          - dd/mm/yyyy if the exact date is known (e.g. 01/05/1990).
          - 00/00/yyyy if only the year is known (e.g. 00/00/1990).
          - 00/mm/yyyy if only the month and the year are known (e.g. 00/05/1990).
          - dd/00/yyyy if only the day and the year are known (e.g. 01/00/1990).

          Individuals that match the given date of birth as well as individuals that have no date of birth value set are returned. For safety, records without a date of birth are not excluded, so that a potential match is not missed.
        example: 19/06/1964
        name: dob
        in: query
        schema:
          type: string
      - description: |-
          This parameter searches for a match in gender. Possible values are

          - `male` - For searching for individuals that are "male" or that have the gender value not set.
          - `female` - For searching for individuals that are "female" or that have the gender value not set.

          Individuals that have the given gender as well as individuals that have no gender value set are returned. For safety, records without a gender are not excluded, so that a potential match is not missed.
        example: male
        name: gender
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StatusResponse"
              examples:
                Success:
                  summary: Success
                  value:
                    status: success
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/removeSearchProfile:
    get:
      summary: Remove a search profile
      description: |-
        The removeSearchProfile endpoint allows clients to remove a search profile that was previously registered with the Ongoing Monitoring API, based on the profile_id provided in the request parameters.

        The endpoint is idempotent. Removing a profile_id that is unknown or that has already been removed also succeeds, so that a request can safely be retried if a previous response did not reach your system.
      operationId: removeSearchProfile
      tags:
      - om_profiles
      parameters:
      - description: The unique identifier of the profile to be removed.
        example: abcdefg-1234
        name: profile_id
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StatusResponse"
              examples:
                Success:
                  summary: Success
                  value:
                    status: success
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/testWebhookDelivery:
    get:
      summary: Send a test webhook notification
      description: |-
        Once the webhook is configured, you can trigger a test notification to your configured webhook URL at any time in order to verify your integration. A sample ADD notification with the given profile_id is sent.

        A separate sandbox environment is not required. If you would like us to verify the integration together with you, please send us your webhook URL and we will send a test notification from our side.
      operationId: testWebhookDelivery
      tags:
      - om_profiles
      parameters:
      - description: The profile_id that is set in the test notification. It does
          not have to be registered.
        example: abcdefg-1234
        name: profile_id
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StatusResponse"
              examples:
                Success:
                  summary: Success
                  value:
                    status: success
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
  /v1/usage:
    get:
      summary: Get the usage of your API key
      description: |-
        The usage endpoint returns how many API calls your API key made in a month, broken down by endpoint and day, together with your quotas and the number of registered Ongoing Monitoring search profiles. Use it to track your consumption against your quota, to reconcile your invoice or to reconcile the search profiles tracked in your own system. The endpoint is available for every API key and covers all dilisense APIs.

        The call is free of charge and does not count towards your billed requests. Calls are counted almost in real time, a call shows up in the usage after a few seconds.
      operationId: getUsage
      tags:
      - usage
      parameters:
      - description: |-
          The month for which the usage is returned, in the format yyyy-mm (e.g. 2026-08). Defaults to the current month. Months are calendar months in UTC.

          If the value is not in the format yyyy-mm, the API call will return a 400 HTTP error code. Any other parameter is rejected with a 400 HTTP error code as well.
        example: 2026-09
        name: month
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Usage"
              examples:
                September 2026:
                  summary: With month=2026-09
                  value:
                    month: 2026-09
                    timezone: UTC
                    summary:
                      billed_requests_monthly_used: 132
                      billed_requests_quota: 10000
                      ongoing_monitoring_profiles_registered: 250
                      ongoing_monitoring_profiles_quota: 1000
                    endpoints:
                    - path: /v1/checkIndividual
                      monthly_used: 120
                      daily:
                      - date: 2026-09-01
                        used: 45
                      - date: 2026-09-02
                        used: 75
                    - path: /v1/media/checkEntity
                      monthly_used: 12
                      daily:
                      - date: 2026-09-02
                        used: 12
                    - path: /v1/getSourceList
                      monthly_used: 3
                      daily:
                      - date: 2026-09-01
                        used: 3
                    - path: /v1/usage
                      monthly_used: 2
                      daily:
                      - date: 2026-09-02
                        used: 2
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "429":
          $ref: "#/components/responses/TooManyRequests"
        "500":
          $ref: "#/components/responses/InternalServerError"
        "503":
          $ref: "#/components/responses/ServiceUnavailable"
      security:
      - x-api-key: []
webhooks:
  matchNotification:
    post:
      operationId: matchNotification
      summary: Receive a match notification
      description: |-
        The Ongoing Monitoring API provides a webhook-based notification system that enables clients to receive real-time alerts when a change in a search profile is found in any of the screening lists. The URL should be publicly accessible and capable of handling HTTP POST requests. We will ask you for the webhook URL during the onboarding process.

        Your API key is sent with every webhook request, so that you can verify that the notification originates from dilisense. In addition every notification carries a payload signature in the `x-dilisense-signature` header, which proves that the body originates from dilisense and was not altered, see [Signature Verification](https://developers.dilisense.com/using-the-api/signature-verification).

        Notifications are driven by the updates of the dilisense database and are not sent on a fixed schedule. Each database update is compared against the previous state and the resulting changes are computed subsequently. If an update contains no relevant change for your registered search profiles, no webhook is sent. For each match a separate webhook is triggered, with ADD, UPDATE or DELETE as the match_type (e.g., there can be multiple matches in one list and across lists).

        If the webhook URL receives a notification from the Ongoing Monitoring API, it should respond with an HTTP status code in the 2xx range within 30 seconds to indicate that the message has been received and acknowledged. The response body is ignored. To avoid timeouts or delays, any long-running processes should be written as code that can run asynchronously outside the webhook endpoint.
      tags:
      - om_webhook
      parameters:
      - name: x-api-key
        in: header
        description: "Your API key, so that you can verify that the notification originates\
          \ from dilisense."
        schema:
          type: string
      - name: x-dilisense-signature
        in: header
        description: "The payload signature, which proves that the body originates\
          \ from dilisense and was not altered, see [Signature Verification](https://developers.dilisense.com/using-the-api/signature-verification)."
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/WebhookNotification"
            examples:
              ADD notification:
                summary: A new match for a registered individual
                value:
                  timestamp: 2024-03-24T19:16:00Z
                  event_id: 3f6c2a9e-8d41-4b7a-9c5e-1a2b3c4d5e6f
                  profile_id: abcdefg-1234
                  match_type: ADD
                  entity:
                    id: c438b18a93cd3c13
                    source_id: dilisense_pep
                    source_type: PEP
                    pep_type: POLITICIAN
                    entity_type: INDIVIDUAL
                    name: Boris Johnson
                    given_names:
                    - Boris
                    last_names:
                    - Johnson
                    gender: MALE
                    date_of_birth:
                    - 19/06/1964
                    political_parties:
                    - Conservative Party
                    description:
                    - Prime Minister of the United Kingdom
                    occupations:
                    - journalist
                    - politician
                    links:
                    - "Facebook: borisjohnson"
                    citizenship:
                    - United Kingdom
                    - United States of America
                    positions:
                    - 2001-06-07 - 2005-04-11  Member of the 53rd Parliament of the
                      United Kingdom
                    - 2005-05-05 - 2008-06-04  Member of the 54th Parliament of the
                      United Kingdom
                    - 2008-05-04 - 2016-05-07  Mayor of London
                    - 2015-05-07 - 2017-05-03  Member of the 56th Parliament of the
                      United Kingdom
                    - 2016-07-13 - 2018-07-09  Secretary of State for Foreign and
                      Commonwealth Affairs
                    - 2017-06-08 - 2019-11-06  Member of the 57th Parliament of the
                      United Kingdom
                    - Since 2016-01-01  Member of the Privy Council of the United
                      Kingdom
                    - Since 2019-07-23  Leader of the Conservative Party
                    - Since 2019-07-24  First Lord of the Treasury
                    - Since 2019-07-24  Minister for the Civil Service
                    - Since 2019-07-24  Prime Minister of the United Kingdom
                    - Since 2019-07-26  Minister for the Union
                    - Since 2019-12-12  Member of the 58th Parliament of the United
                      Kingdom
                    place_of_birth:
                    - New York City
                    parents:
                    - Charlotte Johnson Wahl
                    - Stanley Johnson
                    siblings:
                    - Jo Johnson
                    - Leo Johnson
                    - Rachel Johnson
                    spouse:
                    - Allegra Mostyn-Owen
                    - Marina Wheeler
                    children:
                    - Cassia Peaches Johnson
                    - Lara Lettice Johnson
                    - Milo Arthur Johnson
                    - Theodore Apollo Johnson
                    - Wilfred Johnson
      responses:
        "2XX":
          description: "Acknowledges the notification. Respond within 30 seconds,\
            \ the response body is ignored."
        default:
          description: The notification is not acknowledged.
servers:
- url: https://api.dilisense.com
