{
    "swagger": "2.0",
    "info": {
        "description": "This is a sample server for History API.",
        "title": "History API",
        "termsOfService": "http://swagger.io/terms/",
        "contact": {
            "name": "API Support",
            "url": "http://www.swagger.io/support",
            "email": "support@swagger.io"
        },
        "license": {
            "name": "Apache 2.0",
            "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
        },
        "version": "1.0"
    },
    "host": "localhost:3344",
    "basePath": "/",
    "paths": {
        "/auth/refresh": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get a new access token using the user's current session/refresh token",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Auth"
                ],
                "summary": "Refresh access token",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse"
                        }
                    }
                }
            }
        },
        "/auth/signin": {
            "post": {
                "description": "Authenticate user and return token data",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Auth"
                ],
                "summary": "Sign in an existing user",
                "parameters": [
                    {
                        "description": "Sign In request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/history-api_internal_dtos_request.SignInDto"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse"
                        }
                    }
                }
            }
        },
        "/auth/signup": {
            "post": {
                "description": "Create a new user account",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Auth"
                ],
                "summary": "Sign up a new user",
                "parameters": [
                    {
                        "description": "Sign Up request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/history-api_internal_dtos_request.SignUpDto"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse"
                        }
                    }
                }
            }
        },
        "/tiles/metadata": {
            "get": {
                "description": "Retrieve map metadata",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Tile"
                ],
                "summary": "Get tile metadata",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse"
                        }
                    }
                }
            }
        },
        "/tiles/{z}/{x}/{y}": {
            "get": {
                "description": "Fetch vector or raster map tile data by Z, X, Y coordinates",
                "produces": [
                    "application/octet-stream"
                ],
                "tags": [
                    "Tile"
                ],
                "summary": "Get a map tile",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Zoom level (0-22)",
                        "name": "z",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "X coordinate",
                        "name": "x",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Y coordinate",
                        "name": "y",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "file"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "history-api_internal_dtos_request.SignInDto": {
            "type": "object",
            "required": [
                "email",
                "password"
            ],
            "properties": {
                "email": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 5
                },
                "password": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 8
                }
            }
        },
        "history-api_internal_dtos_request.SignUpDto": {
            "type": "object",
            "required": [
                "display_name",
                "email",
                "password"
            ],
            "properties": {
                "display_name": {
                    "type": "string",
                    "maxLength": 50,
                    "minLength": 2
                },
                "email": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 5
                },
                "password": {
                    "type": "string",
                    "maxLength": 64,
                    "minLength": 8
                }
            }
        },
        "history-api_internal_dtos_response.CommonResponse": {
            "type": "object",
            "properties": {
                "data": {},
                "message": {
                    "type": "string"
                },
                "status": {
                    "type": "boolean"
                }
            }
        }
    },
    "securityDefinitions": {
        "BearerAuth": {
            "description": "Type \"Bearer \" followed by a space and JWT token.",
            "type": "apiKey",
            "name": "Authorization",
            "in": "header"
        }
    }
}