{
    "swagger": "2.0",
    "info": {
        "description": "This is a sample server celler server.",
        "title": "ApiDoc",
        "termsOfService": "http://swagger.io/terms/",
        "contact": {
            "name": "UserName",
            "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:8080",
    "basePath": "/t/{tenant_code}/v1",
    "paths": {
        "/super/v1/auth/login": {
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Super"
                ],
                "parameters": [
                    {
                        "description": "form",
                        "name": "form",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/dto.LoginForm"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "成功",
                        "schema": {
                            "$ref": "#/definitions/dto.LoginResponse"
                        }
                    }
                }
            }
        },
        "/super/v1/tenants": {
            "get": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Super"
                ],
                "summary": "租户列表",
                "parameters": [
                    {
                        "type": "string",
                        "name": "asc",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "name": "desc",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "name": "name",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "name": "page",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/requests.Pager"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "items": {
                                            "$ref": "#/definitions/dto.TenantItem"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/super/v1/tenants/{tenantID}": {
            "patch": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Super"
                ],
                "summary": "更新过期时间",
                "parameters": [
                    {
                        "type": "integer",
                        "format": "int64",
                        "description": "TenantID",
                        "name": "tenantID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Form",
                        "name": "form",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/dto.TenantExpireUpdateForm"
                        }
                    }
                ],
                "responses": {}
            }
        },
        "/v1/medias/{id}": {
            "post": {
                "description": "Test",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Test"
                ],
                "summary": "Test",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "年龄",
                        "name": "age",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "名称",
                        "name": "name",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "name": "page",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "成功",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/requests.Pager"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "list": {
                                            "$ref": "#/definitions/v1.ResponseItem"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "consts.Role": {
            "type": "string",
            "enum": [
                "user",
                "super_admin"
            ],
            "x-enum-varnames": [
                "RoleUser",
                "RoleSuperAdmin"
            ]
        },
        "consts.TenantStatus": {
            "type": "string",
            "enum": [
                "pending_verify",
                "verified",
                "banned"
            ],
            "x-enum-varnames": [
                "TenantStatusPendingVerify",
                "TenantStatusVerified",
                "TenantStatusBanned"
            ]
        },
        "consts.UserStatus": {
            "type": "string",
            "enum": [
                "pending_verify",
                "verified",
                "banned"
            ],
            "x-enum-varnames": [
                "UserStatusPendingVerify",
                "UserStatusVerified",
                "UserStatusBanned"
            ]
        },
        "dto.LoginForm": {
            "type": "object",
            "properties": {
                "password": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "dto.LoginResponse": {
            "type": "object",
            "properties": {
                "token": {
                    "type": "string"
                }
            }
        },
        "dto.TenantExpireUpdateForm": {
            "type": "object",
            "required": [
                "duration"
            ],
            "properties": {
                "duration": {
                    "type": "integer",
                    "enum": [
                        7,
                        30,
                        90,
                        180,
                        365
                    ]
                }
            }
        },
        "dto.TenantItem": {
            "type": "object",
            "properties": {
                "code": {
                    "type": "string"
                },
                "config": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                },
                "created_at": {
                    "type": "string"
                },
                "expired_at": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "status": {
                    "$ref": "#/definitions/consts.TenantStatus"
                },
                "updated_at": {
                    "type": "string"
                },
                "userBalance": {
                    "type": "integer",
                    "format": "int64"
                },
                "userCount": {
                    "type": "integer",
                    "format": "int64"
                },
                "user_id": {
                    "type": "integer"
                },
                "users": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/models.User"
                    }
                },
                "uuid": {
                    "type": "string"
                }
            }
        },
        "gorm.DeletedAt": {
            "type": "object",
            "properties": {
                "time": {
                    "type": "string"
                },
                "valid": {
                    "description": "Valid is true if Time is not NULL",
                    "type": "boolean"
                }
            }
        },
        "models.Tenant": {
            "type": "object",
            "properties": {
                "code": {
                    "type": "string"
                },
                "config": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                },
                "created_at": {
                    "type": "string"
                },
                "expired_at": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "status": {
                    "$ref": "#/definitions/consts.TenantStatus"
                },
                "updated_at": {
                    "type": "string"
                },
                "user_id": {
                    "type": "integer"
                },
                "users": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/models.User"
                    }
                },
                "uuid": {
                    "type": "string"
                }
            }
        },
        "models.User": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "deleted_at": {
                    "$ref": "#/definitions/gorm.DeletedAt"
                },
                "id": {
                    "type": "integer"
                },
                "metas": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                },
                "owned": {
                    "$ref": "#/definitions/models.Tenant"
                },
                "password": {
                    "type": "string"
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/consts.Role"
                    }
                },
                "status": {
                    "$ref": "#/definitions/consts.UserStatus"
                },
                "tenants": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/models.Tenant"
                    }
                },
                "updated_at": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                },
                "verified_at": {
                    "type": "string"
                }
            }
        },
        "requests.Pager": {
            "type": "object",
            "properties": {
                "items": {},
                "limit": {
                    "type": "integer"
                },
                "page": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "v1.ResponseItem": {
            "type": "object"
        }
    },
    "securityDefinitions": {
        "BasicAuth": {
            "type": "basic"
        }
    },
    "externalDocs": {
        "description": "OpenAPI",
        "url": "https://swagger.io/resources/open-api/"
    }
}