# Sanctions Screening: OFAC, UN, EU, UK (`br_data_hub/global-sanctions-screening`) Actor

Screen people and companies using data from the official OFAC SDN and Consolidated, UN Security Council, EU and UK sanctions lists in one call. Fuzzy matching with transliteration, word order and aliases, a 0-100 score, the reason for each hit and the version of every list.

- **URL**: https://apify.com/br_data_hub/global-sanctions-screening.md
- **Developed by:** [br_data_hub](https://apify.com/br_data_hub) (community)
- **Categories:** AI, Automation, Business
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.80 / 1,000 screened names

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Sanctions Screening: OFAC, UN, EU, UK

Screen **people and companies** against the **official sanctions lists** of the United States, the United Nations, the European Union and the United Kingdom **in one call**:

- **OFAC SDN** (Specially Designated Nationals) and **OFAC Consolidated (non-SDN)**, US Treasury
- **UN Security Council Consolidated List** (XML)
- **EU Financial Sanctions Files** (consolidated list of persons, groups and entities subject to EU financial sanctions)
- **UK Sanctions List** (FCDO)

Each name gets a **0-100 score** with fuzzy matching that handles **transliteration** (Cyrillic, Arabic, accents), **word order** ("Putin Vladimir"), **aliases** (a.k.a.) and spelling variants. Every possible match **explains why it matched**, and every result carries the **date and version of each list** used, for your audit trail.

> **Screening support, not a legal decision.** This Actor helps you find names that need a closer look. A possible match is not a confirmation that someone is sanctioned, and a "no-match" is not a clearance. **False positives are expected**, especially for common names. Always review possible matches against the official source and follow your own compliance procedures; for decisions with legal effect, consult a qualified professional.

**Not affiliated** with, endorsed by or connected to the US Treasury (OFAC), the United Nations, the European Union or the UK government. This Actor only reads the lists they publish.

### Why this Actor

- **Four authorities, five lists, one run.** No need to call four sites with four file formats.
- **Explained results.** For each hit: which name or alias matched, how (exact, word order, fuzzy, partial), and which of your extra fields (country, year, type) agreed or disagreed.
- **Audit trail.** Every item lists each list's publication date (when the source gives one), download time, SHA-256 fingerprint and entry count.
- **Official sources only,** downloaded directly from the US Treasury, the UN, the European Commission and the UK government. No third-party aggregator in between.
- **Fast repeat runs.** Lists are cached for the day in a named key-value store in your account, so only the first run of the day downloads them.
- **Minimal personal data.** Results include names, aliases, countries, birth/founding years, programs and list references. Addresses, ID and passport numbers and full birth dates are not copied.

### Input

| Field | Description |
|---|---|
| `names` | Names to screen, one per line. Any script and word order. |
| `entities` | Names with details: `{"name", "country", "year", "type", "reference"}`. `country` is an ISO code or a name (English or Portuguese); `year` is the year of birth (people) or incorporation (companies); `type` is `person` or `organization`; `reference` is your own id, copied to the output. |
| `lists` | Which lists to use: `ofac_sdn`, `ofac_consolidated`, `un`, `eu`, `uk`. Default: all. |
| `minScore` | Lowest score returned (default 85). Lower finds more spelling variants and more false positives. |
| `maxMatchesPerName` | Best possible matches kept per name (default 10). |
| `entityType` | Default type for names without one: `any`, `person` or `organization`. |
| `cacheStoreName` | Named key-value store for the daily cache (default `sanctions-lists-cache`). Empty disables the cache. |
| `forceRefresh` | Download every list again even if today's copy is cached. |

Example:

```json
{
  "names": ["Banco Nacional de Cuba", "Путин Владимир"],
  "entities": [{"name": "Ismail Haniyeh", "country": "PS", "year": 1962, "type": "person", "reference": "customer-001"}]
}
```

#### How the score works

1. Names are transliterated to Latin letters (unidecode), lowercased, punctuation and company legal forms (Ltd, LLC, S.A., Ltda, GmbH…) are removed.
2. Your name is compared with every primary name and alias: same words = 100, same words in another order = 98, otherwise a fuzzy word-order-insensitive similarity. When all words of the shorter name appear in the longer one (missing middle names), the score is 80-98 depending on how many words are missing. Low-quality aliases (as flagged by the source) get -5.
3. Optional details adjust the score: country +3 if it matches, -10 if the entry has countries and none match; year +5 exact, +2 within one year, -20 otherwise; type -15 if person vs organization differ.

### Output

One dataset item per screened name:

```json
{
  "query": "Ismail Haniyeh",
  "queryCountry": "PS",
  "queryYear": 1962,
  "queryType": "person",
  "reference": "customer-001",
  "status": "possible-match",
  "matchCount": 2,
  "topScore": 100,
  "matches": [
    {
      "score": 100,
      "list": "ofac_sdn",
      "listName": "OFAC Specially Designated Nationals (SDN) List",
      "entryId": "23627",
      "entryType": "person",
      "name": "HANIYEH, Ismail",
      "reason": {
        "matchedName": "HANIYEH, Ismail",
        "matchedNameKind": "primary",
        "method": "same words, different order",
        "nameScore": 98,
        "matchedFields": ["name", "type", "year"],
        "mismatchedFields": [],
        "notes": []
      },
      "aliases": [],
      "countries": [],
      "birthOrFoundingYears": [1962],
      "programs": ["SDGT"],
      "listedOn": null,
      "sourceUrl": "https://sanctionssearch.ofac.treas.gov/Details.aspx?id=23627"
    }
  ],
  "listVersions": [
    {"list": "ofac_sdn", "listName": "OFAC Specially Designated Nationals (SDN) List", "publishedAt": "Wed, 29 Oct 2026 19:02:11 GMT", "downloadedAt": "2026-10-30T09:00:03+00:00", "sha256": "4f0c…", "entries": 18000, "sourceUrls": ["https://sanctionslistservice.ofac.treas.gov/api/PublicationPreview/exports/SDN.CSV", "…"], "fromCache": true, "stale": false}
  ],
  "screenedAt": "2026-10-30T09:00:05+00:00"
}
```

The values in `listVersions` above are illustrative. `publishedAt` comes from the file itself for the UN (`dateGenerated`), the EU (`fileGenerationDate`) and the UK (`Report Date`); the OFAC CSV files carry no date, so the HTTP `Last-Modified` header is used when the server sends it, and the `sha256` fingerprint identifies the exact file version in every case.

`status` is `possible-match`, `no-match` or `error` (for example, an empty name). The **Possible matches** view in the dataset shows one row per match. The run's `OUTPUT` record has totals and the list versions.

If a list cannot be downloaded, the Actor uses a cached copy up to 7 days old and marks it `"stale": true`; if there is no such copy, the run fails without charging.

### How much does it cost?

Pay per event: **one `screened-name` event per name screened**, with or without a possible match. Names that end in `error` are not charged, and nothing is charged if the lists cannot be loaded. Suggested price: **US$ 0.004 per name (US$ 4 per 1,000 names)**, plus Apify's standard `apify-actor-start` event (a fraction of a cent per run).

Platform usage is small: about 0.5 GB of memory, a few seconds to load the cached lists and a fraction of a second per name.

**$0.004 per screened name** (`screened-name` event, pay per event). Charged once per name screened against all lists, match or no match. Invalid inputs are free.

- `apify-actor-start`: $0.00005 (Charged once when a run starts (Apify synthetic event).)

| You get | Free tier | Bronze tier (10% off) | Gold tier (30% off) |
|---|---|---|---|
| 100 screened names | $0.40 | $0.36 | $0.28 |
| 1,000 screened names | $4.00 | $3.60 | $2.80 |
| 10,000 screened names | $40.00 | $36.00 | $28.00 |

Discounts follow your Apify subscription tier: Bronze 10%, Silver 20%, Gold and above 30%. No subscription to this Actor and no charge for platform usage: you pay only for results.
The Apify Free plan includes $5 of monthly credit, enough for about **1,250 screened names** at the list price.
You can cap the cost of any run with **Maximum cost per run**; the Actor stops when it is reached.

### Data source

| List | Publisher | File | Terms |
|---|---|---|---|
| OFAC SDN and Consolidated | US Treasury, Office of Foreign Assets Control | `SDN.CSV`, `ALT.CSV`, `ADD.CSV`, `CONS_*.CSV` from the Sanctions List Service | US federal government work, public domain |
| UN Consolidated List | UN Security Council | `consolidated.xml` | UN website terms; the list is published for incorporation into national and private screening systems |
| EU Financial Sanctions Files | European Commission (DG FISMA) | `csvFullSanctionsList_1_1` | Commission reuse policy (Decision 2011/833/EU); only the Official Journal of the EU is authentic |
| UK Sanctions List | Foreign, Commonwealth & Development Office | `UK-Sanctions-List.csv` | Open Government Licence v3.0. Contains public sector information licensed under the Open Government Licence v3.0 |

Each list is downloaded at most once a day per account (cache), far below any publisher's rate limits. Sanctions lists change often, sometimes several times a week. The cache is refreshed on the first run of each day (UTC). Use `forceRefresh` right after a known designation. The data and its accuracy are the responsibility of each publisher; this Actor does not add or remove names.

### More questions

#### Does a "no-match" mean the person or company is cleared?

No. It means no entry on the lists you selected scored at or above `minScore`. The Actor supports screening; it does not replace your due diligence or a compliance decision. Possible matches must be reviewed against the official source, and a clean result covers only these five lists on the date shown in `listVersions`.

#### Which lists are not covered?

Only the five lists above are checked: OFAC SDN, OFAC Consolidated (non-SDN), the UN Security Council Consolidated List, the EU Financial Sanctions Files and the UK Sanctions List. Politically exposed persons (PEPs), adverse media, export-control lists such as the US BIS Entity List, other countries' lists (Switzerland, Canada, Australia...) and Brazilian registers such as CEIS/CNEP are not included.

#### How up to date are the lists?

Each list is downloaded on the first run of the day (UTC) and cached for the rest of that day in a named key-value store in your account. Use `forceRefresh` to download again right after a new designation. If a publisher's site is down, the Actor uses the cached copy if it is at most 7 days old and marks that list `stale: true` in `listVersions`. With no usable copy the run fails with a clear message: it never answers "no-match" without the list.

#### What `minScore` should I use?

The default of 85 catches word order, aliases, transliteration and small spelling differences while keeping noise low. Lower values (down to 50) find more variants and more false positives; 100 keeps only exact matches after normalization. Adding `country`, `year` and `type` to each name raises the score of the right entry and lowers others (for example, a birth year that differs by more than one year takes 20 points off).

#### Can I screen names written in Cyrillic, Arabic or with accents?

Yes. Names are transliterated to Latin letters before comparison, so "Путин Владимир" finds "Vladimir Putin". Word order does not matter, legal forms (Ltd, LLC, S.A., Ltda, GmbH...) are ignored and every alias of each entry is compared. A name that is empty after normalization (only punctuation, for example) returns an `error` item that is not charged.

#### Why am I charged when there is no match?

Because the screening itself is the product: each item records that the name was checked against each list, with the list versions, for your audit trail. One `screened-name` event per name, match or no match. Names that cannot be screened (empty after normalization) are free.

#### How many names can I screen in one run?

Up to 10,000 names per run, from `names` and `entities` together. Loading the lists takes a few seconds (longer on the first run of the day, when they are downloaded); after that each name takes a fraction of a second. Your own `reference` in `entities` is copied to the output so you can join the results back to your customer list.

### Use it via API

Run it from any language and get the results as JSON. Replace `<YOUR_API_TOKEN>` with your [Apify API token](https://console.apify.com/settings/integrations).

```bash
curl -X POST "https://api.apify.com/v2/acts/br_data_hub~global-sanctions-screening/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"names": ["Banco Nacional de Cuba", "Vladimir Putin", "Acme Comércio Ltda"], "entities": [{"name": "Ismail Haniyeh", "country": "PS", "year": 1962, "type": "person", "reference": "customer-001"}]}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("br_data_hub/global-sanctions-screening").call(run_input={'names': ['Banco Nacional de Cuba', 'Vladimir Putin', 'Acme Comércio Ltda'],
                                      'entities': [{'name': 'Ismail Haniyeh',
                                                    'country': 'PS',
                                                    'year': 1962,
                                                    'type': 'person',
                                                    'reference': 'customer-001'}]})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

You can also schedule runs, send results to webhooks, or connect the Actor to Make, Zapier, n8n, Google Sheets and other [integrations](https://docs.apify.com/platform/integrations).

### Use it with AI agents (MCP)

This Actor is ready for AI agents: typed input and output schemas, pay-per-event pricing, limited permissions and short runs.

- **Apify MCP server:** add `https://mcp.apify.com/?tools=br_data_hub/global-sanctions-screening` to Claude, ChatGPT, Cursor, VS Code or any MCP client, and the agent can call this Actor as a tool.
- **Agent frameworks:** call it from LangChain, LlamaIndex, CrewAI or the OpenAI Agents SDK through the Apify integrations, or with the API call above.
- Results come as structured JSON with stable field names, documented in the **Output** tab.

### FAQ

#### Where does the data come from?

| List | Publisher | File | Terms | |---|---|---|---| | OFAC SDN and Consolidated | US Treasury, Office of Foreign Assets Control | `SDN.CSV`, `ALT.CSV`, `ADD.CSV`, `CONS_*.CSV` from the Sanctions List Service | US federal government work, public domain | | UN Consolidated List | UN Security Council | `consolidated.xml` | UN website terms; the list is published for incorporation into national and private screening systems | | EU Financial Sanctions Files | European Commission (DG FISMA) | `csvFullSanctionsList_1_1` | Commission reuse policy (Decision 2011/833/EU); only the Official Journal of the EU is authentic | | UK Sanctions List | Foreign, Commonwealth & Development Office | `UK-Sanctions-List.csv` | Open Government Licence v3.0. Contains public sector information licensed under the Open Government Licence v3.0 |

#### How much does it cost?

$0.004 per screened name. Discounts follow your Apify subscription tier: Bronze 10%, Silver 20%, Gold and above 30%. See **How much does it cost?** above for examples.

#### Do I pay for errors or empty results?

No. Charged once per name screened against all lists, match or no match. Invalid inputs are free.

#### Can I run it on a schedule or connect it to other tools?

Yes. Use Apify schedules to run it daily or weekly, webhooks to get notified, and integrations such as Make, Zapier, n8n and Google Sheets. Everything also works through the API.

#### Can AI agents use it?

Yes. It works as a tool in the Apify MCP server and in agent frameworks, and AI agents can pay per event. See **Use it with AI agents (MCP)**.

#### Is it legal to use this data?

The Actor reads only public sources. You are responsible for how you use the data and for complying with the source's terms and with privacy laws such as GDPR.

#### I found a bug or need a feature. What should I do?

Open an issue in the **Issues** tab. We answer within 14 days, usually much sooner.

### More Actors from BR Data Hub

| Actor | What it does |
|---|---|
| [EU VAT Number Bulk Validator (from VIES data)](https://apify.com/br_data_hub/eu-vat-validator) | Bulk-check EU and Northern Ireland (XI) VAT numbers using the European Commission's public VIES service: valid |
| [LEI Lookup & Corporate Ownership Tree, from GLEIF data](https://apify.com/br_data_hub/lei-corporate-tree) | Look up companies by LEI or name in GLEIF's open Global LEI Index: legal data, direct and ultimate parent, sub |
| [US Company Financials from SEC XBRL Data (normalized)](https://apify.com/br_data_hub/sec-company-financials) | Standardized financial statements of US-listed companies, built from public SEC XBRL data: revenue, profits, E |
| [Entity Resolver & ID Crosswalk (from Wikidata data)](https://apify.com/br_data_hub/wikidata-entity-resolver) | Resolve company, brand, organization and place names to the right Wikidata entity with an explained confidence |
| [EU Public Tenders Search, from TED data](https://apify.com/br_data_hub/eu-ted-tenders) | Search European public tenders using open data from TED (Tenders Electronic Daily), the EU procurement journal |

See all our Actors at [apify.com/br_data_hub](https://apify.com/br_data_hub).

### Usar em português

Sem afiliação com o Tesouro dos EUA, a ONU, a UE ou o governo britânico; o Actor só lê as listas que eles publicam.

Confere nomes de pessoas e empresas contra as listas oficiais de sanções dos EUA (OFAC SDN e Consolidated), da ONU (Conselho de Segurança), da União Europeia e do Reino Unido, numa só execução. A busca é aproximada: translitera (cirílico, árabe, acentos), ignora a ordem das palavras e confere os apelidos (aliases). Cada resultado traz uma nota de 0 a 100, o motivo (qual nome ou alias bateu e quais campos conferiram) e a data e versão de cada lista, para trilha de auditoria. Pode informar país (sigla ou nome em português, como "Rússia") e ano de nascimento ou de constituição para melhorar a nota.

**É apoio à triagem, não decisão jurídica.** Um resultado possível não prova que a pessoa ou empresa está sancionada, e "sem resultado" não é liberação. Falso positivo é esperado, principalmente com nomes comuns. Confira sempre na fonte oficial e siga os procedimentos de compliance da sua empresa.

Cobrança: um evento `screened-name` por nome conferido, com ou sem resultado; nome com erro não é cobrado. As listas ficam em cache por dia numa key-value store nomeada da sua conta.

**Quanto custa:** $0.004 por resultado (`screened-name`); 1.000 resultados saem por $4.00. Desconto pelo nível da assinatura Apify: Bronze 10%, Silver 20%, Gold ou acima 30%. Erros e consultas sem resultado não são cobrados. Use também pela API ou por agentes de IA no servidor MCP da Apify (`https://mcp.apify.com/?tools=br_data_hub/global-sanctions-screening`).

# Actor input Schema

## `names` (type: `array`):

Enter people or companies to check, one per line. Any script and word order work, e.g. "Putin Vladimir" or "Путин". Use 'Names with details' to add country or year.

## `entities` (type: `array`):

Enter a JSON list of objects: {"name": "...", "country": "IR" or "Iran", "year": year of birth or incorporation, "type": "person" or "organization", "reference": your own id, copied to the output}. Country, year and type raise the score when they agree and lower it when they don't. Optional.

## `lists` (type: `array`):

Pick the official lists to screen against. Keep all five for full coverage.

## `minScore` (type: `integer`):

Set the lowest match score to return (50 to 100), e.g. 85. Lower finds more spelling variants and more false positives.

## `maxMatchesPerName` (type: `integer`):

Set how many best matches to keep for each name across all lists, e.g. 10.

## `entityType` (type: `string`):

Pick the type applied to names without their own. Any does not compare types.

## `cacheStoreName` (type: `string`):

Type the key-value store where downloaded lists are kept for the day, so later runs skip the download. Leave empty to disable the cache.

## `forceRefresh` (type: `boolean`):

Turn on to ignore today's cached copy and download every list again.

## Actor input object example

```json
{
  "names": [
    "Banco Nacional de Cuba",
    "Vladimir Putin",
    "Acme Comércio Ltda"
  ],
  "entities": [
    {
      "name": "Ismail Haniyeh",
      "country": "PS",
      "year": 1962,
      "type": "person",
      "reference": "customer-001"
    }
  ],
  "lists": [
    "ofac_sdn",
    "ofac_consolidated",
    "un",
    "eu",
    "uk"
  ],
  "minScore": 85,
  "maxMatchesPerName": 10,
  "entityType": "any",
  "cacheStoreName": "sanctions-lists-cache",
  "forceRefresh": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset with all results

## `files` (type: `string`):

Key-value store with the files and the OUTPUT summary of the run

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "names": [
        "Banco Nacional de Cuba",
        "Vladimir Putin",
        "Acme Comércio Ltda"
    ],
    "entities": [
        {
            "name": "Ismail Haniyeh",
            "country": "PS",
            "year": 1962,
            "type": "person",
            "reference": "customer-001"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("br_data_hub/global-sanctions-screening").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "names": [
        "Banco Nacional de Cuba",
        "Vladimir Putin",
        "Acme Comércio Ltda",
    ],
    "entities": [{
            "name": "Ismail Haniyeh",
            "country": "PS",
            "year": 1962,
            "type": "person",
            "reference": "customer-001",
        }],
}

# Run the Actor and wait for it to finish
run = client.actor("br_data_hub/global-sanctions-screening").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "names": [
    "Banco Nacional de Cuba",
    "Vladimir Putin",
    "Acme Comércio Ltda"
  ],
  "entities": [
    {
      "name": "Ismail Haniyeh",
      "country": "PS",
      "year": 1962,
      "type": "person",
      "reference": "customer-001"
    }
  ]
}' |
apify call br_data_hub/global-sanctions-screening --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,br_data_hub/global-sanctions-screening"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/qAr8tOvaGCOONt57i/builds/JTzMphcEUGZf0uNO8/openapi.json
