{
    "swagger": "2.0",
    "info": {
        "contact": {}
    },
    "paths": {
        "/api/engines": {
            "get": {
                "description": "Lists available Engines.",
                "summary": "List engines",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/image": {
            "post": {
                "description": "When engine is set to all, it will return an array of libmozhi.LangOut.",
                "summary": "Translate an image",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Engine name",
                        "name": "engine",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Source language",
                        "name": "from",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Target language",
                        "name": "to",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "PNG image in base64 format",
                        "name": "image",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/libmozhi.ImgOut"
                        }
                    }
                }
            }
        },
        "/api/source_languages": {
            "get": {
                "summary": "Show list of available source languages for engine",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Engine name",
                        "name": "engine",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/libmozhi.List"
                        }
                    }
                }
            }
        },
        "/api/target_languages": {
            "get": {
                "summary": "Show list of available target languages for engine",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Engine name",
                        "name": "engine",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/libmozhi.List"
                        }
                    }
                }
            }
        },
        "/api/translate": {
            "get": {
                "description": "When engine is set to all, it will return an array of libmozhi.LangOut.",
                "summary": "Translate text",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Engine name",
                        "name": "engine",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Source language",
                        "name": "from",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Target language",
                        "name": "to",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Text being translated",
                        "name": "text",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/libmozhi.LangOut"
                        }
                    }
                }
            }
        },
        "/api/tts": {
            "get": {
                "summary": "Get Text-To-Speech for specified language using specified engine",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Engine name",
                        "name": "engine",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Language being TTS'd",
                        "name": "lang",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Text being TTS'd",
                        "name": "text",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {}
            }
        }
    },
    "definitions": {
        "libmozhi.ImgOut": {
            "type": "object",
            "properties": {
                "sourceB64": {
                    "type": "string"
                },
                "sourceLang": {
                    "type": "string"
                },
                "sourceTextParsed": {
                    "type": "string"
                },
                "targetLang": {
                    "type": "string"
                },
                "translatedImgB64": {
                    "type": "string"
                },
                "translatedTextParsed": {
                    "type": "string"
                }
            }
        },
        "libmozhi.LangOut": {
            "type": "object",
            "properties": {
                "detected": {
                    "type": "string"
                },
                "engine": {
                    "type": "string"
                },
                "source_language": {
                    "type": "string"
                },
                "source_transliteration": {
                    "type": "string"
                },
                "target_language": {
                    "type": "string"
                },
                "target_transliteration": {
                    "type": "string"
                },
                "translated-text": {
                    "type": "string"
                },
                "word_choices": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/libmozhi.WordChoices"
                    }
                }
            }
        },
        "libmozhi.List": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "libmozhi.WordChoices": {
            "type": "object",
            "properties": {
                "examples_source": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "examples_target": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "word": {
                    "type": "string"
                }
            }
        }
    }
}