{"openapi":"3.1.0","info":{"title":"Open Trademarks API","version":"1.0.0","description":"Free trademark search across the US, EU and Israeli registers. A register search, not legal advice. No key, no account; 60 requests a minute per address."},"servers":[{"url":"https://api.opentrademarks.org"}],"paths":{"/v1/check":{"get":{"operationId":"checkTrademark","summary":"Check a name against the live marks of the registers.","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":120}},{"name":"goods","in":"query","description":"What will be sold, free text; mapped to Nice classes.","schema":{"type":"string"}},{"name":"classes","in":"query","description":"Comma-separated Nice classes, 1 to 45.","schema":{"type":"string","example":"9,42"}},{"name":"registers","in":"query","description":"Comma-separated subset of us, eu, il. All three when omitted.","schema":{"type":"string","example":"us,eu,il"}}],"responses":{"200":{"description":"The verdict with its evidence. Also available as text/markdown through the Accept header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckResult"}},"text/markdown":{"schema":{"type":"string"}}}},"400":{"description":"The name is missing or too short."}}}},"/v1/search":{"get":{"operationId":"searchTrademarks","summary":"Ranked live marks that share a query's spelling or sound.","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":120}},{"name":"registers","in":"query","description":"Comma-separated subset of us, eu, il. All three when omitted.","schema":{"type":"string","example":"us,eu,il"}},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"maximum":100}}],"responses":{"200":{"description":"Marks, ranked, with the read date of each register and the notice."}}}},"/v1/marks/{register}/{number}":{"get":{"operationId":"getMark","summary":"One office record as the register holds it.","parameters":[{"name":"register","in":"path","required":true,"schema":{"type":"string","enum":["us","eu","il"]}},{"name":"number","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkRecord"}}}},"404":{"description":"Not in the registers read."}}}},"/v1/registers":{"get":{"operationId":"getRegisters","summary":"When each register was last read.","responses":{"200":{"description":"The three read dates."}}}}},"components":{"schemas":{"CheckResult":{"type":"object","properties":{"verdict":{"type":"string","enum":["exact_live_mark","similar_live_marks","no_live_match","not_checked"],"description":"not_checked means no register in the check has been read yet; it is not a verdict."},"conflicts":{"type":"array","items":{"$ref":"#/components/schemas/MatchedMark"}},"other_classes":{"type":"array","items":{"$ref":"#/components/schemas/MatchedMark"}},"dead":{"type":"object","properties":{"count":{"type":"integer"},"latest":{"type":"string","nullable":true}}},"registers":{"type":"array","items":{"type":"object","properties":{"register":{"type":"string"},"loaded_at":{"type":"string","nullable":true},"stale":{"type":"boolean","description":"True when the register has not been read for 36 hours, while a full load is still draining, or after one that did not finish."},"loading":{"type":"boolean","description":"True while a full load is still draining: the index is part old, part new, and a name may not be found yet."},"incomplete":{"type":"boolean","description":"True when the last full load that wrote rows did not finish (failed or died), until a full load closes ok."}}}},"notice":{"type":"string","description":"What the answer means, the Israeli Hebrew-only gap when Israel is checked, and the fixed line last. Show it with any result."}}},"MarkRecord":{"type":"object","description":"A live mark: the index row, its classes and the full record. A dead mark is the index row with state dead.","properties":{"register":{"type":"string"},"number":{"type":"string"},"mark":{"type":"string"},"state":{"type":"string","enum":["live","dead"]},"owner":{"type":"string","nullable":true,"description":"As the office publishes it, except that identity numbers inside the name read [ID withheld] and an owner withheld at a person's request reads [withheld]."},"classes":{"type":"array","items":{"type":"integer"}},"record":{"type":"object","nullable":true,"description":"Everything else the office publishes for the mark. The fields differ by register; the Israeli record also carries holders and events.","additionalProperties":true,"properties":{"owners":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"country":{"type":"string","nullable":true}}},"description":"US and EU: the owners on the register. No street address is published."},"holders":{"type":"array","items":{"$ref":"#/components/schemas/Holder"},"description":"Israel: the holders and licensees on the register, lead holders first. Names only, no contact details."},"owner_withheld":{"type":"boolean","description":"Present and true when the owner is withheld at a person's request: every owner and holder name reads [withheld]."},"events":{"type":"array","items":{"$ref":"#/components/schemas/RegisterEvent"},"description":"Israel: the latest 50 described events of the change log, oldest to newest."}}}}},"Holder":{"type":"object","properties":{"name_he":{"type":"string","nullable":true},"name_en":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true,"description":"israeli_person, israeli_company or foreign_person_or_company; the office's own words if it uses another."},"standing":{"type":"string","nullable":true,"description":"owner or licensee; the office's own words if it uses another."},"lead":{"type":"boolean","description":"The lead holder on the file."}}},"RegisterEvent":{"type":"object","properties":{"date":{"type":"string","format":"date"},"description_he":{"type":"string","nullable":true},"description_en":{"type":"string","nullable":true},"published":{"type":"string","format":"date","nullable":true,"description":"When the office published the event."}}},"MatchedMark":{"type":"object","properties":{"register":{"type":"string"},"number":{"type":"string"},"mark":{"type":"string"},"state":{"type":"string","enum":["live","dead"]},"classes":{"type":"array","items":{"type":"integer"}},"signals":{"type":"array","items":{"type":"string","enum":["exact","variant","pseudo","sound","spelling","contains","hebrew"]}},"class_overlap":{"type":"array","items":{"type":"integer"}},"office_url":{"type":"string"}}}}}}