{
    "resource": "attribution",
    "title": "Designated vessel attribution: which legal entity is behind a sanctioned hull",
    "description": "Every vessel on the OFAC SDN list, resolved to the entity that owns or controls it, with the evidence chain that produced the answer and an explicit refusal where the open record does not settle it.",
    "built": "2026-07-14T16:43:16+00:00",
    "source": {
        "name": "U.S. Treasury OFAC Specially Designated Nationals and Blocked Persons List (SDN)",
        "files": [
            "SDN.CSV",
            "ALT.CSV"
        ],
        "url": "https://sanctionslistservice.ofac.treas.gov/",
        "licence": "U.S. Government work, public domain (17 U.S.C. 105)"
    },
    "method": {
        "normalization": "Uppercase; punctuation and whitespace collapsed. Corporate suffixes are NOT stripped: tested, it resolves no additional edge and it fuses distinct entities.",
        "resolution": "An ownership edge is resolved only when the stated name matches EXACTLY ONE SDN entity, on that entity name or on one of its registered aliases.",
        "abstention": "When a stated name matches more than one entity, the edge is reported AMBIGUOUS and every candidate is returned. No merge is performed. An alias is not an identifier.",
        "limits": "Identity data only. This dataset contains no vessel positions, no voyages and no behaviour. An ownership link is evidence, not proof of an act."
    },
    "stats": {
        "vessels": 1497,
        "with_imo": 1490,
        "edges": 1501,
        "resolved": 1432,
        "ambiguous": 69,
        "unresolved": 0
    },
    "caveats": {
        "identity_not_behaviour": "This is an identity dataset. It contains no vessel positions, no voyages and no behaviour. A designated vessel sailing normally exhibits no anomaly, and nothing here detects activity.",
        "evidence_not_proof": "An ownership link is evidence, not proof of an act.",
        "abstention": "Ownership edges that match more than one legal entity are reported as ambiguous rather than merged. See /api/v1/attribution/ambiguous."
    },
    "endpoints": [
        [
            "GET",
            "https://brandshyp.org/api/v1/attribution",
            "this document"
        ],
        [
            "GET",
            "https://brandshyp.org/api/v1/attribution/vessels",
            "1497 designated vessels with their ownership edges"
        ],
        [
            "GET",
            "https://brandshyp.org/api/v1/attribution/vessel/{imo}",
            "one vessel by IMO number, resolved, with its evidence chain"
        ],
        [
            "GET",
            "https://brandshyp.org/api/v1/attribution/entities",
            "549 entities behind them, by vessel count"
        ],
        [
            "GET",
            "https://brandshyp.org/api/v1/attribution/ambiguous",
            "69 edges we refuse to resolve, and the candidates for each"
        ]
    ],
    "example": "https://brandshyp.org/api/v1/attribution/vessel/9187629"
}