{"openapi":"3.0.3","info":{"title":"Broaderworld API","version":"1.0.0","description":"Access your vessels and their AIS/GPS track data. Authenticate with an API key (Bearer)."},"servers":[{"url":"https://broaderworld.com/api/v1"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"Use your API key as a Bearer token."}},"schemas":{"Fix":{"type":"object","required":["lat","lon"],"properties":{"lat":{"type":"number"},"lon":{"type":"number"},"ts":{"type":"string","description":"ISO 8601 or epoch; defaults to now"},"sog":{"type":"number"},"cog":{"type":"number"},"heading":{"type":"number"}}}}},"paths":{"/account":{"get":{"summary":"Account that owns the key","responses":{"200":{"description":"OK"},"401":{"description":"Invalid key"}}}},"/vessels":{"get":{"summary":"List your vessels","responses":{"200":{"description":"OK"}}},"post":{"summary":"Create a vessel (scope: write)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"mmsi":{"type":"string","pattern":"^\\d{9}$"},"type":{"type":"string"},"callsign":{"type":"string"}}}}}},"responses":{"201":{"description":"Created"},"403":{"description":"Missing write scope"}}}},"/vessels/{id}":{"get":{"summary":"Vessel detail + latest position","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"404":{"description":"Not found"}}}},"/vessels/{id}/positions":{"get":{"summary":"Track history (up to 90 days)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"limit","in":"query","schema":{"type":"integer","default":1000,"maximum":5000}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"positions":{"type":"array","items":{"type":"object","properties":{"ts":{"type":"string","format":"date-time"},"lat":{"type":"number"},"lon":{"type":"number"},"sog":{"type":"number","nullable":true},"cog":{"type":"number","nullable":true},"heading":{"type":"number","nullable":true},"source":{"type":"string","enum":["AIS","GPS"]}}}}}}}}}}},"post":{"summary":"Push GPS fix(es) (scope: write)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Fix"},{"type":"array","items":{"$ref":"#/components/schemas/Fix"}}]}}}},"responses":{"200":{"description":"Stored"},"403":{"description":"Missing write scope"}}}}}}