{
  "info": {
    "name": "Verifex Sanctions Screening API",
    "description": "Real-time sanctions screening API. Screen persons and entities against OFAC, UN, EU, UK, Canada, Australia, Switzerland + 850K+ PEP records.\n\n**Quick Start:**\n1. Sign up at https://verifex.dev to get your API key\n2. Set the `api_key` variable in this collection to your key\n3. Start screening!\n\n**Documentation:** https://verifex.dev/dashboard/docs\n**Website:** https://verifex.dev\n**Benchmark:** https://verifex.dev/benchmark",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{api_key}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://api.verifex.dev",
      "type": "string"
    },
    {
      "key": "api_key",
      "value": "YOUR_API_KEY_HERE",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "Quick Start",
      "item": [
        {
          "name": "Screen a person",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Vladimir Putin\",\n  \"type\": \"person\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Screen a person against all sanctions lists. Returns risk level, confidence score, and matched entities.\n\nThis should return `risk_level: critical` with multiple matches across OFAC, EU, and PEP sources."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Status 200', () => pm.response.to.have.status(200));",
                  "pm.test('Has required fields', () => {",
                  "  const json = pm.response.json();",
                  "  pm.expect(json).to.have.property('risk_level');",
                  "  pm.expect(json).to.have.property('matches');",
                  "  pm.expect(json).to.have.property('total_matches');",
                  "  pm.expect(json).to.have.property('request_id');",
                  "  pm.expect(json).to.have.property('lists_checked');",
                  "});",
                  "pm.test('Putin is critical risk', () => {",
                  "  pm.expect(pm.response.json().risk_level).to.equal('critical');",
                  "});"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Screen an organization",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Hezbollah\",\n  \"type\": \"entity\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Screen an organization/entity. Handles transliterations automatically (Hezbollah matches HIZBALLAH in OFAC)."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Status 200', () => pm.response.to.have.status(200));",
                  "pm.test('Found matches', () => {",
                  "  pm.expect(pm.response.json().total_matches).to.be.above(0);",
                  "});"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Screen a clean name",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"John Smith\",\n  \"type\": \"person\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Screen a non-sanctioned person. Should return risk_level 'clear' with 0 matches."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Status 200', () => pm.response.to.have.status(200));",
                  "pm.test('Clean result', () => {",
                  "  const json = pm.response.json();",
                  "  pm.expect(json.risk_level).to.be.oneOf(['clear', 'low']);",
                  "});"
                ],
                "type": "text/javascript"
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Screening Options",
      "item": [
        {
          "name": "Broad mode (fuzzy matching)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Vladmir Putin\",\n  \"type\": \"person\",\n  \"mode\": \"broad\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Broad mode enables fuzzy matching, phonetic matching, and transliteration handling. Catches typos like 'Vladmir' matching 'Vladimir'."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Status 200', () => pm.response.to.have.status(200));",
                  "pm.test('Fuzzy match found despite typo', () => {",
                  "  pm.expect(pm.response.json().total_matches).to.be.above(0);",
                  "});"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Exact mode",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Vladimir Putin\",\n  \"type\": \"person\",\n  \"mode\": \"exact\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Exact mode only returns precise name matches. Use when you need high precision and the input name is reliable."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Status 200', () => pm.response.to.have.status(200));",
                  "pm.test('Has exact matches', () => {",
                  "  const matches = pm.response.json().matches;",
                  "  if (matches.length > 0) pm.expect(matches[0].match_type).to.equal('EXACT');",
                  "});"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Filter by country",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Bank Melli\",\n  \"type\": \"entity\",\n  \"country\": \"IR\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Filter results by ISO 3166-1 alpha-2 country code. Useful for reducing false positives when you know the entity's country."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Status 200', () => pm.response.to.have.status(200));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Filter by date of birth",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Vladimir Putin\",\n  \"type\": \"person\",\n  \"date_of_birth\": \"1952-10-07\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Filter results by date of birth. Matches partial dates too (e.g., '1952' matches '1952-10-07')."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Status 200', () => pm.response.to.have.status(200));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Auto-detect entity type",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Kim Jong Un\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Omit 'type' to let Verifex auto-detect whether the input is a person or organization."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Status 200', () => pm.response.to.have.status(200));",
                  "pm.test('Found matches', () => {",
                  "  pm.expect(pm.response.json().total_matches).to.be.above(0);",
                  "});"
                ],
                "type": "text/javascript"
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Batch Screening",
      "item": [
        {
          "name": "Batch screen (multiple entities)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"entities\": [\n    { \"name\": \"Vladimir Putin\", \"type\": \"person\" },\n    { \"name\": \"Bank Melli Iran\", \"type\": \"entity\" },\n    { \"name\": \"John Doe\", \"type\": \"person\" },\n    { \"name\": \"Hezbollah\" },\n    { \"name\": \"Apple Inc\", \"type\": \"entity\" }\n  ]\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen/batch",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen",
                "batch"
              ]
            },
            "description": "Screen up to 100 entities in a single request. Each entity gets its own result.\n\nBatch limits by plan: Free: 5, Starter: 25, Pro: 100, Enterprise: 500."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Status 200', () => pm.response.to.have.status(200));",
                  "pm.test('Returns results array', () => {",
                  "  const json = pm.response.json();",
                  "  pm.expect(json.results).to.be.an('array');",
                  "  pm.expect(json.results.length).to.equal(5);",
                  "});"
                ],
                "type": "text/javascript"
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Transliteration Examples",
      "item": [
        {
          "name": "Arabic transliteration (Suleimani)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Qassem Suleimani\",\n  \"type\": \"person\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Arabic names have many romanization variants. Verifex matches: Qasem/Qassem/Kassem Soleimani/Suleimani/Sulaimani."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Found match', () => pm.expect(pm.response.json().total_matches).to.be.above(0));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Cyrillic transliteration (Wladimir)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Wladimir Putin\",\n  \"type\": \"person\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "German transliteration of Vladimir as Wladimir. Verifex handles Cyrillic-to-Latin transliteration variants."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Found match', () => pm.expect(pm.response.json().total_matches).to.be.above(0));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Name reordering (Putin, Vladimir)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Putin, Vladimir Vladimirovich\",\n  \"type\": \"person\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Verifex normalizes name order. 'Putin, Vladimir' matches 'Vladimir Putin' regardless of token order."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('100% confidence', () => pm.expect(pm.response.json().matches[0].confidence).to.equal(100));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Phonetic matching (Kaddafi)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Kaddafi Muammar\",\n  \"type\": \"person\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Double Metaphone phonetic algorithm catches similar-sounding names. 'Kaddafi' matches 'Gaddafi/Qadhafi/Qaddafi'."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Found match', () => pm.expect(pm.response.json().total_matches).to.be.above(0));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Hezbollah variants (Hizballah)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Hizballah\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Tests OFAC's preferred spelling 'HIZBALLAH' matching the common English spelling 'Hezbollah/Hizballah'."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('100% confidence', () => pm.expect(pm.response.json().matches[0].confidence).to.equal(100));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Account & Usage",
      "item": [
        {
          "name": "Health check (no auth)",
          "request": {
            "auth": {
              "type": "noauth"
            },
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/v1/health",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "health"
              ]
            },
            "description": "Check API health, database status, and entity counts per source. No authentication required."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('API healthy', () => pm.expect(pm.response.json().status).to.equal('ok'));",
                  "pm.test('Has list counts', () => pm.expect(pm.response.json().lists).to.have.property('OFAC'));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Get usage statistics",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/v1/usage",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "usage"
              ]
            },
            "description": "Get your current month's usage, quota, and daily breakdown."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Status 200', () => pm.response.to.have.status(200));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Screening history",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/v1/screenings/history?page=1&limit=10",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screenings",
                "history"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "10"
                },
                {
                  "key": "risk_level",
                  "value": "critical",
                  "disabled": true
                },
                {
                  "key": "from",
                  "value": "2026-03-01T00:00:00Z",
                  "disabled": true
                },
                {
                  "key": "to",
                  "value": "2026-04-01T00:00:00Z",
                  "disabled": true
                },
                {
                  "key": "query",
                  "value": "Putin",
                  "disabled": true
                }
              ]
            },
            "description": "Retrieve your screening history with pagination. Enable optional filters by unchecking the disabled params."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Status 200', () => pm.response.to.have.status(200));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Export screenings (CSV)",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/v1/screenings/export",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screenings",
                "export"
              ],
              "query": [
                {
                  "key": "from",
                  "value": "2026-03-01T00:00:00Z",
                  "disabled": true
                },
                {
                  "key": "to",
                  "value": "2026-04-01T00:00:00Z",
                  "disabled": true
                }
              ]
            },
            "description": "Export screening history as CSV for audit and compliance reporting."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Status 200', () => pm.response.to.have.status(200));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "List API keys",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/v1/keys",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "keys"
              ]
            },
            "description": "List all your API keys with usage stats and last-used timestamps."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Returns array', () => pm.expect(pm.response.json()).to.be.an('array'));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Create API key",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"My New Key\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/keys",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "keys"
              ]
            },
            "description": "Create a new API key. The full key is shown only once in the response \u2014 save it immediately."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Key created', () => {",
                  "  pm.response.to.have.status(201);",
                  "  pm.expect(pm.response.json()).to.have.property('key');",
                  "});"
                ],
                "type": "text/javascript"
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Webhooks & Monitoring",
      "item": [
        {
          "name": "List webhooks",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/v1/webhooks",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "webhooks"
              ]
            },
            "description": "List all registered webhooks for your account."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Returns array', () => pm.expect(pm.response.json()).to.be.an('array'));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Register webhook",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"https://your-app.com/webhooks/verifex\",\n  \"events\": [\"screening.match_changed\", \"list.sync_completed\"]\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/webhooks",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "webhooks"
              ]
            },
            "description": "Register a webhook endpoint. Save the `secret` from the response for HMAC signature verification.\n\nEvents: screening.match_changed, list.sync_completed, list.sync_failed"
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Webhook created', () => {",
                  "  pm.response.to.have.status(201);",
                  "  pm.expect(pm.response.json()).to.have.property('secret');",
                  "});"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "List watched names",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/v1/watches",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "watches"
              ]
            },
            "description": "List all names on your continuous monitoring watchlist."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Returns array', () => pm.expect(pm.response.json()).to.be.an('array'));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Add to watch list",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Vladimir Putin\",\n  \"type\": \"person\",\n  \"country\": \"RU\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/watches",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "watches"
              ]
            },
            "description": "Add a name to continuous monitoring. You'll be notified via webhook when their risk level changes due to sanctions list updates."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Added', () => pm.response.to.have.status(201));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Edge Cases & Testing",
      "item": [
        {
          "name": "Empty name (400 error)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Test error handling with empty name. Should return 400 Bad Request."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Returns 400', () => pm.response.to.have.status(400));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Long multi-token name",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Mohammed Abdul Rahman Ahmed Al-Rashid Ibn Saud Al-Maktoum\",\n  \"type\": \"person\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Test with a long multi-token Arabic name. Verifex handles names of any length."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Status 200', () => pm.response.to.have.status(200));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Special characters & diacritics",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Jos\\u00e9 Mar\\u00eda Garc\\u00eda-L\\u00f3pez\",\n  \"type\": \"person\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Test with diacritics and special characters. Verifex normalizes Unicode (Jose Maria Garcia-Lopez)."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Status 200', () => pm.response.to.have.status(200));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "No auth (401 error)",
          "request": {
            "auth": {
              "type": "noauth"
            },
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Test\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen"
              ]
            },
            "description": "Test without authentication. Should return 401 Unauthorized."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "pm.test('Returns 401', () => pm.response.to.have.status(401));"
                ],
                "type": "text/javascript"
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Entity Resolution & UBO (Sprint 3-4)",
      "item": [
        {
          "name": "Search canonical entities",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/v1/entities/search?q=Vladimir+Putin&limit=5",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "entities",
                "search"
              ],
              "query": [
                {
                  "key": "q",
                  "value": "Vladimir Putin"
                },
                {
                  "key": "limit",
                  "value": "5"
                }
              ]
            },
            "description": "Search canonical entities using trigram similarity. Returns canonical_id, all name variants across scripts, and similarity score."
          }
        },
        {
          "name": "Get canonical entity by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/v1/entities/{{canonical_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "entities",
                "{{canonical_id}}"
              ]
            },
            "description": "Retrieve a canonical entity with all name variants (Latin, Cyrillic, Arabic, CJK), source links, and cross-reference identifiers (Wikidata, GLEIF LEI, OFAC ID)."
          }
        },
        {
          "name": "Calculate OFAC 50% Rule (UBO)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"entity_id\": \"{{corporate_entity_id}}\",\n  \"max_depth\": 5\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/ubo/calculate",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "ubo",
                "calculate"
              ]
            },
            "description": "Run OFAC 50% Rule calculation. Traverses ownership chains recursively up to max_depth levels, computes effective sanctioned ownership, and flags constructive blocking (OFAC FAQ No. 401)."
          }
        },
        {
          "name": "UBO database statistics",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/v1/ubo/stats",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "ubo",
                "stats"
              ]
            },
            "description": "Aggregate statistics: total entities, sanctioned entities, blocked entities, ownership edges."
          }
        },
        {
          "name": "Screen entity with UBO chain",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Gazprom Export LLC\",\n  \"screen_ubo_chain\": true,\n  \"ubo_depth\": 5\n}"
            },
            "url": {
              "raw": "{{base_url}}/v1/screen/entity",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen",
                "entity"
              ]
            },
            "description": "Screen a corporate entity plus traverse its full ownership chain for OFAC 50% Rule compliance. Returns both entity_screening and ubo_analysis sections."
          }
        },
        {
          "name": "Historical screening query",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/v1/screen/historical?name=Vladimir+Putin&as_of=2022-03-02T14:00:00Z",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "screen",
                "historical"
              ],
              "query": [
                {
                  "key": "name",
                  "value": "Vladimir Putin"
                },
                {
                  "key": "as_of",
                  "value": "2022-03-02T14:00:00Z"
                }
              ]
            },
            "description": "Point-in-time bitemporal query: Was this entity sanctioned at this date, and did our system know? Returns historical screening record, entity history, and list versions active at that time. Scale/Enterprise only."
          }
        },
        {
          "name": "Get audit evidence with temporal certification",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/v1/audit/{{request_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "v1",
                "audit",
                "{{request_id}}"
              ]
            },
            "description": "Full compliance evidence for a screening. Includes temporal_evidence with per-source list version snapshots, ingestion lag, and a certification statement defensible to regulators. Scale/Enterprise only."
          }
        }
      ]
    }
  ]
}