{
    "openapi": "3.1.0",
    "info": {
        "title": "BrandShyp Vessel Attribution API",
        "version": "1.0.0",
        "summary": "Which legal entity is behind a sanctioned hull, with the evidence, and with an explicit refusal where the record does not settle it.",
        "description": "Every vessel on the OFAC SDN list, resolved to the entity that owns or controls it.\n\nResolution is deterministic: an ownership edge resolves only when the party OFAC names matches EXACTLY ONE entity on the list, on that entity's own name or on one of its registered aliases. Where a name matches more than one entity, the edge is reported as ambiguous and every candidate is returned. No merge is performed. An alias is not an identifier, and a false merge hides itself.\n\nLIMITS. This is identity data, not behaviour: it contains no positions, no voyages and no movement. A designated vessel sailing an ordinary route exhibits no anomaly. An ownership link is evidence, not proof of an act. A vessel absent from this list is not a clean vessel; it is a vessel this dataset does not name.",
        "contact": {
            "name": "BrandShyp LLC",
            "url": "https://brandshyp.org/contact-us/"
        },
        "license": {
            "name": "Source: U.S. Government work, public domain (17 U.S.C. 105)",
            "url": "https://sanctionslistservice.ofac.treas.gov/"
        }
    },
    "servers": [
        {
            "url": "https://brandshyp.org/api/v1"
        }
    ],
    "paths": {
        "/attribution": {
            "get": {
                "summary": "Discovery document, derived live from the dataset",
                "operationId": "getAttributionRoot",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/attribution/vessels": {
            "get": {
                "summary": "All 1540 designated vessels with their ownership edges",
                "operationId": "listVessels",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/attribution/vessel/{imo}": {
            "get": {
                "summary": "Resolve one vessel by IMO number, with its evidence chain",
                "operationId": "getVesselByImo",
                "parameters": [
                    {
                        "name": "imo",
                        "in": "path",
                        "required": true,
                        "description": "IMO number, exactly 7 digits.",
                        "schema": {
                            "type": "string",
                            "pattern": "^\\d{7}$"
                        },
                        "example": "9187629"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "IMO is not 7 digits"
                    },
                    "404": {
                        "description": "Not on the SDN list. NOT a statement that the vessel is clean."
                    }
                }
            }
        },
        "/attribution/entities": {
            "get": {
                "summary": "The entities behind the vessels, by vessel count",
                "operationId": "listEntities",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/attribution/ambiguous": {
            "get": {
                "summary": "The 69 ownership edges the resolver REFUSES to resolve, with every candidate and the evidence for each",
                "operationId": "listAmbiguous",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}