{"id":13544809,"url":"https://github.com/moov-io/watchman","last_synced_at":"2026-02-10T17:11:34.401Z","repository":{"id":37612016,"uuid":"163885848","full_name":"moov-io/watchman","owner":"moov-io","description":"AML/CTF/KYC/OFAC Search of global watchlist and sanctions","archived":false,"fork":false,"pushed_at":"2026-02-02T22:15:31.000Z","size":47279,"stargazers_count":431,"open_issues_count":23,"forks_count":113,"subscribers_count":16,"default_branch":"master","last_synced_at":"2026-02-03T11:35:23.747Z","etag":null,"topics":["aml","bis","bis-denied-persons","cip","csl","ctf","dpl","kyc","ofac","sanction-lists","sanctions","sectoral-sanctions-identifications"],"latest_commit_sha":null,"homepage":"https://moov-io.github.io/watchman/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moov-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-01-02T20:22:14.000Z","updated_at":"2026-02-02T22:14:31.000Z","dependencies_parsed_at":"2026-01-03T07:04:39.847Z","dependency_job_id":null,"html_url":"https://github.com/moov-io/watchman","commit_stats":null,"previous_names":["moov-io/ofac"],"tags_count":136,"template":false,"template_full_name":null,"purl":"pkg:github/moov-io/watchman","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moov-io%2Fwatchman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moov-io%2Fwatchman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moov-io%2Fwatchman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moov-io%2Fwatchman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moov-io","download_url":"https://codeload.github.com/moov-io/watchman/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moov-io%2Fwatchman/sbom","scorecard":{"id":495879,"data":{"date":"2025-08-11","repo":{"name":"github.com/moov-io/watchman","commit":"ed1ee906eb5f48a569690b07f81f039d5cf75b3b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.2,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 1/25 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release.yml:24","Warn: jobLevel 'actions' permission set to 'write': .github/workflows/release.yml:25","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release.yml:55","Info: jobLevel 'actions' permission set to 'read': .github/workflows/release.yml:56","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release.yml:138","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release.yml:171","Warn: topLevel 'deployments' permission set to 'write': .github/workflows/bench.yml:8","Warn: topLevel 'contents' permission set to 'write': .github/workflows/bench.yml:9","Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yaml:11","Info: topLevel 'pull-requests' permission set to 'read': .github/workflows/ci.yaml:12","Info: topLevel 'contents' permission set to 'read': .github/workflows/fuzz.yml:8","Info: topLevel 'contents' permission set to 'read': .github/workflows/go.yml:8","Info: topLevel 'contents' permission set to 'read': .github/workflows/release.yml:11"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Fuzzing","score":10,"reason":"project is fuzzed","details":["Info: GoBuiltInFuzzer integration found: pkg/search/fuzz_test.go:8","Info: GoBuiltInFuzzer integration found: pkg/usaddress/fuzz_test.go:8"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.54.0 not signed: https://api.github.com/repos/moov-io/watchman/releases/228029600","Warn: release artifact v0.53.1 not signed: https://api.github.com/repos/moov-io/watchman/releases/227471295","Warn: release artifact v0.53.0 not signed: https://api.github.com/repos/moov-io/watchman/releases/227188440","Warn: release artifact v0.52.3 not signed: https://api.github.com/repos/moov-io/watchman/releases/224724207","Warn: release artifact v0.52.2 not signed: https://api.github.com/repos/moov-io/watchman/releases/222527045","Warn: release artifact v0.54.0 does not have provenance: https://api.github.com/repos/moov-io/watchman/releases/228029600","Warn: release artifact v0.53.1 does not have provenance: https://api.github.com/repos/moov-io/watchman/releases/227471295","Warn: release artifact v0.53.0 does not have provenance: https://api.github.com/repos/moov-io/watchman/releases/227188440","Warn: release artifact v0.52.3 does not have provenance: https://api.github.com/repos/moov-io/watchman/releases/224724207","Warn: release artifact v0.52.2 does not have provenance: https://api.github.com/repos/moov-io/watchman/releases/222527045"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/moov-io/.github/.github/SECURITY.md:1","Info: Found linked content: github.com/moov-io/.github/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/moov-io/.github/.github/SECURITY.md:1","Info: Found text in security policy: github.com/moov-io/.github/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/bench.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/bench.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/bench.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/bench.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/bench.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/bench.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/bench.yml:88: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/bench.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/bench.yml:117: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/bench.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/ci.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/ci.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/ci.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/fuzz.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/fuzz.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/fuzz.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/fuzz.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:90: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:96: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:108: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:114: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:127: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:133: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:147: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:153: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:174: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:180: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:102: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:113: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:124: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:141: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:147: update your workflow using https://app.stepsecurity.io/secureworkflow/moov-io/watchman/release.yml/master?enable=pin","Warn: containerImage not pinned by hash: build/Dockerfile:2","Warn: containerImage not pinned by hash: build/Dockerfile:37: pin your Docker image by updating debian:bookworm to debian:bookworm@sha256:731dd1380d6a8d170a695dbeb17fe0eade0e1c29f654cf0a3a07f372191c3f4b","Warn: containerImage not pinned by hash: build/Dockerfile.openshift:2","Warn: containerImage not pinned by hash: build/Dockerfile.openshift:36","Warn: containerImage not pinned by hash: build/Dockerfile.openshift:65: pin your Docker image by updating registry.access.redhat.com/ubi9/ubi-minimal:9.6-1749489516 to registry.access.redhat.com/ubi9/ubi-minimal:9.6-1749489516@sha256:f172b3082a3d1bbe789a1057f03883c1113243564f01cd3020e27548b911d3f8","Warn: containerImage not pinned by hash: build/Dockerfile.static:1: pin your Docker image by updating moov/watchman:latest to moov/watchman:latest@sha256:739e59c1ac77f97f6c256d63d05e3ad3cf5be4b2e0eb86e119cca8d620788bc1","Info:   0 out of  29 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 third-party GitHubAction dependencies pinned","Info:   0 out of   6 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":3,"reason":"SAST tool is not run on all commits -- score normalized to 3","details":["Warn: 3 commits out of 8 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-353f-x4gh-cqq8"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T20:24:47.536Z","repository_id":37612016,"created_at":"2025-08-19T20:24:47.536Z","updated_at":"2025-08-19T20:24:47.536Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29096331,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-04T21:05:08.033Z","status":"ssl_error","status_checked_at":"2026-02-04T21:04:53.031Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aml","bis","bis-denied-persons","cip","csl","ctf","dpl","kyc","ofac","sanction-lists","sanctions","sectoral-sanctions-identifications"],"created_at":"2024-08-01T11:00:53.585Z","updated_at":"2026-02-10T17:11:34.393Z","avatar_url":"https://github.com/moov-io.png","language":"Go","funding_links":[],"categories":["Compliance \u0026 Sanctions"],"sub_categories":[],"readme":"[![Moov Banner Logo](https://user-images.githubusercontent.com/20115216/104214617-885b3c80-53ec-11eb-8ce0-9fc745fb5bfc.png)](https://github.com/moov-io)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://moov-io.github.io/watchman/\"\u003eProject Documentation\u003c/a\u003e\n  ·\n  \u003ca href=\"https://moov-io.github.io/watchman/api/#overview\"\u003eAPI Endpoints\u003c/a\u003e\n  ·\n  \u003ca href=\"https://moov.io/blog/education/watchman-api-guide/\"\u003eAPI Guide\u003c/a\u003e\n  ·\n  \u003ca href=\"https://slack.moov.io/\"\u003eCommunity\u003c/a\u003e\n  ·\n  \u003ca href=\"https://moov.io/blog/\"\u003eBlog\u003c/a\u003e\n  \u003cbr\u003e\n  \u003cbr\u003e\n\u003c/p\u003e\n\n[![GoDoc](https://pkg.go.dev/badge/github.com/moov-io/watchman?utm_source=godoc)](https://pkg.go.dev/github.com/moov-io/watchman/pkg/search#Client)\n[![Build Status](https://github.com/moov-io/watchman/workflows/Go/badge.svg)](https://github.com/moov-io/watchman/actions)\n[![Go Report Card](https://goreportcard.com/badge/github.com/moov-io/watchman)](https://goreportcard.com/report/github.com/moov-io/watchman)\n[![Apache 2 License](https://img.shields.io/badge/license-Apache2-blue.svg)](https://raw.githubusercontent.com/moov-io/ach/master/LICENSE)\n[![Slack Channel](https://slack.moov.io/badge.svg?bg=e01563\u0026fgColor=fffff)](https://slack.moov.io/)\n[![Docker Pulls](https://img.shields.io/docker/pulls/moov/watchman)](https://hub.docker.com/r/moov/watchman)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/moov-io/watchman)\n\n# moov-io/watchman\n\nMoov's mission is to give developers an easy way to create and integrate bank processing into their own software products. Our open source projects are each focused on solving a single responsibility in financial services and designed around performance, scalability, and ease of use.\n\n## What is Watchman?\n\nMoov Watchman is a high-performance sanctions screening and compliance tool that helps businesses meet their regulatory obligations. It provides an HTTP server and [Go library](https://pkg.go.dev/github.com/moov-io/watchman/pkg/search#Client) for searching against multiple global sanctions and screening lists.\n\n## Key Features\n\n- **Geocoding**: Using one of the supported providers.\n- **Senzing Support**: Import data files in [senzing format](https://www.senzing.com/docs/entity_specification/) and get search responses as senzing entities.\n- **Comprehensive Coverage**: Integrates multiple global watchlists in one unified system\n- **High-Performance Search**: Optimized for speed and accuracy using advanced matching algorithms\n- **Flexible Integration**: HTTP API and Go library for easy integration into your systems\n- **Automated Updates**: Regular refreshes of watchlist data to ensure compliance\n\n## Included Lists\n\nWatchman integrates the following lists to help you maintain global compliance:\n\n| Source        | List                                                                                                                                                                                    |\n|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| OpenSanctions | [Any senzing dataset from OpenSanctions](https://www.opensanctions.org/datasets/)                                                                                                       |\n| US Treasury   | [Office of Foreign Assets Control (OFAC)](https://ofac.treasury.gov/sanctions-list-service) and Non-SDN list                                                                            |\n| US Government | [Consolidated Screening List (CSL)](https://www.trade.gov/consolidated-screening-list), [FinCEN 311](https://home.treasury.gov/policy-issues/terrorism-and-illicit-finance/311-actions) |\n\n### Future Lists\n\nThe v0.50+ series of Watchman has revamped its search engine. The following lists are being re-added into Watchman.\n\n| Source | List |\n|--------|------|\n| European Union | [Consolidated Sanctions List](https://data.europa.eu/data/datasets/consolidated-list-of-persons-groups-and-entities-subject-to-eu-financial-sanctions?locale=en) |\n| United Kingdom | [OFSI Sanctions List](https://www.gov.uk/government/publications/financial-sanctions-consolidated-list-of-targets/consolidated-list-of-targets#contents) |\n| United Kingdom | [Sanctions List](https://www.gov.uk/government/publications/the-uk-sanctions-list) (Disabled by default) |\n\n## v2 Endpoints (v0.50+ series and beyond)\n\nThe v0.50+ series of Watchman has introduced a new v2 search endpoint and removed the older endpoint. This was done to offer a unified response model, improve overall performance, and work towards a stable v1.0 release.\n\nWe encourage you to try out the new Watchman and [report any issues or requests in slack](https://slack.moov.io) (`#watchman` channel).\n\n## Project status\n\nMoov Watchman is actively used in multiple production environments. Please star the project if you are interested in its progress. If you have layers above Watchman to simplify tasks, perform business operations, or found bugs we would appreciate an issue or pull request. Thanks!\n\n## Usage\n\nThe Watchman project implements an HTTP server and [Go library](https://pkg.go.dev/github.com/moov-io/watchman/pkg/search#Client) for searching against Watchman.\n\nGovernment lists are downloaded (and refreshed), parsed, prepared, normalized, and indexed in-memory. Searches operate concurrently and do not require an external database or connection.\n\n### Docker\n\nWe publish a [public Docker image `moov/watchman`](https://hub.docker.com/r/moov/watchman/) from Docker Hub or use this repository. No configuration is required to serve on `:8084`. We also have Docker images for [OpenShift](https://quay.io/repository/moov/watchman?tab=tags) published as `quay.io/moov/watchman`. Lastly, we offer a `moov/watchman:v2-static` Docker image with files from 2019. This image can be useful for faster local testing or consistent results.\n\nStart the Docker image [using a tag](https://hub.docker.com/r/moov/watchman/tags):\n```\ndocker run -p 8084:8084 moov/watchman\n```\n\nRun a search for an individual or business:\n```\ncurl -s \"http://localhost:8084/v2/search?name=Nicolas+Maduro\u0026type=person\u0026limit=1\u0026minMatch=0.75\" | jq .\n```\n\n\u003cdetails\u003e\n\n```json\n{\n  \"entities\": [\n    {\n      \"name\": \"Nicolas MADURO MOROS\",\n      \"entityType\": \"person\",\n      \"sourceList\": \"us_ofac\",\n      \"sourceID\": \"22790\",\n      \"person\": {\n        \"name\": \"Nicolas MADURO MOROS\",\n        \"altNames\": null,\n        \"gender\": \"male\",\n        \"birthDate\": \"1962-11-23T00:00:00Z\",\n        \"deathDate\": null,\n        \"titles\": [\n          \"President of the Bolivarian Republic of Venezuela\"\n        ],\n        \"governmentIDs\": [\n          {\n            \"type\": \"cedula\",\n            \"country\": \"Venezuela\",\n            \"identifier\": \"5892464\"\n          }\n        ]\n      },\n      \"business\": null,\n      \"organization\": null,\n      \"aircraft\": null,\n      \"vessel\": null,\n      \"contact\": {\n        \"emailAddresses\": null,\n        \"phoneNumbers\": null,\n        \"faxNumbers\": null,\n        \"websites\": null\n      },\n      \"addresses\": null,\n      \"cryptoAddresses\": null,\n      \"affiliations\": null,\n      \"sanctionsInfo\": null,\n      \"historicalInfo\": null,\n      \"sourceData\": {\n        \"entityID\": \"22790\",\n        \"sdnName\": \"MADURO MOROS, Nicolas\",\n        \"sdnType\": \"individual\",\n        \"program\": [\n          \"VENEZUELA\",\n          \"IRAN-CON-ARMS-EO\"\n        ],\n        \"title\": \"President of the Bolivarian Republic of Venezuela\",\n        \"callSign\": \"\",\n        \"vesselType\": \"\",\n        \"tonnage\": \"\",\n        \"grossRegisteredTonnage\": \"\",\n        \"vesselFlag\": \"\",\n        \"vesselOwner\": \"\",\n        \"remarks\": \"DOB 23 Nov 1962; POB Caracas, Venezuela; citizen Venezuela; Gender Male; Cedula No. 5892464 (Venezuela); President of the Bolivarian Republic of Venezuela.\"\n      },\n      \"match\": 0.7784062500000001\n    }\n  ]\n}\n```\n\n\u003c/details\u003e\n\n### Data persistence\n\nBy design, Watchman **does not persist** (save) any data about the search queries or lists pulled from external sources. Watchman can store ingested files (the individual records) in\na MySQL or PostgreSQL database for concurrent access. External lists that are downloaded on startup (and refreshed periodically) are only kept in memory. No encryption of data in-memory\nis performed.\n\n## Configuration\n\nWatchman recommends [file-based configuration](https://moov-io.github.io/watchman/config/) but supports environmental variable options.\n\n### FAQ\n\n#### Reporting hits to OFAC\n\nOFAC requires [reporting of positive hits](https://ofac.treasury.gov/ofac-reporting-system) and has a [voluntary self-disclosure](https://disclosure.ofac.treas.gov/) portal. Work with your Financial Institution for complete details.\n\n#### Useful resources\n\n- [OFAC Sanctions Search Page](https://sanctionssearch.ofac.treas.gov/)\n- [Subscribe for OFAC email updates](https://service.govdelivery.com/accounts/USTREAS/subscriber/new)\n- [When should I call the OFAC Hotline?](https://home.treasury.gov/policy-issues/financial-sanctions/contact-ofac/when-should-i-call-the-ofac-hotline#:~:text=If%20it's%20hitting%20against%20OFAC's,the%20match%20is%20hitting%20against.)\n- [BIS Denied Persons List with Denied US Export Privileges (DPL)](https://bis.data.commerce.gov/dataset/Denied-Persons-List-with-Denied-US-Export-Privileg/xwtd-wd7a/data)\n- [BIS Entity List](https://www.bis.doc.gov/index.php/policy-guidance/lists-of-parties-of-concern/entity-list)\n- [Sectoral Sanctions Identifications (SSI)](https://home.treasury.gov/policy-issues/financial-sanctions/consolidated-sanctions-list/sectoral-sanctions-identifications-ssi-list)\n- [US Sanctions Search FAQ](https://home.treasury.gov/policy-issues/financial-sanctions/faqs#basic)\n\n## Getting help\n\n channel | info\n ------- | -------\n[Project Documentation](https://moov-io.github.io/watchman/) | Our project documentation available online.\nTwitter [@moov](https://twitter.com/moov)\t| You can follow Moov.io's Twitter feed to get updates on our project(s). You can also tweet us questions or just share blogs or stories.\n[GitHub Issue](https://github.com/moov-io/watchman/issues) | If you are able to reproduce a problem please open a GitHub Issue under the specific project that caused the error.\n[moov-io slack](https://slack.moov.io/) | Join our slack channel (`#watchman`) to have an interactive discussion about the development of the project.\n\nIf you find a security issue please contact us at [`security@moov.io`](mailto:security@moov.io).\n\n## Supported and tested platforms\n\n- 64-bit Linux (Ubuntu, Debian), macOS, and Windows\n\n## Contributing\n\nYes please! Checkout our [issues for first time contributors](https://github.com/moov-io/watchman/contribute) for something to help out with.\n\nBuilding Watchman's source code follows standard Go commands. You can use `make build` to compile the code and `make check` to run linters and tests.\n\nRun `make install` to setup [gopostal](https://github.com/openvenues/gopostal) / [libpostal](https://github.com/openvenues/libpostal) for Watchman.\n\n## Related projects\n\nAs part of Moov's initiative to offer open source fintech infrastructure, we have a large collection of active projects you may find useful:\n\n- [Moov Fed](https://github.com/moov-io/fed) implements utility services for searching the United States Federal Reserve System such as ABA routing numbers, financial institution name lookup, and FedACH and Fedwire routing information.\n\n- [Moov Image Cash Letter](https://github.com/moov-io/imagecashletter) implements Image Cash Letter (ICL) files used for Check21, X.9 or check truncation files for exchange and remote deposit in the U.S.\n\n- [Moov Wire](https://github.com/moov-io/wire) implements an interface to write files for the Fedwire Funds Service, a real-time gross settlement funds transfer system operated by the United States Federal Reserve Banks.\n\n- [Moov ACH](https://github.com/moov-io/ach) provides ACH file generation and parsing, supporting all Standard Entry Codes for the primary method of money movement throughout the United States.\n\n- [Moov Metro 2](https://github.com/moov-io/metro2) provides a way to easily read, create, and validate Metro 2 format, which is used for consumer credit history reporting by the United States credit bureaus.\n\n## License\n\nApache License 2.0 - See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoov-io%2Fwatchman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoov-io%2Fwatchman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoov-io%2Fwatchman/lists"}