{"info":{"description":"Proof-of-concept REST API over Swiss Official Gazette (SHAB) entities in Postgres (`shab_entities`). Not an official SHAB interface. Dataset may be incomplete.","title":"SHAB Search API","version":"0.1.0"},"openapi":"3.0.3","paths":{"/api":{"get":{"operationId":"apiCatalog","responses":{"200":{"description":"Endpoint list"}},"summary":"API catalog","tags":["meta"]}},"/api/autocomplete":{"get":{"operationId":"autocomplete","parameters":[{"in":"query","name":"q","required":true,"schema":{"type":"string"}},{"in":"query","name":"schema","schema":{"enum":["Person","Company","Notice"],"type":"string"}},{"in":"query","name":"limit","schema":{"default":8,"maximum":20,"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Suggestion hits"}},"summary":"Prefix autocomplete","tags":["search"]}},"/api/entities/{key}":{"get":{"operationId":"getEntity","parameters":[{"description":"Entity key (person hash, CHE\u2026, or notice id e.g. HR01-\u2026)","in":"path","name":"key","required":true,"schema":{"type":"string"}},{"description":"For Person/Company: attach linked companies / notices / graph. Company officers are paged at GET /api/entities/{key}/management (entity payload only has management_meta.deferred). For Notice: attach roles on related persons.","in":"query","name":"enrich","schema":{"default":true,"type":"boolean"}},{"description":"Include raw notice_rel / person_rel / company_rel key arrays","in":"query","name":"raw","schema":{"default":false,"type":"boolean"}},{"description":"Include the sample relationship graph on Person/Company","in":"query","name":"graph","schema":{"default":true,"type":"boolean"}}],"responses":{"200":{"description":"Entity"},"404":{"description":"Not found"}},"summary":"Entity detail","tags":["entities"]}},"/api/entities/{key}/graph":{"get":{"operationId":"getEntityGraph","parameters":[{"in":"path","name":"key","required":true,"schema":{"type":"string"}},{"description":"Hop depth (alias: hops)","in":"query","name":"depth","schema":{"default":1,"enum":[1,2],"type":"integer"}},{"description":"Deprecated alias for depth","in":"query","name":"hops","schema":{"enum":[1,2],"type":"integer"}},{"in":"query","name":"cap","schema":{"default":25,"maximum":80,"minimum":1,"type":"integer"}},{"description":"active (default): still-listed neighbours only. all: include no-longer-listed and unparsed links.","in":"query","name":"status","schema":{"default":"active","enum":["active","all"],"type":"string"}}],"responses":{"200":{"description":"Nodes and edges"},"404":{"description":"Not found"}},"summary":"Relationship graph","tags":["entities"]}},"/api/entities/{key}/management":{"get":{"operationId":"listCompanyManagement","parameters":[{"in":"path","name":"key","required":true,"schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"enum":["active","former","unknown"],"type":"string"}},{"in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"in":"query","name":"limit","schema":{"default":25,"type":"integer"}}],"responses":{"200":{"description":"Management groups (still listed / no longer listed)"},"404":{"description":"Not found"}},"summary":"Paged company management","tags":["entities"]}},"/api/entities/{key}/related":{"get":{"operationId":"listRelatedEntities","parameters":[{"in":"path","name":"key","required":true,"schema":{"type":"string"}},{"in":"query","name":"schema","schema":{"default":"Person","enum":["Person","Company","Notice"],"type":"string"}},{"in":"query","name":"offset","schema":{"default":0,"type":"integer"}},{"in":"query","name":"limit","schema":{"default":25,"type":"integer"}}],"responses":{"200":{"description":"Page of related entities"},"404":{"description":"Not found"}},"summary":"Paged related entities","tags":["entities"]}},"/api/health":{"get":{"operationId":"health","responses":{"200":{"description":"Service OK"},"503":{"description":"Database unavailable"}},"summary":"Health and schema counts","tags":["meta"]}},"/api/methods":{"get":{"operationId":"listMethods","responses":{"200":{"description":"Allowed method / schema values"}},"summary":"Search methods and schemas","tags":["meta"]}},"/api/search":{"get":{"operationId":"search","parameters":[{"description":"Name, company, CHE number, or entity key. Hits include address when stored.","in":"query","name":"q","required":true,"schema":{"type":"string"}},{"description":"Filter by schema (default: Person + Company)","in":"query","name":"schema","schema":{"enum":["Person","Company","Notice"],"type":"string"}},{"in":"query","name":"method","schema":{"default":"adaptive","enum":["optimized_fts","fts_prefix","hybrid","pg_trgm_fuzzy","pg_trgm_ngram","adaptive"],"type":"string"}},{"in":"query","name":"limit","schema":{"default":25,"maximum":100,"minimum":1,"type":"integer"}},{"description":"Skip the first N hits (client-side window on the result set)","in":"query","name":"offset","schema":{"default":0,"minimum":0,"type":"integer"}}],"responses":{"200":{"description":"Search hits"},"400":{"description":"Bad parameters"},"504":{"description":"Search timed out"}},"summary":"Search persons and companies","tags":["search"]}}},"servers":[{"description":"This deployment","url":"/"}],"tags":[{"description":"Health and discovery","name":"meta"},{"description":"Name / organisation lookup","name":"search"},{"description":"Entity detail and relationships","name":"entities"}]}
