{"openapi":"3.1.0","info":{"title":"Latgalian dictionary access","version":"2.1.0"},"paths":{"/api/health":{"get":{"tags":["latgalian"],"summary":"Liveness probe","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"string"}]},"type":"object","title":"Response Health Api Health Get"}}}}}}},"/api":{"get":{"tags":["latgalian"],"summary":"API usage","operationId":"index_api_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Index Api Get"}}}}}}},"/api/search":{"get":{"tags":["latgalian"],"summary":"Look a Latgalian word up","operationId":"search_api_search_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":80,"description":"The word to look up. ltg (default): a single Latgalian word — any form; an inflected form is resolved to its lemma via cached paradigms (see search_method in the response); diacritics are optional once a paradigm is cached ('akmins' finds 'akmiņs'). eng: the English word whose Latgalian equivalents you want — multiword entries like 'apple tree' work.","title":"Query"},"description":"The word to look up. ltg (default): a single Latgalian word — any form; an inflected form is resolved to its lemma via cached paradigms (see search_method in the response); diacritics are optional once a paradigm is cached ('akmins' finds 'akmiņs'). eng: the English word whose Latgalian equivalents you want — multiword entries like 'apple tree' work."},{"name":"search_language","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SearchLanguage","description":"Query language: ltg looks the Latgalian word up directly; eng finds an English word's per-sense Latgalian equivalents (the translations block) and expands them into full entries.","default":"ltg"},"description":"Query language: ltg looks the Latgalian word up directly; eng finds an English word's per-sense Latgalian equivalents (the translations block) and expands them into full entries."},{"name":"include_forms","in":"query","required":false,"schema":{"type":"boolean","description":"Attach each match's full inflection table inline. Bounded by the per-search cap. Defaults to false here — the MCP tool defaults to true.","default":false,"title":"Include Forms"},"description":"Attach each match's full inflection table inline. Bounded by the per-search cap. Defaults to false here — the MCP tool defaults to true."},{"name":"max_forms","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":12,"minimum":0},{"type":"null"}],"description":"Override the number of inline tables this request (0–12).","title":"Max Forms"},"description":"Override the number of inline tables this request (0–12)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/romanize":{"get":{"tags":["latgalian"],"summary":"Romanize Latgalian to clean ASCII","operationId":"romanize_api_romanize_get","parameters":[{"name":"text","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":4000,"description":"Latgalian text to romanize.","title":"Text"},"description":"Latgalian text to romanize."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Romanization"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/inflections":{"get":{"tags":["latgalian"],"summary":"Inflection table","operationId":"inflections_api_inflections_get","parameters":[{"name":"entry_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-zĀāČčĒēĪīŪūŌōŖŗŠšŽžĻļŅņĶķĢģ][A-Za-zĀāČčĒēĪīŪūŌōŖŗŠšŽžĻļŅņĶķĢģ\\-']{0,79}$","description":"Page title (the lemma) from a handle.","title":"Entry Id"},"description":"Page title (the lemma) from a handle."},{"name":"word_class","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":24,"pattern":"^[a-z ]+$","description":"Part-of-speech section from a handle, e.g. verb, noun.","title":"Word Class"},"description":"Part-of-speech section from a handle, e.g. verb, noun."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/LatgalianNominalParadigm"},{"$ref":"#/components/schemas/LatgalianVerbalParadigm"},{"$ref":"#/components/schemas/ParadigmNotFound"}],"discriminator":{"propertyName":"category","mapping":{"nominal":"#/components/schemas/LatgalianNominalParadigm","verbal":"#/components/schemas/LatgalianVerbalParadigm","not_found":"#/components/schemas/ParadigmNotFound"}},"title":"Response Inflections Api Inflections Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Entry":{"properties":{"headword":{"type":"string","title":"Headword"},"part_of_speech":{"type":"string","title":"Part Of Speech","default":""},"entry_id":{"type":"string","title":"Entry Id","description":"Page title — feed to latgalian_get_inflections.","default":""},"word_class":{"type":"string","title":"Word Class","description":"POS section — feed to latgalian_get_inflections.","default":""},"senses":{"items":{"$ref":"#/components/schemas/Sense"},"type":"array","title":"Senses"}},"type":"object","required":["headword"],"title":"Entry","description":"One Latgalian entry on the page: the headword (page title) with one\npart-of-speech section's senses."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InflectionHandle":{"properties":{"entry_id":{"type":"string","title":"Entry Id","description":"Wiktionary page title — the lemma itself."},"word_class":{"type":"string","title":"Word Class","description":"Part-of-speech section, e.g. 'verb', 'noun'."},"context":{"type":"string","title":"Context","description":"Nearby headword / hint.","default":""},"pos_hint":{"type":"string","title":"Pos Hint","description":"Part-of-speech hint.","default":""},"forms":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/LatgalianNominalParadigm"},{"$ref":"#/components/schemas/LatgalianVerbalParadigm"},{"$ref":"#/components/schemas/ParadigmNotFound"}],"discriminator":{"propertyName":"category","mapping":{"nominal":"#/components/schemas/LatgalianNominalParadigm","not_found":"#/components/schemas/ParadigmNotFound","verbal":"#/components/schemas/LatgalianVerbalParadigm"}}},{"type":"null"}],"title":"Forms","description":"The full paradigm, populated when a search is asked to include forms. None when not requested or beyond the cap."}},"type":"object","required":["entry_id","word_class"],"title":"InflectionHandle","description":"A structured anchor for fetching a full paradigm: feed ``entry_id`` (the page\ntitle) + ``word_class`` (the POS section) to ``latgalian_get_inflections`` — or\nask ``search`` to include the table inline (``forms``)."},"LatgalianNominalParadigm":{"properties":{"category":{"type":"string","const":"nominal","title":"Category","default":"nominal"},"entry_id":{"type":"string","title":"Entry Id"},"word_class":{"type":"string","title":"Word Class"},"found":{"type":"boolean","const":true,"title":"Found","default":true},"cases":{"additionalProperties":{"$ref":"#/components/schemas/LatgalianNumberForms"},"type":"object","title":"Cases","description":"Case key (lower-case: 'nominative', 'genitive', …; nouns use the bare case; adjectives prefix the state — 'indefinite nominative' — and suffix the gender — 'indefinite nominative masculine') → its singular/plural forms, in table order."},"source":{"type":"string","title":"Source","default":"Wiktionary, the free dictionary (en.wiktionary.org), Latgalian entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)"}},"type":"object","required":["entry_id","word_class","cases"],"title":"LatgalianNominalParadigm","description":"Declension of a noun/adjective/etc.: case key → {singular, plural}.\n\nNoun tables give the bare case ('nominative', 'genitive', … — the seven\nLatgalian cases), with no definiteness. Adjective tables come as a family:\nthe state (indefinite/definite, from the table's NavHead) prefixes the key and\nthe gender (masculine/feminine, from the header row) suffixes it —\n'indefinite nominative masculine', 'definite locative feminine'.\n``category`` discriminates this from the verbal and not-found shapes — switch\non it before reading the body."},"LatgalianNumberForms":{"properties":{"singular":{"type":"string","title":"Singular","default":""},"plural":{"type":"string","title":"Plural","default":""}},"type":"object","title":"LatgalianNumberForms","description":"A declension cell: the two number forms of one case key. Forms are verbatim\nLatgalian; alternates stay comma-separated as Wiktionary renders them. A number\nthe table doesn't give (defective paradigms) is an empty string."},"LatgalianVerbalParadigm":{"properties":{"category":{"type":"string","const":"verbal","title":"Category","default":"verbal"},"entry_id":{"type":"string","title":"Entry Id"},"word_class":{"type":"string","title":"Word Class"},"found":{"type":"boolean","const":true,"title":"Found","default":true},"finite":{"additionalProperties":{"additionalProperties":{"type":"string"},"type":"object"},"type":"object","title":"Finite","description":"Mood key (lower-case: 'indicative present', 'indicative past', 'indicative future', 'subjunctive', 'imperative'; the negative table's keys are prefixed — 'negative indicative past') → person or number ('first singular' … 'third plural'; the imperative uses bare 'singular'/'plural') → the form. Alternates are comma-separated; an em-dash cell (no such form) is omitted."},"nonfinite":{"additionalProperties":{"additionalProperties":{"type":"string"},"type":"object"},"type":"object","title":"Nonfinite","description":"Non-finite form ('infinitive', 'supine', 'verbal noun', 'converb', 'debitive', and the participles keyed by tense and voice — 'past active participle', 'present passive participle'; negative-prefixed for that table) → {'form': <the form>}."},"source":{"type":"string","title":"Source","default":"Wiktionary, the free dictionary (en.wiktionary.org), Latgalian entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)"}},"type":"object","required":["entry_id","word_class","finite","nonfinite"],"title":"LatgalianVerbalParadigm","description":"Conjugation of a verb, grouped the way Wiktionary's tables are: finite cells\nkeyed by mood (and, for the indicative, tense) → person-or-number → form, plus\nthe non-finite forms (infinitive, supine, verbal noun, converb, debitive and\nthe participles). The negative conjugation renders as its own table and its keys\ncarry a 'negative ' prefix; positive keys are bare."},"ParadigmNotFound":{"properties":{"category":{"type":"string","const":"not_found","title":"Category","default":"not_found"},"entry_id":{"type":"string","title":"Entry Id"},"word_class":{"type":"string","title":"Word Class"},"found":{"type":"boolean","const":false,"title":"Found","default":false},"source":{"type":"string","title":"Source","default":"Wiktionary, the free dictionary (en.wiktionary.org), Latgalian entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)"}},"type":"object","required":["entry_id","word_class"],"title":"ParadigmNotFound","description":"No inflection table for this page/POS (no Latgalian section, no table, or the\npage doesn't exist). ``found`` is False and there is no body."},"Romanization":{"properties":{"original":{"type":"string","title":"Original","description":"The Latgalian text as given."},"text":{"type":"string","title":"Text","description":"The romanized ASCII output."}},"type":"object","required":["original","text"],"title":"Romanization","description":"Latgalian text reduced to clean, pronounceable ASCII (no diacritics or\ncapitals) for an English-trained downstream."},"SearchLanguage":{"type":"string","enum":["ltg","eng"],"title":"SearchLanguage","description":"The query language. ``ltg`` looks a Latgalian word up directly (any of its\nforms — an inflected query resolves via cached paradigms). ``eng`` searches in\nreverse: the English Wiktionary page for the query word lists per-sense\nLatgalian translations, and each distinct lemma is then looked up normally."},"SearchResult":{"properties":{"query":{"type":"string","title":"Query"},"language":{"$ref":"#/components/schemas/SearchLanguage"},"found":{"type":"boolean","title":"Found","description":"False when nothing matched. For an eng query, True means Latgalian translations were found — entries may still be empty when none of them could be expanded (see translations)."},"handles":{"items":{"$ref":"#/components/schemas/InflectionHandle"},"type":"array","title":"Handles"},"entries":{"items":{"$ref":"#/components/schemas/Entry"},"type":"array","title":"Entries"},"forms_truncated":{"type":"integer","title":"Forms Truncated","description":"How many handles did NOT get an inline table because the per-search cap was reached.","default":0},"translations":{"items":{"$ref":"#/components/schemas/TranslationSense"},"type":"array","title":"Translations","description":"Populated only for eng queries (always [] for ltg): the Latgalian terms each English sense translates to, in sense order. Entries/handles below are the expanded dictionary entries of those terms."},"translations_truncated":{"type":"integer","title":"Translations Truncated","description":"How many distinct translated lemmas were NOT expanded into entries because the per-search expansion cap was reached (they still appear under translations).","default":0},"search_method":{"type":"string","enum":["direct","lemma_index","translations"],"title":"Search Method","description":"How the match was found: 'direct' = the query itself matched; 'lemma_index' = an inflected form resolved via a previously cached paradigm; 'translations' = an English query resolved via Wiktionary translation tables.","default":"direct"},"resolved_from":{"type":"string","title":"Resolved From","description":"The original inflected query when resolved; else empty. ltg queries only — always empty for eng results.","default":""},"resolved_lemma":{"type":"string","title":"Resolved Lemma","description":"The lemma actually searched when resolved; else empty. ltg queries only — always empty for eng results.","default":""},"source":{"type":"string","title":"Source","default":"Wiktionary, the free dictionary (en.wiktionary.org), Latgalian entries. Wikimedia Foundation. Text available under CC BY-SA 4.0; attribution and share-alike required when republishing. (CC BY-SA 4.0)"}},"type":"object","required":["query","language","found"],"title":"SearchResult","description":"The result of a dictionary search."},"Sense":{"properties":{"label":{"type":"string","title":"Label","default":""},"gloss":{"type":"string","title":"Gloss"},"examples":{"items":{"type":"string"},"type":"array","title":"Examples"}},"type":"object","required":["gloss"],"title":"Sense","description":"One sense of an entry: the (HTML-stripped) Wiktionary definition line."},"TranslationSense":{"properties":{"sense":{"type":"string","title":"Sense","description":"The sense gloss the source table carries."},"terms":{"items":{"$ref":"#/components/schemas/TranslationTerm"},"type":"array","title":"Terms"}},"type":"object","required":["sense"],"title":"TranslationSense","description":"One English sense (a translations table) and the Latgalian terms it offers."},"TranslationTerm":{"properties":{"word":{"type":"string","title":"Word","description":"Wiktionary page title — the lemma itself."},"display":{"type":"string","title":"Display","description":"Rendered form when it differs from the title.","default":""},"gender":{"type":"string","title":"Gender","description":"Grammatical gender as marked, e.g. 'm'.","default":""},"qualifier":{"type":"string","title":"Qualifier","description":"Usage qualifier as marked, e.g. 'dialectal'; else empty.","default":""}},"type":"object","required":["word"],"title":"TranslationTerm","description":"One Latgalian word a translations table offers for an English sense. ``word``\nis the Wiktionary page title (what an ``eng`` search re-searches and what\n``latgalian_get_inflections`` needs)."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}