{"openapi":"3.1.0","info":{"title":"Lexipedia API","version":"1.0.0","description":"Read-only public API for Swiss laws and court decisions."},"servers":[{"url":"https://lexipedia.io"}],"paths":{"/api/v1/laws":{"get":{"summary":"List laws","tags":["Laws"],"parameters":[{"name":"locale","in":"query","required":false,"description":"Preferred response language. Defaults to fr.","schema":{"type":"string"}},{"name":"language","in":"query","required":false,"description":"Require an exact document language.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size. Default 20, maximum 100.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based result offset. Maximum 10000.","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"sort","in":"query","required":false,"description":"Sort field. Defaults to document_date.","schema":{"type":"string","enum":["document_date","updated_at","number"],"default":"document_date"}},{"name":"order","in":"query","required":false,"description":"Sort direction. Defaults to desc.","schema":{"type":"string","enum":["asc","desc"],"default":"desc"}},{"name":"type","in":"query","required":false,"description":"Filter by stored legislation type.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Filter by legislation status.","schema":{"type":"string"}},{"name":"jurisdiction","in":"query","required":false,"description":"Filter by lowercase two-letter jurisdiction code, such as ch, vd, or zh.","schema":{"type":"string"}},{"name":"canton","in":"query","required":false,"description":"Filter by uppercase Swiss canton code.","schema":{"type":"string"}},{"name":"number","in":"query","required":false,"description":"Filter by official number.","schema":{"type":"string"}},{"name":"fromDate","in":"query","required":false,"description":"Filter by document date on or after YYYY-MM-DD.","schema":{"type":"string"}},{"name":"toDate","in":"query","required":false,"description":"Filter by document date on or before YYYY-MM-DD.","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated results.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Law"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"links":{"type":"object"}},"required":["data","pagination","links"]}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/laws/{documentId}":{"get":{"summary":"Get a law","tags":["Laws"],"parameters":[{"name":"documentId","in":"path","required":true,"description":"Canonical Lexipedia document id.","schema":{"type":"integer","minimum":1}},{"name":"locale","in":"query","required":false,"description":"Preferred response language. Defaults to fr.","schema":{"type":"string"}}],"responses":{"200":{"description":"Document detail.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LawDetail"}},"required":["data"]}}}},"400":{"description":"Invalid document id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Document not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/laws/search":{"get":{"summary":"Search laws","tags":["Laws"],"parameters":[{"name":"q","in":"query","required":false,"description":"Full-text search query. The query alias is also accepted.","schema":{"type":"string"}},{"name":"query","in":"query","required":false,"description":"Alias for q.","schema":{"type":"string"}},{"name":"locale","in":"query","required":false,"description":"Preferred response language. Defaults to fr.","schema":{"type":"string"}},{"name":"language","in":"query","required":false,"description":"Require an exact document language.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size. Default 20, maximum 100.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based result offset. Maximum 10000.","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"sort","in":"query","required":false,"description":"Sort field. Defaults to relevance.","schema":{"type":"string","enum":["relevance","date","number"],"default":"relevance"}},{"name":"order","in":"query","required":false,"description":"Sort direction. Defaults to desc.","schema":{"type":"string","enum":["asc","desc"],"default":"desc"}},{"name":"jurisdiction","in":"query","required":false,"description":"Filter by lowercase two-letter jurisdiction code, such as ch, vd, or zh.","schema":{"type":"string"}},{"name":"canton","in":"query","required":false,"description":"Filter by uppercase Swiss canton code.","schema":{"type":"string"}},{"name":"legal_area","in":"query","required":false,"description":"Filter by legal area id. The area alias is also accepted.","schema":{"type":"string"}},{"name":"area","in":"query","required":false,"description":"Alias for legal_area.","schema":{"type":"string"}},{"name":"number","in":"query","required":false,"description":"Filter by official number.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Filter by legislation status.","schema":{"type":"string"}},{"name":"fromDate","in":"query","required":false,"description":"Filter by document date on or after YYYY-MM-DD.","schema":{"type":"string"}},{"name":"toDate","in":"query","required":false,"description":"Filter by document date on or before YYYY-MM-DD.","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated results.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/LawSearchResult"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"links":{"type":"object"}},"required":["data","pagination","links"]}}}},"400":{"description":"Invalid search query or filter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Search backend unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/decisions":{"get":{"summary":"List court decisions","tags":["Decisions"],"parameters":[{"name":"locale","in":"query","required":false,"description":"Preferred response language. Defaults to fr.","schema":{"type":"string"}},{"name":"language","in":"query","required":false,"description":"Require an exact document language.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size. Default 20, maximum 100.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based result offset. Maximum 10000.","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"sort","in":"query","required":false,"description":"Sort field. Defaults to decision_date.","schema":{"type":"string","enum":["decision_date","updated_at","citation","publication_date"],"default":"decision_date"}},{"name":"order","in":"query","required":false,"description":"Sort direction. Defaults to desc.","schema":{"type":"string","enum":["asc","desc"],"default":"desc"}},{"name":"court","in":"query","required":false,"description":"Filter by court code or name.","schema":{"type":"string"}},{"name":"chamber","in":"query","required":false,"description":"Filter by chamber.","schema":{"type":"string"}},{"name":"jurisdiction","in":"query","required":false,"description":"Filter by lowercase two-letter jurisdiction code, such as ch, vd, or zh.","schema":{"type":"string"}},{"name":"citation","in":"query","required":false,"description":"Filter by decision citation.","schema":{"type":"string"}},{"name":"fromDate","in":"query","required":false,"description":"Filter by decision date on or after YYYY-MM-DD.","schema":{"type":"string"}},{"name":"toDate","in":"query","required":false,"description":"Filter by decision date on or before YYYY-MM-DD.","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated results.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Decision"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"links":{"type":"object"}},"required":["data","pagination","links"]}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/decisions/{documentId}":{"get":{"summary":"Get a court decision","tags":["Decisions"],"parameters":[{"name":"documentId","in":"path","required":true,"description":"Canonical Lexipedia document id.","schema":{"type":"integer","minimum":1}},{"name":"locale","in":"query","required":false,"description":"Preferred response language. Defaults to fr.","schema":{"type":"string"}}],"responses":{"200":{"description":"Document detail.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/DecisionDetail"}},"required":["data"]}}}},"400":{"description":"Invalid document id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Document not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/decisions/search":{"get":{"summary":"Search court decisions","tags":["Decisions"],"parameters":[{"name":"q","in":"query","required":false,"description":"Full-text search query. The query alias is also accepted.","schema":{"type":"string"}},{"name":"query","in":"query","required":false,"description":"Alias for q.","schema":{"type":"string"}},{"name":"locale","in":"query","required":false,"description":"Preferred response language. Defaults to fr.","schema":{"type":"string"}},{"name":"language","in":"query","required":false,"description":"Require an exact document language.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size. Default 20, maximum 100.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based result offset. Maximum 10000.","schema":{"type":"integer","minimum":0,"maximum":10000}},{"name":"sort","in":"query","required":false,"description":"Sort field. Defaults to relevance.","schema":{"type":"string","enum":["relevance","date"],"default":"relevance"}},{"name":"order","in":"query","required":false,"description":"Sort direction. Defaults to desc.","schema":{"type":"string","enum":["asc","desc"],"default":"desc"}},{"name":"jurisdiction","in":"query","required":false,"description":"Filter by lowercase two-letter jurisdiction code, such as ch, vd, or zh.","schema":{"type":"string"}},{"name":"canton","in":"query","required":false,"description":"Filter by uppercase Swiss canton code.","schema":{"type":"string"}},{"name":"legal_area","in":"query","required":false,"description":"Filter by legal area id. The area alias is also accepted.","schema":{"type":"string"}},{"name":"area","in":"query","required":false,"description":"Alias for legal_area.","schema":{"type":"string"}},{"name":"court","in":"query","required":false,"description":"Filter by court code or name.","schema":{"type":"string"}},{"name":"citation","in":"query","required":false,"description":"Filter by decision citation.","schema":{"type":"string"}},{"name":"collection","in":"query","required":false,"description":"Filter by publication collection.","schema":{"type":"string"}},{"name":"outcome","in":"query","required":false,"description":"Filter by decision outcome.","schema":{"type":"string"}},{"name":"procedure_type","in":"query","required":false,"description":"Filter by procedure type. The procedureType alias is also accepted.","schema":{"type":"string"}},{"name":"procedureType","in":"query","required":false,"description":"Alias for procedure_type.","schema":{"type":"string"}},{"name":"fromDate","in":"query","required":false,"description":"Filter by decision date on or after YYYY-MM-DD.","schema":{"type":"string"}},{"name":"toDate","in":"query","required":false,"description":"Filter by decision date on or before YYYY-MM-DD.","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated results.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/DecisionSearchResult"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"links":{"type":"object"}},"required":["data","pagination","links"]}}}},"400":{"description":"Invalid search query or filter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Search backend unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Pagination":{"type":"object","properties":{"limit":{"type":"integer"},"offset":{"type":"integer"},"total":{"type":"integer"}},"required":["limit","offset","total"]},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"]}},"required":["error"]},"Law":{"type":"object","properties":{"documentId":{"type":"integer"},"documentContentId":{"type":"integer"},"type":{"type":"string"},"language":{"type":["string","null"]},"availableLanguages":{"type":"array","items":{"type":"string"}},"title":{"type":["string","null"]},"abstract":{"type":["string","null"]},"summary":{"type":["string","null"]},"source":{"type":["string","null"]},"sourceUrl":{"type":["string","null"]},"publicUrl":{"type":["string","null"]},"updatedAt":{"type":["string","null"]},"legislationId":{"type":"integer"},"number":{"type":["string","null"]},"lawTitleShort":{"type":["string","null"]},"jurisdiction":{"type":["string","null"]},"canton":{"type":["string","null"]},"legalArea":{"type":["string","null"]},"legislationType":{"type":["string","null"]},"legislationStatus":{"type":["string","null"]},"documentDate":{"type":["string","null"]},"inForceSince":{"type":["string","null"]},"inForceTo":{"type":["string","null"]},"applicableFrom":{"type":["string","null"]},"applicableTo":{"type":["string","null"]}}},"LawDetail":{"allOf":[{"$ref":"#/components/schemas/Law"},{"type":"object","properties":{"contentHtml":{"type":"string"},"contentText":{"type":"string"},"legalAreas":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"label":{"type":"string"},"parentLabel":{"type":["string","null"]},"pathLabel":{"type":"string"}}}}}}]},"Decision":{"type":"object","properties":{"documentId":{"type":"integer"},"documentContentId":{"type":"integer"},"type":{"type":"string"},"language":{"type":["string","null"]},"availableLanguages":{"type":"array","items":{"type":"string"}},"title":{"type":["string","null"]},"abstract":{"type":["string","null"]},"summary":{"type":["string","null"]},"source":{"type":["string","null"]},"sourceUrl":{"type":["string","null"]},"publicUrl":{"type":["string","null"]},"updatedAt":{"type":["string","null"]},"courtDecisionId":{"type":"integer"},"citation":{"type":["string","null"]},"jurisdiction":{"type":["string","null"]},"court":{"type":["string","null"]},"chamber":{"type":["string","null"]},"instance":{"type":["string","null"]},"legalArea":{"type":["string","null"]},"decisionType":{"type":["string","null"]},"legalForce":{"type":["string","null"]},"procedureType":{"type":["string","null"]},"collection":{"type":["string","null"]},"outcome":{"type":["string","null"]},"decisionDate":{"type":["string","null"]},"publicationDate":{"type":["string","null"]}}},"DecisionDetail":{"allOf":[{"$ref":"#/components/schemas/Decision"},{"type":"object","properties":{"contentHtml":{"type":"string"},"contentText":{"type":"string"},"legalAreas":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"label":{"type":"string"},"parentLabel":{"type":["string","null"]},"pathLabel":{"type":"string"}}}},"parties":{"type":"array","items":{"type":"string"}},"judges":{"type":"array","items":{"type":"string"}},"clerks":{"type":"array","items":{"type":"string"}}}}]},"LawSearchResult":{"type":"object","properties":{"id":{"type":["integer","string","null"]},"documentId":{"type":["integer","null"]},"documentContentId":{"type":["integer","null"]},"source":{"type":"string"},"searchSource":{"type":"string"},"sourceType":{"type":"string"},"type":{"type":"string"},"resultType":{"type":"string"},"number":{"type":["string","null"]},"articleTitle":{"type":["string","null"]},"decisionTitle":{"type":["string","null"]},"lawTitle":{"type":["string","null"]},"lawTitleShort":{"type":["string","null"]},"abstract":{"type":["string","null"]},"slug":{"type":["string","null"]},"jurisdiction":{"type":["string","null"]},"canton":{"type":["string","null"]},"language":{"type":["string","null"]},"legalArea":{"type":["string","null"]},"documentDate":{"type":["string","null"]},"citationCount":{"type":"integer"},"matchedFields":{"type":"array","items":{"type":"string"}},"score":{"type":"number"},"lexicalScore":{"type":"number"},"semanticScore":{"type":"number"},"exactLexicalMatch":{"type":"boolean"},"scores":{"type":"object","properties":{"final":{"type":"number"},"lexical":{"type":"number"},"semantic":{"type":"number"}}},"legislationNumber":{"type":["string","null"]}}},"DecisionSearchResult":{"type":"object","properties":{"id":{"type":["integer","string","null"]},"documentId":{"type":["integer","null"]},"documentContentId":{"type":["integer","null"]},"source":{"type":"string"},"searchSource":{"type":"string"},"sourceType":{"type":"string"},"type":{"type":"string"},"resultType":{"type":"string"},"number":{"type":["string","null"]},"articleTitle":{"type":["string","null"]},"decisionTitle":{"type":["string","null"]},"lawTitle":{"type":["string","null"]},"lawTitleShort":{"type":["string","null"]},"abstract":{"type":["string","null"]},"slug":{"type":["string","null"]},"jurisdiction":{"type":["string","null"]},"canton":{"type":["string","null"]},"language":{"type":["string","null"]},"legalArea":{"type":["string","null"]},"documentDate":{"type":["string","null"]},"citationCount":{"type":"integer"},"matchedFields":{"type":"array","items":{"type":"string"}},"score":{"type":"number"},"lexicalScore":{"type":"number"},"semanticScore":{"type":"number"},"exactLexicalMatch":{"type":"boolean"},"scores":{"type":"object","properties":{"final":{"type":"number"},"lexical":{"type":"number"},"semantic":{"type":"number"}}},"citation":{"type":["string","null"]},"court":{"type":["string","null"]}}}}}}