{"openapi":"3.1.0","info":{"title":"3GPT API","description":"Semantic search API for 3GPP technical specifications. Searches text and image chunks using Voyage AI embeddings with Vertex AI Vector Search (GCP) and GCS content retrieval.","version":"0.2.0"},"paths":{"/health":{"get":{"tags":["system"],"summary":"Health Check","description":"Check that the API and its dependencies are running.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/search/text":{"post":{"tags":["search"],"summary":"Search Text","description":"Search 3GPP specification text by natural language query. This is your primary research tool.\n\nCovers 3,200+ 3GPP technical specifications across Rel-15 and Rel-19. Returns semantically matched text passages, reranked for precision.\n\n**Typical workflow:**\n1. Start with a broad search (e.g. query=\"handover procedure in NR\", filter_series=\"38\")\n2. Identify the relevant document (e.g. doc_number 38.331) and section from results\n3. Narrow with filter_doc_number for deeper exploration of that spec\n4. Use the sections/toc tool to browse the document structure\n5. Fetch full sections with the get_sections tool\n\n**Filter strategy:** Use filter_series to scope by domain (38=NR, 23=architecture, 33=security). Use filter_doc_number when you know the spec. Use filter_release to compare Rel-15 vs Rel-19 evolution. Filters are optional — omit all for the broadest search.\n\n**Results:** Each result includes a matched text chunk (`content`) and optionally the full parent section (`section_text`). The `relevance_score` (0–1) from the reranker is the best quality signal. Always cite results as \"TS 38.331 Section 5.3.5 (Rel-19)\".","operationId":"search_text_search_text_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextSearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/images":{"post":{"tags":["search"],"summary":"Search Images","description":"Search for diagrams, figures, and tables in 3GPP specifications by natural language query.\n\nFinds protocol architecture diagrams, procedure flow charts, network topology figures, message sequence charts, and other visual content embedded in 3GPP specs.\n\n**When to use:** When the user asks about a diagram or figure, or when a visual would help explain a concept (e.g. \"show me the handover procedure\", \"NR user plane protocol stack diagram\").\n\n**Results:** Each result includes the figure caption, surrounding text context (context_before/context_after), and the section it appears in. Use the context to understand what the figure depicts.\n\n**Prefer text search** (`search_text`) for most queries. Use image search specifically when diagrams/figures are needed.","operationId":"search_images_search_images_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageSearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/combined":{"post":{"tags":["search"],"summary":"Search Combined","description":"Search both text and images/diagrams in 3GPP specifications simultaneously.\n\nCombines text search and image search in a single request. Returns text_results (matched passages) and image_results (figures/diagrams) for the same query.\n\n**When to use:** For broad topic research where both text explanations and diagrams are relevant — e.g. \"5G NR random access procedure\" would return the procedural text AND the flow chart.\n\n**Trade-off:** Slower than text-only search because it queries both indexes. Prefer `search_text` when you only need text, and `search_images` when you only need figures.\n\n**Filters:** All filters (release, series, doc_number, etc.) apply to both the text and image searches.","operationId":"search_combined_search_combined_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CombinedSearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CombinedSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/documents":{"get":{"tags":["documents"],"summary":"List Documents","description":"List 3GPP documents available in the search index with metadata (doc_number, title, release, series, chunk counts).\n\nWithout filters, returns all ~3,200 documents. Use doc_number to check if a specific document is indexed (fast — only fetches 1-2 status files instead of scanning all).","operationId":"list_documents_documents_get","parameters":[{"name":"doc_number","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by document number, e.g. '38.811'. Returns only versions of that document.","title":"Doc Number"},"description":"Filter by document number, e.g. '38.811'. Returns only versions of that document."},{"name":"release","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by 3GPP release, e.g. 'Rel-19'.","title":"Release"},"description":"Filter by 3GPP release, e.g. 'Rel-19'."},{"name":"series","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by series, e.g. '38'.","title":"Series"},"description":"Filter by series, e.g. '38'."},{"name":"doc_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by document type: 'TS' or 'TR'.","title":"Doc Type"},"description":"Filter by document type: 'TS' or 'TR'."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DocumentInfo"},"title":"Response List Documents Documents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/documents/{document_id}":{"get":{"tags":["documents"],"summary":"Get Document","description":"Get metadata for a single 3GPP document by its numeric ID (from search results or list_documents). Returns title, doc_number, release, series, and chunk counts.","operationId":"get_document_documents__document_id__get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sections":{"get":{"tags":["sections"],"summary":"Get Sections","description":"Fetch the full text of a specific section from a 3GPP document.\n\nUse this after search_text identifies a relevant section — fetch its complete text for thorough reading.\n\n**Important:** Always provide doc_number alongside section_number. Section numbers like \"5.1\" exist in hundreds of different documents with completely different content. For example, section 5.1 in TS 38.331 (RRC) is unrelated to section 5.1 in TS 23.501 (system architecture).\n\n**Tip:** Set prefix=true to fetch a section and all its sub-sections at once. E.g. section_number=\"5.3\" with prefix=true returns 5.3, 5.3.1, 5.3.1.1, 5.3.2, etc.","operationId":"get_sections_sections_get","parameters":[{"name":"section_number","in":"query","required":true,"schema":{"type":"string","description":"Section number to look up, e.g. '5.3.5', '6.3.2'. Dot-delimited numbering as it appears in the spec.","title":"Section Number"},"description":"Section number to look up, e.g. '5.3.5', '6.3.2'. Dot-delimited numbering as it appears in the spec."},{"name":"doc_number","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Document number — ALWAYS provide this. E.g. '38.331', '23.501'. Without it you'll get results from hundreds of unrelated documents.","title":"Doc Number"},"description":"Document number — ALWAYS provide this. E.g. '38.331', '23.501'. Without it you'll get results from hundreds of unrelated documents."},{"name":"version","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific document version, e.g. '19.1.0'. Usually not needed — use release instead.","title":"Version"},"description":"Specific document version, e.g. '19.1.0'. Usually not needed — use release instead."},{"name":"release","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"3GPP release: 'Rel-15' or 'Rel-19'. Omit to get both.","title":"Release"},"description":"3GPP release: 'Rel-15' or 'Rel-19'. Omit to get both."},{"name":"prefix","in":"query","required":false,"schema":{"type":"boolean","description":"If true, match the section AND all sub-sections. E.g. '5.3' returns 5.3, 5.3.1, 5.3.1.1, 5.3.2, etc.","default":false,"title":"Prefix"},"description":"If true, match the section AND all sub-sections. E.g. '5.3' returns 5.3, 5.3.1, 5.3.1.1, 5.3.2, etc."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SectionResult"},"title":"Response Get Sections Sections Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sections/toc":{"get":{"tags":["sections"],"summary":"List Sections","description":"Get the table of contents (section numbers and titles) for a 3GPP document.\n\nReturns all sections without full text — use this to understand a document's structure before diving into specific sections with get_sections.\n\n**Typical use:** After search_text finds results in e.g. TS 38.331, call this with doc_number=\"38.331\" to see the full document outline, then fetch the specific sections you need.","operationId":"list_sections_sections_toc_get","parameters":[{"name":"doc_number","in":"query","required":true,"schema":{"type":"string","description":"Document number to get the TOC for, e.g. '38.331' (NR RRC), '23.501' (5G system architecture), '38.300' (NR overview).","title":"Doc Number"},"description":"Document number to get the TOC for, e.g. '38.331' (NR RRC), '23.501' (5G system architecture), '38.300' (NR overview)."},{"name":"version","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific document version, e.g. '19.1.0'. Omit to get all available versions.","title":"Version"},"description":"Specific document version, e.g. '19.1.0'. Omit to get all available versions."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SectionSummary"},"title":"Response List Sections Sections Toc Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/images/{doc_number}/{version}/{image_index}":{"get":{"tags":["images"],"summary":"Get Image","description":"Serve an extracted image (PNG) from GCS.","operationId":"get_image_images__doc_number___version___image_index__get","parameters":[{"name":"doc_number","in":"path","required":true,"schema":{"type":"string","title":"Doc Number"}},{"name":"version","in":"path","required":true,"schema":{"type":"string","title":"Version"}},{"name":"image_index","in":"path","required":true,"schema":{"type":"integer","title":"Image Index"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}},"image/png":{}}},"404":{"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"CombinedSearchRequest":{"properties":{"query":{"type":"string","title":"Query","description":"Natural language search query. Searches both text and images simultaneously."},"text_match_count":{"type":"integer","maximum":200.0,"minimum":1.0,"title":"Text Match Count","description":"Text candidates before reranking. Default 30 balances speed and quality.","default":30},"text_match_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Text Match Threshold","description":"Text similarity threshold. Leave at 0 (default) and rely on reranking.","default":0.0},"rerank":{"type":"boolean","title":"Rerank","description":"Rerank text results for better precision. Always leave true.","default":true},"rerank_top_k":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Rerank Top K","description":"Number of text results after reranking. Use 3–5 for focused lookups, 10–20 for research.","default":10},"include_section_text":{"type":"boolean","title":"Include Section Text","description":"Include full parent section text for each text chunk.","default":true},"image_match_count":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Image Match Count","description":"Number of image/diagram results to return alongside text results.","default":5},"image_match_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Image Match Threshold","description":"Image similarity threshold. Default 0 returns best matches.","default":0.0},"filter_release":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Release","description":"Restrict to a 3GPP release. Available: 'Rel-15' or 'Rel-19'. Omit for both."},"filter_doc_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Doc Type","description":"Restrict by document type: 'TS' (Technical Specification) or 'TR' (Technical Report)."},"filter_doc_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Doc Number","description":"Restrict to a specific document, e.g. '38.331', '23.501'. Numeric format only."},"filter_series":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Series","description":"Restrict by series: '38' = NR/5G, '23' = system architecture, '36' = LTE, '33' = security."},"filter_section_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Section Number","description":"Restrict to a section, e.g. '5.3.5'. Only useful with filter_doc_number."}},"type":"object","required":["query"],"title":"CombinedSearchRequest","description":"Request body for combined text + image search."},"CombinedSearchResponse":{"properties":{"query":{"type":"string","title":"Query"},"text_results":{"items":{"$ref":"#/components/schemas/TextResult"},"type":"array","title":"Text Results"},"image_results":{"items":{"$ref":"#/components/schemas/ImageResult"},"type":"array","title":"Image Results"},"text_total":{"type":"integer","title":"Text Total"},"image_total":{"type":"integer","title":"Image Total"},"reranked":{"type":"boolean","title":"Reranked"},"elapsed_ms":{"type":"number","title":"Elapsed Ms"}},"type":"object","required":["query","text_results","image_results","text_total","image_total","reranked","elapsed_ms"],"title":"CombinedSearchResponse","description":"Response from combined search."},"DocumentInfo":{"properties":{"id":{"type":"integer","title":"Id"},"doc_number":{"type":"string","title":"Doc Number"},"doc_type":{"type":"string","title":"Doc Type"},"version":{"type":"string","title":"Version"},"release":{"type":"string","title":"Release"},"series":{"type":"string","title":"Series"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"filename":{"type":"string","title":"Filename"},"total_text_chunks":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Text Chunks"},"total_image_chunks":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Image Chunks"},"status":{"type":"string","title":"Status"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","doc_number","doc_type","version","release","series","filename","status"],"title":"DocumentInfo","description":"Document metadata."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","title":"Status"},"version":{"type":"string","title":"Version"},"models":{"additionalProperties":true,"type":"object","title":"Models"}},"type":"object","required":["status","version","models"],"title":"HealthResponse","description":"Health check response."},"ImageResult":{"properties":{"id":{"type":"integer","title":"Id"},"doc_number":{"type":"string","title":"Doc Number"},"doc_type":{"type":"string","title":"Doc Type"},"version":{"type":"string","title":"Version"},"release":{"type":"string","title":"Release"},"section_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Number"},"caption":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caption"},"context_before":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context Before"},"context_after":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context After"},"image_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Path"},"similarity":{"type":"number","title":"Similarity"}},"type":"object","required":["id","doc_number","doc_type","version","release","similarity"],"title":"ImageResult","description":"A single image search result."},"ImageSearchRequest":{"properties":{"query":{"type":"string","title":"Query","description":"Natural language query describing the diagram, figure, or table you're looking for. E.g. 'protocol stack architecture', 'random access procedure flow chart'."},"match_count":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Match Count","description":"Number of image results to return.","default":10},"match_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Match Threshold","description":"Minimum similarity score. Default 0.3 filters low-quality matches.","default":0.3},"filter_release":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Release","description":"Restrict to a 3GPP release. Available: 'Rel-15' or 'Rel-19'. Omit for both."},"filter_doc_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Doc Number","description":"Restrict to a specific document, e.g. '38.300', '23.501'. Numeric format only."},"filter_series":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Series","description":"Restrict by series: '38' = NR/5G, '23' = system architecture, '36' = LTE, '33' = security."}},"type":"object","required":["query"],"title":"ImageSearchRequest","description":"Request body for image search."},"ImageSearchResponse":{"properties":{"query":{"type":"string","title":"Query"},"results":{"items":{"$ref":"#/components/schemas/ImageResult"},"type":"array","title":"Results"},"total":{"type":"integer","title":"Total"},"elapsed_ms":{"type":"number","title":"Elapsed Ms"}},"type":"object","required":["query","results","total","elapsed_ms"],"title":"ImageSearchResponse","description":"Response from image search."},"SectionResult":{"properties":{"doc_number":{"type":"string","title":"Doc Number"},"version":{"type":"string","title":"Version"},"release":{"type":"string","title":"Release"},"section_number":{"type":"string","title":"Section Number"},"section_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Title"},"heading_level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Heading Level"},"full_text":{"type":"string","title":"Full Text","default":""},"token_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Token Count"},"fragment_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fragment Count"},"parent_section_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Section Number"}},"type":"object","required":["doc_number","version","release","section_number"],"title":"SectionResult","description":"A single section from a document."},"SectionSummary":{"properties":{"doc_number":{"type":"string","title":"Doc Number"},"version":{"type":"string","title":"Version"},"release":{"type":"string","title":"Release"},"section_number":{"type":"string","title":"Section Number"},"section_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Title"},"heading_level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Heading Level"},"token_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Token Count"}},"type":"object","required":["doc_number","version","release","section_number"],"title":"SectionSummary","description":"Lightweight section info for table-of-contents listing."},"TextResult":{"properties":{"id":{"type":"integer","title":"Id"},"doc_number":{"type":"string","title":"Doc Number"},"doc_type":{"type":"string","title":"Doc Type"},"version":{"type":"string","title":"Version"},"release":{"type":"string","title":"Release"},"section_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Number"},"section_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Title"},"content":{"type":"string","title":"Content"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"similarity":{"type":"number","title":"Similarity"},"relevance_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Relevance Score"},"section_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Text"},"section_token_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Section Token Count"}},"type":"object","required":["id","doc_number","doc_type","version","release","content","similarity"],"title":"TextResult","description":"A single text search result."},"TextSearchRequest":{"properties":{"query":{"type":"string","title":"Query","description":"Natural language search query. Be specific — e.g. 'RRC connection reconfiguration procedure' rather than just 'RRC'."},"match_count":{"type":"integer","maximum":200.0,"minimum":1.0,"title":"Match Count","description":"Candidate matches to retrieve before reranking. Higher = slower but more thorough. Default 30 balances speed and quality.","default":30},"match_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Match Threshold","description":"Minimum similarity score. Leave at 0 (default) and rely on reranking for quality filtering.","default":0.0},"rerank":{"type":"boolean","title":"Rerank","description":"Rerank results for higher precision. Always leave true (default) — the reranker dramatically improves result quality.","default":true},"rerank_top_k":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Rerank Top K","description":"Number of final results after reranking. Use 3–5 for focused lookups, 10–20 for broad research.","default":10},"include_section_text":{"type":"boolean","title":"Include Section Text","description":"Include the full parent section text alongside each chunk. Provides richer context but increases response size.","default":true},"filter_release":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Release","description":"Restrict to a 3GPP release. Available values: 'Rel-15' (first 5G NR release) or 'Rel-19' (latest). Omit for both."},"filter_doc_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Doc Type","description":"Restrict by document type: 'TS' (Technical Specification) or 'TR' (Technical Report). Omit for both."},"filter_doc_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Doc Number","description":"Restrict to a specific document, e.g. '38.331' (NR RRC), '23.501' (system architecture), '38.300' (NR overview). Use the numeric format without the 'TS'/'TR' prefix."},"filter_series":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Series","description":"Restrict by 3GPP series number: '38' = NR/5G radio, '23' = system architecture, '24' = signalling, '36' = LTE, '33' = security, '29' = core network."},"filter_section_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Section Number","description":"Restrict to a specific section, e.g. '5.3.5'. Only useful when combined with filter_doc_number."}},"type":"object","required":["query"],"title":"TextSearchRequest","description":"Request body for text search."},"TextSearchResponse":{"properties":{"query":{"type":"string","title":"Query"},"results":{"items":{"$ref":"#/components/schemas/TextResult"},"type":"array","title":"Results"},"total":{"type":"integer","title":"Total"},"reranked":{"type":"boolean","title":"Reranked"},"elapsed_ms":{"type":"number","title":"Elapsed Ms"}},"type":"object","required":["query","results","total","reranked","elapsed_ms"],"title":"TextSearchResponse","description":"Response from text search."},"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"}}}}