{"openapi":"3.1.0","info":{"title":"EUROSPACE AI Quote API","version":"1.0","description":"Read-only public API for translation-service discovery, preliminary price calculation and source retrieval. Current prices come from the same EUROSPACE site_prices source used by the public website. No personal data is required and this API does not create orders."},"externalDocs":{"description":"Human-readable EUROSPACE AI API and MCP documentation","url":"https://xn--80adahda1bpqcent.xn--p1ai/ai/"},"servers":[{"url":"https://xn--80adahda1bpqcent.xn--p1ai","description":"Current EUROSPACE public site"}],"tags":[{"name":"translation","description":"Read-only EUROSPACE translation services and quotes."}],"x-eurospace-ai":{"readOnly":true,"priceSource":"site_prices","documentation":"https://xn--80adahda1bpqcent.xn--p1ai/ai/","mcpDiscovery":"https://xn--80adahda1bpqcent.xn--p1ai/.well-known/mcp","mcpEndpoint":"https://xn--80adahda1bpqcent.xn--p1ai/ai/mcp","languageCatalog":"https://xn--80adahda1bpqcent.xn--p1ai/api/public/ai/v1/languages","localizedContent":true,"coreIndexLanguages":["ru","en","hi","tg","ky"]},"paths":{"/api/public/ai/v1/capabilities":{"get":{"operationId":"getCapabilities","summary":"Describe EUROSPACE AI capabilities","description":"Returns the public read-only AI interfaces, regions, price source and machine-discovery endpoints.","tags":["translation"],"responses":{"200":{"description":"Capabilities"}}}},"/api/public/ai/v1/languages":{"get":{"operationId":"listSupportedLanguages","summary":"List EUROSPACE website and AI localization languages","description":"Returns all supported language codes, countries, RTL flags, core index status and localized URL patterns.","tags":["translation"],"responses":{"200":{"description":"Supported languages"}}}},"/api/public/ai/v1/services":{"get":{"operationId":"listTranslationServices","summary":"List current translation services and starting prices","tags":["translation"],"parameters":[{"name":"region","in":"query","schema":{"type":"string","enum":["ekb","msk"]}},{"name":"q","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Services"}}}},"/api/public/ai/v1/quote":{"post":{"operationId":"calculateTranslationQuote","summary":"Calculate a preliminary EUROSPACE translation quote","description":"Use this operation when a user asks how much a translation service costs. The calculation is deterministic and uses current public EUROSPACE site_prices records. It is preliminary, read-only, requires no personal data and never creates an order.","tags":["translation"],"externalDocs":{"description":"EUROSPACE AI API documentation","url":"https://xn--80adahda1bpqcent.xn--p1ai/ai/"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"region":{"type":"string","enum":["ekb","msk"]},"service":{"type":"string"},"document_type":{"type":["string","null"]},"source_language":{"type":["string","null"]},"target_language":{"type":["string","null"]},"quantity":{"type":"integer","minimum":1,"maximum":100},"notarization":{"type":"boolean"},"apostille":{"type":"boolean"},"urgency":{"type":"string"}}}}}},"responses":{"200":{"description":"Preliminary quote with price components, RUB total, source records and review flag."}}}},"/api/public/ai/v1/search":{"get":{"operationId":"searchEurospace","summary":"Search public EUROSPACE pages and current prices","tags":["translation"],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"region","in":"query","schema":{"type":"string","enum":["ekb","msk"]}},{"name":"language","in":"query","description":"Language code requested for localized result URLs. EUROSPACE does not call a translation model at runtime; AI callers should submit a query they already understand.","schema":{"type":"string"}}],"responses":{"200":{"description":"Search results"}}}},"/api/public/ai/v1/fetch":{"get":{"operationId":"fetchEurospaceDocument","summary":"Fetch a public page or price record by search result ID","tags":["translation"],"parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Document"},"404":{"description":"Not found"}}}}}}