{
  "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.\n\nThese guides apply to all APIs:\n\n- [Authentication](https://developers.dilisense.com/using-the-api/authentication) with the x-api-key header\n- [Errors](https://developers.dilisense.com/using-the-api/errors), including throttling and retries\n- [Quotas](https://developers.dilisense.com/using-the-api/quotas), and the usage endpoint that shows where you stand\n- [Versioning](https://developers.dilisense.com/using-the-api/versioning)\n",
    "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.",
        "required": [
          "id",
          "source_id",
          "source_type",
          "entity_type",
          "name"
        ],
        "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\n- PEP\n- CRIMINAL\n- NON_COMPLIANT_TAXPAYER\n- 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)\n\nOne of these values will be set. More values may be added."
          },
          "pep_type": {
            "type": "string",
            "description": "- POLITICIAN\n- JUDGE\n- BOARD_MEMBER_OF_CENTRAL_BANK\n- EXECUTIVE_AUDITOR\n- ADMINISTRATION_OFFICE_EXECUTIVE\n- MILITARY_OFFICIAL\n- EMBASSY_OFFICIAL\n- INTERNATIONAL_ORGANIZATION_OFFICIAL\n- RELATIVES_AND_CLOSE_ASSOCIATES\n- STATE_OWNED_ENTERPRISE\n- BOARD_MEMBER_OF_STATE_OWNED_ENTERPRISE\n- PROSECUTION_OFFICIAL\n- AGENCY_OFFICIAL\n- OTHER\n\nOne 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).\n\n- `1`: Top national leaders with direct control over executive, legislative, or defense matters, for example:\n  - Heads of state or government (e.g., presidents, prime ministers, monarchs).\n  - Members of the national executive cabinet.\n  - Speakers or presidents of national parliaments.\n  - Chiefs of defense, heads of national security or intelligence services.\n- `2`: Other senior officials with national-level authority or international representation, for example:\n  - Members of national parliaments.\n  - Ministers of state or deputy ministers.\n  - Heads/board members of central banks and national regulatory agencies.\n  - Senior judiciary (e.g., supreme or constitutional courts).\n  - Senior military leadership (e.g., general staff, joint chiefs).\n  - Ambassadors and permanent representatives to international organizations.\n- `3`: Sub-national or institutional positions with significant influence but below top national leadership, for example:\n  - Governors, premiers, and members of state/provincial assemblies.\n  - Mayors and councillors of large or capital cities.\n  - Executives of nationally significant state-owned enterprises or agencies.\n  - Leaders of major research, health, or educational institutions.\n  - Senior officers of regional parliaments or courts.\n  - Senior political party members (also depending on party relevance).\n- `4`: Local, administrative, judicial, or institutional roles with limited political exposure, for example:\n  - Mayors of smaller towns, local councillors, municipal-level officials.\n  - Managers of small or sectoral state-owned enterprises.\n  - Cultural, academic, and technical government agencies.\n  - Lower or special-purpose judicial authorities.\n\nReturned 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\n- ENTITY\n- VESSEL\n- AIRCRAFT\n- JURISDICTION\n- OBJECT\n- UNKNOWN\n\nOne 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\n- MALE\n- UNKNOWN\n\nOne of these values will be set for individuals.",
            "x-entity-types": [
              "INDIVIDUAL"
            ]
          },
          "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.",
            "x-entity-types": [
              "INDIVIDUAL"
            ]
          },
          "given_names": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list with given names of this individual.",
            "x-entity-types": [
              "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.",
            "x-entity-types": [
              "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.",
            "x-entity-types": [
              "INDIVIDUAL"
            ]
          },
          "parents": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of parent names for this individual.",
            "x-entity-types": [
              "INDIVIDUAL"
            ]
          },
          "children": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of children names for this individual.",
            "x-entity-types": [
              "INDIVIDUAL"
            ]
          },
          "siblings": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of sibling names for this individual.",
            "x-entity-types": [
              "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.",
            "x-entity-types": [
              "INDIVIDUAL"
            ]
          },
          "date_of_birth_remarks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of date of birth remarks for this individual.",
            "x-entity-types": [
              "INDIVIDUAL"
            ]
          },
          "place_of_birth": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of place of births for this individual.",
            "x-entity-types": [
              "INDIVIDUAL"
            ]
          },
          "place_of_birth_remarks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of place of birth remarks for this individual.",
            "x-entity-types": [
              "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.",
            "x-entity-types": [
              "INDIVIDUAL"
            ]
          },
          "citizenship_remarks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of citizenship remarks for this individual.",
            "x-entity-types": [
              "INDIVIDUAL"
            ]
          },
          "jurisdiction": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of jurisdictions for this entity in ISO 3166-1 alpha-2 format.",
            "x-entity-types": [
              "ENTITY"
            ]
          },
          "company_number": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The company number of this entity (e.g. the registration number in the respective jurisdiction).",
            "x-entity-types": [
              "ENTITY"
            ]
          },
          "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.",
            "x-entity-types": [
              "INDIVIDUAL"
            ]
          },
          "occupations": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of occupations for this individual.",
            "x-entity-types": [
              "INDIVIDUAL"
            ]
          },
          "positions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of positions for this individual.",
            "x-entity-types": [
              "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.",
            "x-entity-types": [
              "INDIVIDUAL"
            ]
          },
          "titles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of titles for this individual (e.g. Dr., Prof., Hon. etc.).",
            "x-entity-types": [
              "INDIVIDUAL"
            ]
          },
          "functions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of functions for this individual.",
            "x-entity-types": [
              "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",
        "required": [
          "timestamp",
          "id",
          "language",
          "headline",
          "body",
          "source_link"
        ],
        "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",
        "required": [
          "timestamp",
          "total_hits",
          "articles"
        ],
        "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",
        "required": [
          "timestamp",
          "total_hits",
          "news_exposures"
        ],
        "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",
        "required": [
          "timestamp",
          "total_hits",
          "found_records"
        ],
        "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",
        "required": [
          "type",
          "record"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "- ADD\n- UPDATE\n- DELETE"
          },
          "record": {
            "$ref": "#/components/schemas/AmlRecord",
            "description": "The added, updated or deleted record, without `list_date`.",
            "type": "object"
          }
        }
      },
      "DailyUsage": {
        "description": "The calls of one day.",
        "type": "object",
        "required": [
          "date",
          "used"
        ],
        "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",
        "required": [
          "path",
          "monthly_used",
          "daily"
        ],
        "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",
        "required": [
          "error_message"
        ],
        "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",
        "required": [
          "kty",
          "crv",
          "alg",
          "kid",
          "x",
          "y"
        ],
        "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",
        "required": [
          "status",
          "not_before",
          "not_after",
          "keys"
        ],
        "properties": {
          "status": {
            "type": "string",
            "description": "- ACTIVE: the key is in use for signing.\n- RETIRED: the key was replaced by a newer key in a scheduled rotation. Signatures created with it remain valid.\n- REVOKED: the key must not be trusted anymore."
          },
          "not_before": {
            "$ref": "#/components/schemas/Instant",
            "description": "The start of the period in which the key is used for signing (ISO 8601 timestamp).",
            "type": "string"
          },
          "not_after": {
            "$ref": "#/components/schemas/Instant",
            "description": "The end of the period in which the key is used for signing (ISO 8601 timestamp).",
            "type": "string"
          },
          "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",
        "required": [
          "category",
          "hits"
        ],
        "properties": {
          "category": {
            "type": "string",
            "description": "- political\n- regulatory\n- terrorism\n- financial_crime\n- organized_crime\n- violent_crime\n\nMore 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",
        "required": [
          "source",
          "name",
          "description",
          "link",
          "source_type",
          "region",
          "country_code",
          "country_name",
          "issuer_name"
        ],
        "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\n- pep\n- criminal\n- other\n\nMore types may be added."
          },
          "region": {
            "type": "string",
            "description": "- americas\n- apac\n- emea\n- 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": {
            "$ref": "#/components/schemas/Instant",
            "description": "The last time the source was checked for updates (ISO 8601 timestamp).",
            "type": "string"
          },
          "last_modified": {
            "$ref": "#/components/schemas/Instant",
            "description": "The last time a change was detected compared to the previous version (ISO 8601 timestamp).",
            "type": "string"
          },
          "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",
        "required": [
          "status"
        ],
        "properties": {
          "status": {
            "type": "string",
            "description": "Always success.",
            "examples": [
              "success"
            ]
          }
        }
      },
      "Usage": {
        "description": "The usage of your API key in a month.",
        "type": "object",
        "required": [
          "month",
          "timezone",
          "summary",
          "endpoints"
        ],
        "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": {
            "$ref": "#/components/schemas/UsageSummary",
            "description": "The totals of the month and your quotas.",
            "type": "object"
          },
          "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",
        "required": [
          "billed_requests_monthly_used"
        ],
        "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",
        "required": [
          "timestamp",
          "profile_id",
          "match_type",
          "entity"
        ],
        "properties": {
          "timestamp": {
            "$ref": "#/components/schemas/Instant",
            "description": "The timestamp of the notification (ISO 8601 timestamp).",
            "type": "string"
          },
          "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.\n- UPDATE: The notification is for an update to an existing record.\n- 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.\n\nYou 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.\n\nScreening 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.\n\nScreening 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).\n\n**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": "utils",
      "description": "Calls that support all dilisense APIs: the source catalogue, the public keys to verify signed messages and the usage of your API key. They are free of charge and do not count towards your billed requests.",
      "x-displayName": "Utilities"
    },
    {
      "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.\n\n**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:\n\n- \"LLC\", \"L.L.C.\" and \"limited liability company\"\n- \"GmbH\", \"G m b H\" and \"Gesellschaft mit beschränkter Haftung\"\n- \"SARL\", \"S.A.R.L.\" and \"société à responsabilité limitée\"\n\nFor 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",
        "x-entity-type": "ENTITY",
        "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.\n\n- 1: Fuzzy search with distance 1 (e.g. \"business\" will also match for \"busines\") for the \"names\" parameter.\n- 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.\n\nThe value is a comma-separated list of source IDs and/or the selector `included`. The searched sources are the union of all entries.\n\n- `included`: the sources that are included for your API key.\n- source IDs: exactly those sources, for example \"us_department_of_treasury_non_sdn\".\n\nFor 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.\n\nThe 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",
        "x-entity-type": "INDIVIDUAL",
        "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.\n\n- 1: Fuzzy search with distance 1 (e.g. Angela will also match for Angelo) for the \"names\" parameter.\n- 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\n\n- dd/mm/yyyy if the exact date is known (e.g. 01/05/1990).\n- 00/00/yyyy if only the year is known (e.g. 00/00/1990).\n- 00/mm/yyyy if only the month and the year are known (e.g. 00/05/1990).\n- dd/00/yyyy if only the day and the year are known (e.g. 01/00/1990).\n\nIndividuals 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\n\n- `male` - For searching for individuals that are \"male\" or that have the gender value not set.\n- `female` - For searching for individuals that are \"female\" or that have the gender value not set.\n\nIndividuals 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.\n\nIndividuals 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.\n\nThe value is a comma-separated list of source IDs and/or the selector `included`. The searched sources are the union of all entries.\n\n- `included`: the sources that are included for your API key.\n- source IDs: exactly those sources, for example \"us_department_of_treasury_non_sdn\".\n\nFor 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.\n\nThe 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\n\n- INDIVIDUAL\n- ENTITY\n- VESSEL\n- AIRCRAFT\n- JURISDICTION\n- OBJECT\n- UNKNOWN\n\nThe 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.\n\n- 1: Fuzzy search with distance 1 (e.g. Angela will also match for Angelo) for the \"names\" parameter.\n- 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.\n\nThe value is a comma-separated list of source IDs and/or the selector `included`. The searched sources are the union of all entries.\n\n- `included`: the sources that are included for your API key.\n- source IDs: exactly those sources, for example \"us_department_of_treasury_non_sdn\".\n\nFor 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.\n\nThe 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.\n\nThe 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.\n\n- 1: Fuzzy search with distance 1 (e.g. \"business\" will also match for \"busines\") for the \"names\" parameter.\n- 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.\n\nThe value is a comma-separated list of source IDs and/or the selector `included`. The searched sources are the union of all entries.\n\n- `included`: the sources that are included for your API key.\n- source IDs: exactly those sources, for example \"us_department_of_treasury_non_sdn\".\n\nFor 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.\n\nThe 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.\n\nThe 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.\n\n- 1: Fuzzy search with distance 1 (e.g. Angela will also match for Angelo) for the \"names\" parameter.\n- 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\n\n- dd/mm/yyyy if the exact date is known (e.g. 01/05/1990).\n- 00/00/yyyy if only the year is known (e.g. 00/00/1990).\n- 00/mm/yyyy if only the month and the year are known (e.g. 00/05/1990).\n- dd/00/yyyy if only the day and the year are known (e.g. 01/00/1990).\n\nIndividuals 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\n\n- `male` - For searching for individuals that are \"male\" or that have the gender value not set.\n- `female` - For searching for individuals that are \"female\" or that have the gender value not set.\n\nIndividuals 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.\n\nThe value is a comma-separated list of source IDs and/or the selector `included`. The searched sources are the union of all entries.\n\n- `included`: the sources that are included for your API key.\n- source IDs: exactly those sources, for example \"us_department_of_treasury_non_sdn\".\n\nFor 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.\n\nThe 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.\n\nAdditionally 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.\n\nThe value is a comma-separated list of source IDs and/or the selector `included`. The contained sources are the union of all entries.\n\n- `included`: the sources that are included for your API key.\n- source IDs: exactly those sources, for example \"us_department_of_treasury_non_sdn\".\n\nFor 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\"]}}\n{\"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\"]}}\n{\"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\"]}}\n"
                  }
                }
              }
            }
          },
          "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`.\n\nAdditionally 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.\n\nThe value is a comma-separated list of source IDs and/or the selector `included`. The contained sources are the union of all entries.\n\n- `included`: the sources that are included for your API key.\n- source IDs: exactly those sources, for example \"us_department_of_treasury_non_sdn\".\n\nFor 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.\"]}\n{\"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\"]}\n{\"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\"]}\n{\"source_id\":\"ru_ffms_terrorist_list\",\"source_type\":\"SANCTION\",\"id\":\"ca18hb46f9ff6af5\",\"entity_type\":\"ENTITY\",\"name\":\"МЕСТНАЯ РЕЛИГИОЗНАЯ ОРГАНИЗАЦИЯ СВИДЕТЕЛЕЙ ИЕГОВЫ Г.НИЖНЕКАМСКА И НИЖНЕКАМСКОГО РАЙОНА \\\"УПРАВЛЕНЧЕСКОГО ЦЕНТРА СВИДЕТЕЛЕЙ ИЕГОВЫ В РОССИИ\\\"\",\"company_number\":[\"ИНН: 1651024363;\"]}\n{\"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\"]}\n{\"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\"]}\n"
                  }
                }
              }
            }
          },
          "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.\n\nBy 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.\n\nThe response is signed, see the `x-dilisense-signature` header.",
        "operationId": "getSourceList",
        "tags": [
          "utils"
        ],
        "parameters": [
          {
            "description": "Defines which sources are returned. Possible values are\n\n- `included` (default): only the sources that are included for your API key.\n- `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.\n\nA 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.\n\nThe header value consists of comma-separated parts: `v1,kid=<key id>,sig=<signature>`\n\n- `v1`: the version of the signature scheme.\n- `kid`: the ID of the key that created the signature. Use it to fetch the public key from the keys endpoint.\n- `sig`: the signature, base64url-encoded without padding (RFC 4648 section 5).\n\nSignatures 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.\n\n**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:\n\n- 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.\n- 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.\n- Accept the statuses ACTIVE and RETIRED, reject REVOKED.",
        "operationId": "getSigningKey",
        "tags": [
          "utils"
        ],
        "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:\n\n- `current`: the key that is currently used for signing.\n- `previous`: the key that was replaced by the last rotation.\n\nFor verifying a signature always use the `kid` of the header. The aliases are meant for monitoring and for fetching the keys ahead of time.\n\nA `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`.\n\nThe 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 …",
                              "body": "<p>This hefty penalty …</p>",
                              "source_link": "https://www.example.com/news/274534"
                            }
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "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`.\n\nThe 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",
                              "id": "274534:2871",
                              "language": "en",
                              "headline": "Boris Johnson ‘fired' …",
                              "body": "<p>Channel 4 ‘fired' …</p>",
                              "source_link": "https://www.example.com/news/79685542"
                            }
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "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.\n\nIn 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.\n\nFor 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.\n\nThe `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\n\n- political\n- regulatory\n- terrorism\n- financial_crime\n- organized_crime\n- 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.\n\nRegistration 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.\n\n- 1: Fuzzy search with distance 1 (e.g. \"business\" will also match for \"busines\") for the \"names\" parameter.\n- 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.\n\nRegistration 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.\n\n- 1: Fuzzy search with distance 1 (e.g. Angela will also match for Angelo) for the \"names\" parameter.\n- 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\n\n- dd/mm/yyyy if the exact date is known (e.g. 01/05/1990).\n- 00/00/yyyy if only the year is known (e.g. 00/00/1990).\n- 00/mm/yyyy if only the month and the year are known (e.g. 00/05/1990).\n- dd/00/yyyy if only the day and the year are known (e.g. 01/00/1990).\n\nIndividuals 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\n\n- `male` - For searching for individuals that are \"male\" or that have the gender value not set.\n- `female` - For searching for individuals that are \"female\" or that have the gender value not set.\n\nIndividuals 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.\n\nThe 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.\n\nA 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.\n\nThe 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. The quotas themselves are described in [Quotas](https://developers.dilisense.com/using-the-api/quotas).",
        "operationId": "getUsage",
        "tags": [
          "utils"
        ],
        "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.\n\nIf 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.\n\nYour 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).\n\nNotifications 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).\n\nIf 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"
    }
  ]
}