{
    "openapi": "3.1.0",
    "info": {
        "version": "9.6.1",
        "title": "@fastify/swagger"
    },
    "components": {
        "schemas": {}
    },
    "paths": {
        "/api/user/allowGuestMessage": {
            "post": {
                "operationId": "allowGuestMessage",
                "responses": {
                    "200": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "kind",
                                        "msg"
                                    ],
                                    "properties": {
                                        "kind": {
                                            "enum": [
                                                "success"
                                            ]
                                        },
                                        "msg": {
                                            "enum": [
                                                "guestMessage.success"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "object",
                                            "required": [
                                                "kind",
                                                "msg"
                                            ],
                                            "properties": {
                                                "kind": {
                                                    "enum": [
                                                        "notLoggedIn"
                                                    ]
                                                },
                                                "msg": {
                                                    "enum": [
                                                        "auth.noCookie",
                                                        "auth.invalidKind",
                                                        "auth.noUser",
                                                        "auth.invalid"
                                                    ]
                                                }
                                            }
                                        },
                                        {
                                            "type": "object",
                                            "required": [
                                                "kind",
                                                "msg"
                                            ],
                                            "properties": {
                                                "kind": {
                                                    "enum": [
                                                        "notLoggedIn"
                                                    ]
                                                },
                                                "msg": {
                                                    "enum": [
                                                        "auth.noCookie",
                                                        "auth.invalidKind",
                                                        "auth.noUser",
                                                        "auth.invalid"
                                                    ]
                                                }
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "kind",
                                        "msg"
                                    ],
                                    "properties": {
                                        "kind": {
                                            "enum": [
                                                "failure"
                                            ]
                                        },
                                        "msg": {
                                            "enum": [
                                                "guestMessage.failure.notLoggedIn"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/user/denyGuestMessage": {
            "post": {
                "operationId": "denyGuestMessage",
                "responses": {
                    "200": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "kind",
                                        "msg"
                                    ],
                                    "properties": {
                                        "kind": {
                                            "enum": [
                                                "success"
                                            ]
                                        },
                                        "msg": {
                                            "enum": [
                                                "guestMessage.success"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "object",
                                            "required": [
                                                "kind",
                                                "msg"
                                            ],
                                            "properties": {
                                                "kind": {
                                                    "enum": [
                                                        "notLoggedIn"
                                                    ]
                                                },
                                                "msg": {
                                                    "enum": [
                                                        "auth.noCookie",
                                                        "auth.invalidKind",
                                                        "auth.noUser",
                                                        "auth.invalid"
                                                    ]
                                                }
                                            }
                                        },
                                        {
                                            "type": "object",
                                            "required": [
                                                "kind",
                                                "msg"
                                            ],
                                            "properties": {
                                                "kind": {
                                                    "enum": [
                                                        "notLoggedIn"
                                                    ]
                                                },
                                                "msg": {
                                                    "enum": [
                                                        "auth.noCookie",
                                                        "auth.invalidKind",
                                                        "auth.noUser",
                                                        "auth.invalid"
                                                    ]
                                                }
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "kind",
                                        "msg"
                                    ],
                                    "properties": {
                                        "kind": {
                                            "enum": [
                                                "failure"
                                            ]
                                        },
                                        "msg": {
                                            "enum": [
                                                "guestMessage.failure.notLoggedIn"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/user/changeDesc": {
            "post": {
                "operationId": "changeDesc",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "desc"
                                ],
                                "properties": {
                                    "desc": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    },
                    "required": true
                },
                "responses": {
                    "200": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "kind",
                                        "msg"
                                    ],
                                    "properties": {
                                        "kind": {
                                            "enum": [
                                                "success"
                                            ]
                                        },
                                        "msg": {
                                            "enum": [
                                                "changedesc.success"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "kind",
                                        "msg"
                                    ],
                                    "properties": {
                                        "kind": {
                                            "enum": [
                                                "failure"
                                            ]
                                        },
                                        "msg": {
                                            "enum": [
                                                "changedesc.failure.descTooLong"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "kind",
                                        "msg"
                                    ],
                                    "properties": {
                                        "kind": {
                                            "enum": [
                                                "notLoggedIn"
                                            ]
                                        },
                                        "msg": {
                                            "enum": [
                                                "auth.noCookie",
                                                "auth.invalidKind",
                                                "auth.noUser",
                                                "auth.invalid"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "kind",
                                        "msg"
                                    ],
                                    "properties": {
                                        "kind": {
                                            "enum": [
                                                "failure"
                                            ]
                                        },
                                        "msg": {
                                            "enum": [
                                                "changedesc.failure.notLoggedIn"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/user/changeDisplayName": {
            "put": {
                "operationId": "changeDisplayName",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "name"
                                ],
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "New Display Name"
                                    }
                                }
                            }
                        }
                    },
                    "required": true
                },
                "responses": {
                    "200": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "kind",
                                        "msg"
                                    ],
                                    "properties": {
                                        "kind": {
                                            "enum": [
                                                "success"
                                            ]
                                        },
                                        "msg": {
                                            "enum": [
                                                "changeDisplayName.success"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "kind",
                                        "msg"
                                    ],
                                    "properties": {
                                        "kind": {
                                            "enum": [
                                                "failure"
                                            ]
                                        },
                                        "msg": {
                                            "enum": [
                                                "changeDisplayName.alreadyExist",
                                                "changeDisplayName.invalid"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "kind",
                                        "msg"
                                    ],
                                    "properties": {
                                        "kind": {
                                            "enum": [
                                                "notLoggedIn"
                                            ]
                                        },
                                        "msg": {
                                            "enum": [
                                                "auth.noCookie",
                                                "auth.invalidKind",
                                                "auth.noUser",
                                                "auth.invalid"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/user/info/{user}": {
            "get": {
                "operationId": "getUser",
                "parameters": [
                    {
                        "schema": {
                            "anyOf": [
                                {
                                    "enum": [
                                        "me"
                                    ],
                                    "description": "the current logged in user"
                                },
                                {
                                    "type": "string",
                                    "format": "uuid",
                                    "description": "A user uuid"
                                }
                            ]
                        },
                        "in": "path",
                        "name": "user",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "kind",
                                        "msg",
                                        "payload"
                                    ],
                                    "properties": {
                                        "kind": {
                                            "enum": [
                                                "success"
                                            ]
                                        },
                                        "msg": {
                                            "enum": [
                                                "userinfo.success"
                                            ]
                                        },
                                        "payload": {
                                            "type": "object",
                                            "required": [
                                                "name",
                                                "id",
                                                "guest"
                                            ],
                                            "properties": {
                                                "name": {
                                                    "type": "string"
                                                },
                                                "id": {
                                                    "type": "string"
                                                },
                                                "guest": {
                                                    "type": "boolean"
                                                },
                                                "selfInfo": {
                                                    "type": "object",
                                                    "properties": {
                                                        "login_name": {
                                                            "type": "string"
                                                        },
                                                        "provider_id": {
                                                            "type": "string"
                                                        },
                                                        "provider_user": {
                                                            "type": "string"
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "object",
                                            "required": [
                                                "kind",
                                                "msg"
                                            ],
                                            "properties": {
                                                "kind": {
                                                    "enum": [
                                                        "notLoggedIn"
                                                    ]
                                                },
                                                "msg": {
                                                    "enum": [
                                                        "auth.noCookie",
                                                        "auth.invalidKind",
                                                        "auth.noUser",
                                                        "auth.invalid"
                                                    ]
                                                }
                                            }
                                        },
                                        {
                                            "type": "object",
                                            "required": [
                                                "kind",
                                                "msg"
                                            ],
                                            "properties": {
                                                "kind": {
                                                    "enum": [
                                                        "notLoggedIn"
                                                    ]
                                                },
                                                "msg": {
                                                    "enum": [
                                                        "auth.noCookie",
                                                        "auth.invalidKind",
                                                        "auth.noUser",
                                                        "auth.invalid"
                                                    ]
                                                }
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "kind",
                                        "msg"
                                    ],
                                    "properties": {
                                        "kind": {
                                            "enum": [
                                                "failure"
                                            ]
                                        },
                                        "msg": {
                                            "enum": [
                                                "userinfo.failure.notLoggedIn"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Default Response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "required": [
                                        "kind",
                                        "msg"
                                    ],
                                    "properties": {
                                        "kind": {
                                            "enum": [
                                                "failure"
                                            ]
                                        },
                                        "msg": {
                                            "enum": [
                                                "userinfo.failure.unknownUser"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "servers": [
        {
            "url": "https://local.maix.me:8888",
            "description": "direct from docker"
        },
        {
            "url": "https://local.maix.me:8000",
            "description": "using fnginx"
        }
    ]
}
