<?php
require('../db.php');
require("../function/function.php");


// 変数の初期化
$datetime = array();
$user_name = null;
$message = array();
$message_data = null;
$error_message = array();
$pdo = null;
$stmt = null;
$res = null;
$option = null;

session_name('uwuzu_s_id');
session_set_cookie_params([
    'lifetime' => 0,
    'path' => '/',
    'domain' => '',
    'secure' => true,
    'httponly' => true,
    'samesite' => 'Lax'
]);
session_start();
session_regenerate_id(true);

// データベースに接続
try {

    $option = array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_MULTI_STATEMENTS => false
    );
    $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option);

} catch(PDOException $e) {

    // 接続エラーのときエラー内容を取得する
    $error_message[] = $e->getMessage();
}

//ログイン認証---------------------------------------------------
blockedIP($_SERVER['REMOTE_ADDR']);
$is_login = uwuzuUserLogin($_SESSION, $_COOKIE, $_SERVER['REMOTE_ADDR'], "user");
if($is_login === false){
	header("Location: ../index.php");
	exit;
}else{
	$userid = safetext($is_login['userid']);
	$username = safetext($is_login['username']);
	$loginid = safetext($is_login["loginid"]);
	$role = safetext($is_login["role"]);
	$sacinfo = safetext($is_login["sacinfo"]);
	$myblocklist = safetext($is_login["blocklist"]);
	$myfollowlist = safetext($is_login["follow"]);
	$is_Admin = safetext($is_login["admin"]);
}

$protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https://' : 'http://';
$domain = $_SERVER['HTTP_HOST'];
$port = ":" . $_SERVER['REMOTE_PORT'];
if ($protocol === "https://" && $port === 443) {
    $port = "";
} elseif ($protocol === "http://" && $port === 80) {
    $port = "";
}
$origin = $protocol . $domain . $port;

$mojisizefile = "../server/textsize.txt";
$max_ueuse_length = (int)safetext(file_get_contents($mojisizefile));

require('../logout/logout.php');
?>

openapi: 3.1.1
info:
  title: uwuzu API Docs
  version: 自称v1.6.5 Hapuego
  license:
    name: UPUL
    url: https://docs.uwuzu.com/docs/aboutuwuzu/upul
  contact:
    name: uwuzu開発部
    url: https://docs.uwuzu.com/docs/others/contact
    email: daichimarukana@gmail.com
  description: |
    # 概要
    ## 注意事項など
    > [!CAUTION]
    > v1.3.4からの仕様変更されたAPI(bot-api)はv1.4.0にて廃止されました。
    
    > [!WARNING]
    > 必ずサンプルコード及びタイトルにあるURLに従って使用してください！  
    > 少しでも異なるURLにするとエラーなど正常に使用できないおそれがございます。
    
    ## APIトークン
    ### 概要
    uwuzu APIではほぼ全てのエンドポイントでAPIトークンが必要です。
    ### 取得方法
    #### 公式クライアント
    https://<?php echo safetext($origin); ?>/others の最下部にある`APIトークンの発行`を選択してください。  
    クライアント名と権限を入力し`次へ`を選択します。  
    仕様上はユーザー認可のページを発行する仕組みです。  
    そのためユーザー認可と同じ確認ページが表示されます。  
    `許可`を選択することでAPIトークンを取得できます。  
    > [!WARNING]
    > このAPIトークンが表示されるのは1度きりです。
    > 紛失した場合は不正利用防止のためトークンを無効化し再生成してください。
    #### ユーザー認可
    ユーザー認可によるAPIトークンの取得が可能です。  
    [`/api/auth`](./#tag/auth/get/auth)にユーザーをリダイレクトさせることで確認ページを表示できます。  
    許可がされた後、[`/api/token/get`](./#tag/token/get/token/get)に
    [`/api/auth`](./#tag/token/get/token/get)で使用したセッションIDと
    同じセッションIDを使用しリクエストすることでAPIトークンが取得できます。  
    また、[`/api/token/inquiry`](./#tag/token/get/token/inquiry)で
    APIトークンを使用することで付与された権限を確認できます。
    > [!WARNING]
    > APIトークンが取得できるのは1度きりです。
    > 紛失した場合は不正利用防止のためトークンを無効化し再生成してください。
    ### 認証方法
    Bearer認証が使用されていますが従来の方法でも可能です。
    #### Bearer認証(推奨)
    ヘッダーに`Authorization`を含めてください。  
    GET・POSTどちらでも使用できます。  
    内容は`Bearer [APIトークン]`です。  
    JavaScriptの例：
    ```javascript
    fetch('https://<?php echo safetext($origin); ?>/api/me/', {
      method: 'POST',
      headers: {
        Authorization: 'Bearer abcdefg'
      },
      credentials: 'omit'
    });
    ```
    #### 従来の方法(body・URLパラメータ)
    POSTの場合はbody、GETの場合はURLパラメータにAPIトークンを含めてください。  
    JavaScriptの例：
    ```javascript
    // GET
    fetch('<?php echo safetext($origin); ?>/api/me/?token=abcdefg');
    
    // POST
    fetch('<?php echo safetext($origin); ?>/api/me/', {
      method: 'POST',
      body: JSON.stringify({
        token: 'abcdefg'
      })
    });
    ```
    
    ## メディアの添付
    ### 概要
    一部のエンドポイントではメディアを添付することができます。
    ### 注意
    これはGETのURLパラメータには非対応であり、
    POSTのbodyにのみ使用できます。  
    また、Base64 EncodeはBase64 URLではないためMIMEタイプ等の記述は不要で、
    Base64 URLを使用することはできません。  
    動画、画像どちらにおいてもEXIFが削除されます。
    そして、画像においてはアップロードされた全ての画像が`.webp`に変換されます。
    ### 対応MIMEタイプ
    対応するMIMEタイプは以下の通りです。
    #### 画像
    - `image/gif`
    - `image/jpeg`
    - `image/png`
    - `image/webp`
    - `image/bmp`
    #### 動画
    - `video/mpeg`
    - `video/mp4`
    - `video/webm`
    - `video/x-msvideo`

servers:
  - url: https://<?php echo safetext($origin); ?>/api

security:
  - bearerAuth: []

paths:
  /serverinfo-api:
    summary: /serverinfo-api
    get:
      $ref: "#/components/pathItems/ServerInfoAPI"
    post:
      $ref: "#/components/pathItems/ServerInfoAPI"
  /me/:
    summary: /me/
    get:
      $ref: "#/components/pathItems/MeAPI"
    post:
      $ref: "#/components/pathItems/MeAPI"
  /me/notification/:
    summary: /me/notification/
    get:
      tags:
        - me
        - notification
      description: |
        自分宛の通知を取得できます。
        トークンのみ指定の場合直近25件の通知を取得します。
      operationId: me/notification
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/me/notification/index.php
      security:
        - bearerAuth: []
      parameters:
        - page:
          $ref: "#/components/parameters/page"
        - limit:
          $ref: "#/components/parameters/limit"
      responses:
        200:
          $ref: "#/components/responses/NotificationAPI"
        400:
          $ref: "#/components/responses/APIAuthFailed"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - notification_not_found
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
    post:
      tags:
        - me
        - notification
      description: |
        自分宛の通知を取得できます。
        トークンのみ指定の場合直近25件の通知を取得します。
      operationId: me/notification
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/me/notification/index.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                page:
                  $ref: "#/components/schemas/Page"
                limit:
                  $ref: "#/components/schemas/Limit"
      responses:
        200:
          $ref: "#/components/responses/NotificationAPI"
        400:
          $ref: "#/components/responses/APIAuthFailed"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - notification_not_found
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
  /me/notification/read:
    summary: /me/notification/read
    get:
      $ref: "#/components/pathItems/NotificationRead"
    post:
      $ref: "#/components/pathItems/NotificationRead"
  /me/settings/:
    summary: /me/settings/
    get:
      tags:
        - me
        - settings
      description: |
        重要な情報以外の自分のアカウント設定を変更できます。  
        オプションパラメータをどれか一つ以上含めてください。
      operationId: me/settings
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/me/settings/index.php
      security:
        - bearerAuth: []
      parameters:
        - name: username
          in: query
          schema:
            title: ユーザー名
            type: string
            maximum: 50
            example: あどみん
        - name: profile
          in: query
          schema:
            title: プロフィール
            type: string
            maximum: 1024
            example: あどみんです！
      responses:
        200:
          $ref: "#/components/responses/SuccessOnly"
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - 表示名を入力してください。(USERNAME_INPUT_PLEASE)
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
        413:
          $ref: "#/components/responses/SettingsCountOver"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    $ref: "#/components/schemas/UpdateFailed"
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
    post:
      tags:
        - me
        - settings
      description: |
        重要な情報以外の自分のアカウント設定を変更できます。  
        オプションパラメータをどれか一つ以上含めてください。
      operationId: me/settings
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/me/settings/index.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  title: ユーザー名
                  type: string
                  maximum: 50
                  example: あどみん
                profile:
                  title: プロフィール
                  type: string
                  maximum: 1024
                  example: あどみんです！
                icon:
                  title: アイコン画像
                  type: string
                  format: Base64 Encode Image
                  example: Base64 Data
                header:
                  title: ヘッダー画像
                  type: string
                  format: Base64 Encode Image
                  example: Base64 Data
      responses:
        200:
          $ref: "#/components/responses/SuccessOnly"
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - 使用できない画像形式です。(FILE_UPLOAD_DEKINAKATTA)
                          - 表示名を入力してください。(USERNAME_INPUT_PLEASE)
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
        413:
          $ref: "#/components/responses/SettingsCountOver"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - ERROR
                          - アップロード失敗！(1)エラーコード：FILE_DEKASUGUI_PHP_INI_KAKUNIN
                          - アップロード失敗！(1)エラーコード：FILE_DEKASUGUI_HTML_KAKUNIN
                          - アップロード失敗！(1)エラーコード：FILE_SUKOSHIDAKE_UPLOAD
                          - アップロード失敗！(1)エラーコード：FILE_UPLOAD_DEKINAKATTA
                          - アップロード失敗！(1)エラーコード：TMP_FOLDER_NAI
                          - アップロード失敗！(1)エラーコード：FILE_KAKIKOMI_SIPPAI
                          - アップロード失敗！(1)エラーコード：PHPINFO()_KAKUNIN
                          - アップロード失敗！(1)エラーコード：TMP_FILE_NAI
                          - アップロード失敗！(1)エラーコード：SAVE_FOLDER_KAKIKOMI_KENNAI
                          - アップロード失敗！(1)エラーコード：MOVE_UPLOAD_FILE_SIPPAI
                          - アップロード失敗！(1)エラーコード： S3ERROR
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - ERROR
                          - アップロード失敗！(2)エラーコード：FILE_DEKASUGUI_PHP_INI_KAKUNIN
                          - アップロード失敗！(2)エラーコード：FILE_DEKASUGUI_HTML_KAKUNIN
                          - アップロード失敗！(2)エラーコード：FILE_SUKOSHIDAKE_UPLOAD
                          - アップロード失敗！(2)エラーコード：FILE_UPLOAD_DEKINAKATTA
                          - アップロード失敗！(2)エラーコード：TMP_FOLDER_NAI
                          - アップロード失敗！(2)エラーコード：FILE_KAKIKOMI_SIPPAI
                          - アップロード失敗！(2)エラーコード：PHPINFO()_KAKUNIN
                          - アップロード失敗！(2)エラーコード：TMP_FILE_NAI
                          - アップロード失敗！(2)エラーコード：SAVE_FOLDER_KAKIKOMI_KENNAI
                          - アップロード失敗！(2)エラーコード：MOVE_UPLOAD_FILE_SIPPAI
                          - アップロード失敗！(2)エラーコード： S3ERROR
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
                  - type: object
                    properties:
                      error_code:
                        $ref: "#/components/schemas/UpdateFailed"
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
  /users/:
    summary: /users/
    get:
      tags:
        - users
      description: 自分以外のユーザー情報を取得できます。
      operationId: users
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/users/index.php
      security:
        - bearerAuth: []
      parameters:
        - userid:
          $ref: "#/components/parameters/useridRequired"
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
    post:
      tags:
        - users
      description: 自分以外のユーザー情報を取得できます。
      operationId: users
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/users/index.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                userid:
                  $ref: "#/components/schemas/UserID"
              required:
                - userid
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
  /users/follow:
    summary: /users/follow
    get:
      tags:
        - users
        - follow
      description: 自分以外のユーザーをフォローできます。
      operationId: users/follow
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/users/follow.php
      security:
        - bearerAuth: []
      parameters:
        - name: userid
          $ref: "#/components/parameters/useridRequired"
      responses:
        200:
          $ref: "#/components/responses/FollowSuccess"
        400:
          $ref: "#/components/responses/FollowBadReq"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          $ref: "#/components/responses/FollowInternalServerError"
    post:
      tags:
        - users
        - follow
      description: 自分以外のユーザーをフォローできます。
      operationId: users/follow
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/users/follow.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                userid:
                  $ref: "#/components/schemas/UserID"
              required:
                - userid
      responses:
        200:
          $ref: "#/components/responses/FollowSuccess"
        400:
          $ref: "#/components/responses/FollowBadReq"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          $ref: "#/components/responses/FollowInternalServerError"
  /users/unfollow:
    summary: /users/unfollow
    get:
      tags:
        - users
        - follow
      description: 自分以外のユーザーのフォローを解除できます。
      operationId: users/unfollow
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/users/unfollow.php
      security:
        - bearerAuth: []
      parameters:
        - name: userid
          $ref: "#/components/parameters/useridRequired"
      responses:
        200:
          $ref: "#/components/responses/FollowSuccess"
        400:
          $ref: "#/components/responses/FollowBadReq"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          $ref: "#/components/responses/FollowInternalServerError"
    post:
      tags:
        - users
        - follow
      description:  自分以外のユーザーのフォローを解除できます。
      operationId: users/unfollow
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/users/unfollow.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                userid:
                  $ref: "#/components/schemas/UserID"
              required:
                - userid
      responses:
        200:
          $ref: "#/components/responses/FollowSuccess"
        400:
          $ref: "#/components/responses/FollowBadReq"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          $ref: "#/components/responses/FollowInternalServerError"
  /ueuse/:
    summary: /ueuse/
    get:
      tags:
        - ueuse
      description: |
        トークンのみ指定の場合直近25件のユーズを取得します。
      operationId: ueuse
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/index.php
      security:
        - bearerAuth: []
      parameters:
        - page:
          $ref: "#/components/parameters/page"
        - limit:
          $ref: "#/components/parameters/limit"
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  "0":
                    $ref: "#/components/schemas/ueuse"
                  "1":
                    $ref: "#/components/schemas/ueuse"
                  success:
                    $ref: "#/components/schemas/Success"
                required:
                  - "0"
                  - "1"
                  - success
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/APIAuthFailed"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - ueuse_not_found
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
    post:
      tags:
        - ueuse
      description: |
        トークンのみ指定の場合直近25件のユーズを取得します。
      operationId: ueuse
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/index.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                page:
                  $ref: "#/components/schemas/Page"
                limit:
                  $ref: "#/components/schemas/Limit"
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  "0":
                    $ref: "#/components/schemas/ueuse"
                  "1":
                    $ref: "#/components/schemas/ueuse"
                  success:
                    $ref: "#/components/schemas/Success"
                required:
                  - "0"
                  - "1"
                  - success
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/APIAuthFailed"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - ueuse_not_found
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
  /ueuse/get:
    summary: /ueuse/get
    get:
      tags:
        - ueuse
      description: 特定の投稿を一つだけ取得します。(単一の投稿を取得します。)
      operationId: ueuse/get
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/get.php
      security:
        - bearerAuth: []
      parameters:
        - uniqid:
          $ref: "#/components/parameters/uniqidRequired"
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  "0":
                    $ref: "#/components/schemas/ueuse"
                  success:
                    $ref: "#/components/schemas/Success"
                required:
                  - "0"
                  - success
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - ueuse_not_found
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
    post:
      tags:
        - ueuse
      description: 特定の投稿を一つだけ取得します。(単一の投稿を取得します。)
      operationId: ueuse/get
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/get.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                uniqid:
                  $ref: "#/components/schemas/UniqID"
              required:
                - uniqid
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  "0":
                    $ref: "#/components/schemas/ueuse"
                  success:
                    $ref: "#/components/schemas/Success"
                required:
                  - "0"
                  - success
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - ueuse_not_found
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
  /ueuse/replies:
    summary: /ueuse/replies
    get:
      tags:
        - ueuse
      description: |
        特定の投稿とそれにされた返信を取得します。
        帰ってきたjsonの一番上の投稿がuniqidにて指定したものになります。
      operationId: ueuse/replies
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/replies.php
      security:
        - bearerAuth: []
      parameters:
        - uniqid:
          $ref: "#/components/parameters/uniqidRequired"
        - limit:
          $ref: "#/components/parameters/limit"
        - page:
          $ref: "#/components/parameters/page"
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  "0":
                    $ref: "#/components/schemas/ueuse"
                  "1":
                    $ref: "#/components/schemas/ueuse"
                  success:
                    $ref: "#/components/schemas/Success"
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - ueuse_not_found
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
    post:
      tags:
        - ueuse
      description: |
        特定の投稿とそれにされた返信を取得します。
        帰ってきたjsonの一番上の投稿がuniqidにて指定したものになります。
      operationId: ueuse/replies
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/replies.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                uniqid:
                  $ref: "#/components/schemas/UniqID"
                limit:
                  $ref: "#/components/schemas/Limit"
                page:
                  $ref: "#/components/schemas/Page"
              required:
                - uniqid
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  "0":
                    $ref: "#/components/schemas/ueuse"
                  "1":
                    $ref: "#/components/schemas/ueuse"
                  success:
                    $ref: "#/components/schemas/Success"
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - ueuse_not_found
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
  /ueuse/mentions:
    summary: /ueuse/mentions
    get:
      tags:
        - ueuse
      description: |
        > [!Note]
        > v1.6.0以前と以後で仕様が異なっており、v1.6.0以前に行われたメンションは取得できません。  
        > 使用方法は同じです。
        
        自分のメンションされた投稿を取得します。
      operationId: ueuse/mentions
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/mentions.php
      security:
        - bearerAuth: []
      parameters:
        - limit:
          $ref: "#/components/parameters/limit"
        - page:
          $ref: "#/components/parameters/page"
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  "0":
                    $ref: "#/components/schemas/ueuse"
                  "1":
                    $ref: "#/components/schemas/ueuse"
                  success:
                    $ref: "#/components/schemas/Success"
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - ueuse_not_found
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
    post:
      tags:
        - ueuse
      description: |
        > [!Note]
        > v1.6.0以前と以後で仕様が異なっており、v1.6.0以前に行われたメンションは取得できません。  
        > 使用方法は同じです。
        
        自分のメンションされた投稿を取得します。
      operationId: ueuse/mentions
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/mentions.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                limit:
                  $ref: "#/components/schemas/Limit"
                page:
                  $ref: "#/components/schemas/Page"
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  "0":
                    $ref: "#/components/schemas/ueuse"
                  "1":
                    $ref: "#/components/schemas/ueuse"
                  success:
                    $ref: "#/components/schemas/Success"
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - ueuse_not_found
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
  /ueuse/search:
    summary: /ueuse/search
    get:
      tags:
        - ueuse
      description: keywordに入れた言葉をすべての投稿の中から検索してマッチしたものを返します。
      operationId: ueuse/search
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/search.php
      security:
        - bearerAuth: []
      parameters:
        - keyword:
          name: keyword
          in: query
          schema:
            title: キーワード
            type: string
            example: Test
          required: true
        - limit:
          $ref: "#/components/parameters/limit"
        - page:
          $ref: "#/components/parameters/page"
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  "0":
                    $ref: "#/components/schemas/ueuse"
                  "1":
                    $ref: "#/components/schemas/ueuse"
                  success:
                    $ref: "#/components/schemas/Success"
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - ueuse_not_found
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
    post:
      tags:
        - ueuse
      description: keywordに入れた言葉をすべての投稿の中から検索してマッチしたものを返します。
      operationId: ueuse/search
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/search.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword:
                  title: キーワード
                  type: string
                  example: Test
                limit:
                  $ref: "#/components/schemas/Limit"
                page:
                  $ref: "#/components/schemas/Page"
              required:
                - keyword
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  "0":
                    $ref: "#/components/schemas/ueuse"
                  "1":
                    $ref: "#/components/schemas/ueuse"
                  success:
                    $ref: "#/components/schemas/Success"
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - ueuse_not_found
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
  /ueuse/create:
    summary: /ueuse/create
    get:
      tags:
        - ueuse
      description: |
        このAPIを使用すると新たに投稿をすることができます。  
        引用/リユーズと返信は同時に使用できません。
      operationId: ueuse/create
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/create.php
      security:
        - bearerAuth: []
      parameters:
        - text:
          name: text
          in: query
          schema:
            title: 本文
            type: string
            example: "Text\nText"
          required: true
        - nsfw:
          name: nsfw
          in: query
          schema:
            title: NSFWにするかどうか
            type: boolean
            enum:
              - true
              - false
            default: false
            example: true
        - replyid:
          name: replyid
          in: query
          schema:
            title: 返信先ユーズ
            type: string
            example: 1vgsg0v3tzv
        - reuseid:
          name: reuseid
          in: query
          schema:
            title: 引用/リユーズ先ユーズ
            type: string
            example: 1vgsg0v3tzv
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  uniqid:
                    $ref: "#/components/schemas/UniqID"
                  userid:
                    $ref: "#/components/schemas/UserID"
                required:
                  - uniqid
                  - userid
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - this_account_has_been_frozen
                          - contains_prohibited_url
                          - could_not_complete
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        413:
          description: Content Too Large
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - content_to_<?php echo $max_ueuse_length; ?>_characters
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
        429:
          description: Too Many Requests
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - over_rate_limit
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - could_not_complete
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
    post:
      tags:
        - ueuse
      description: |
        このAPIを使用すると新たに投稿をすることができます。  
        引用/リユーズと返信は同時に使用できません。
      operationId: ueuse/create
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/create.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                text:
                  title: 本文
                  type: string
                  maximum: <?php echo $max_ueuse_length; ?>
                  example: "Text\nText"
                nsfw:
                  title: NSFWにするかどうか
                  type: boolean
                  enum:
                    - true
                    - false
                  default: false
                  example: true
                image1:
                  title: 画像1
                  type: string
                  format: Base64 Encode Image
                  example: Base64 Data
                image2:
                  title: 画像2
                  type: string
                  format: Base64 Encode Image
                  example: Base64 Data
                image3:
                  title: 画像3
                  type: string
                  format: Base64 Encode Image
                  example: Base64 Data
                image4:
                  title: 画像4
                  type: string
                  format: Base64 Encode Image
                  example: Base64 Data
                replyid:
                  title: 返信先ユーズ
                  type: string
                  example: 1vgsg0v3tzv
                reuseid:
                  title: 引用/リユーズ先ユーズ
                  type: string
                  example: 1vgsg0v3tzv
              required:
                - text
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  uniqid:
                    $ref: "#/components/schemas/UniqID"
                  userid:
                    $ref: "#/components/schemas/UserID"
                required:
                  - uniqid
                  - userid
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - this_account_has_been_frozen
                          - contains_prohibited_url
                          - upload_error
                          - could_not_complete
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        413:
          description: Content Too Large
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - content_to_<?php echo $max_ueuse_length; ?>_characters
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
        429:
          description: Too Many Requests
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - over_rate_limit
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - upload_error
                      - could_not_complete
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
  /ueuse/delete:
    summary: /ueuse/delete
    get:
      tags:
        - ueuse
      description: 投稿の削除が可能です。
      operationId: ueuse/delete
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/delete.php
      security:
        - bearerAuth: []
      parameters:
        - uniqid:
          $ref: "#/components/parameters/uniqidRequest"
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  uniqid:
                    $ref: "#/components/schemas/UniqID"
                  userid:
                    $ref: "#/components/schemas/UserID"
                  success:
                    $ref: "#/components/schemas/Success"
                required:
                  - uniqid
                  - userid
                  - success
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  uniqid:
                    $ref: "#/components/schemas/UniqID"
                  userid:
                    $ref: "#/components/schemas/UserID"
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - uniqid
                  - userid
                  - success
    post:
      tags:
        - ueuse
      description: 投稿の削除が可能です。
      operationId: ueuse/delete
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/delete.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                uniqid:
                  $ref: "#/components/schemas/UniqID"
              required:
                - uniqid
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  uniqid:
                    $ref: "#/components/schemas/UniqID"
                  userid:
                    $ref: "#/components/schemas/UserID"
                  success:
                    $ref: "#/components/schemas/Success"
                required:
                  - uniqid
                  - userid
                  - success
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  uniqid:
                    $ref: "#/components/schemas/UniqID"
                  userid:
                    $ref: "#/components/schemas/UserID"
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - uniqid
                  - userid
                  - success
  /ueuse/bookmark/:
    summary: /ueuse/bookmark/
    get:
      tags:
        - ueuse
      description: ログインしているユーザーのブックマークを取得できます。
      operationId: ueuse/bookmark
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/bookmark/index.php
      security:
        - bearerAuth: []
      parameters:
        - limit:
          $ref: "#/components/parameters/limit"
        - page:
          $ref: "#/components/parameters/page"
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  "0":
                    $ref: "#/components/schemas/ueuse"
                  "1":
                    $ref: "#/components/schemas/ueuse"
                  success:
                    $ref: "#/components/schemas/Success"
                required:
                  - success
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/APIAuthFailed"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - ueuse_not_found
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
    post:
      tags:
        - ueuse
      description: ログインしているユーザーのブックマークを取得できます。
      operationId: ueuse/bookmark
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/ueuse/bookmark/index.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                limit:
                  $ref: "#/components/schemas/Limit"
                page:
                  $ref: "#/components/schemas/Page"
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  "0":
                    $ref: "#/components/schemas/ueuse"
                  "1":
                    $ref: "#/components/schemas/ueuse"
                  success:
                    $ref: "#/components/schemas/Success"
                required:
                  - success
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/APIAuthFailed"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - ueuse_not_found
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
  /favorite/change:
    summary: /favorite/change
    get:
      tags:
        - favorite
      description:  いいねを追加・削除できます。
      operationId: favorite/change
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/favorite/change.php
      security:
        - bearerAuth: []
      parameters:
        - uniqid:
          $ref: "#/components/parameters/uniqidRequired"
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  favorite_list:
                    title: いいねしたユーザー
                    type: string
                    description: 更新後が表示され、`,`区切りの`string`型です。
                    example: ",admin"
                  success:
                    $ref: "#/components/schemas/Success"
                required:
                  - favorite_list
                  - success
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
    post:
      tags:
        - favorite
      description:  いいねを追加・削除できます。
      operationId: favorite/change
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/favorite/change.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                uniqid:
                  $ref: "#/components/schemas/UniqID"
              required:
                - uniqid
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  favorite_list:
                    title: いいねしたユーザー
                    type: string
                    description: 更新後が表示され、`,`区切りの`string`型です。
                    example: ",admin"
                  success:
                    $ref: "#/components/schemas/Success"
                required:
                  - favorite_list
                  - success
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
  /favorite/get:
    summary: /favorite/get
    get:
      tags:
        - favorite
      description: いいねの情報を取得できます。
      operationId: favorite/get
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/favorite/get.php
      security:
        - bearerAuth: []
      parameters:
        - uniqid:
          $ref: "#/components/parameters/uniqidRequired"
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  favorite_list:
                    title: いいねしたユーザー
                    type: string
                    description: "`,`区切りの`string`型です。"
                    example: ",admin"
                  success:
                    $ref: "#/components/schemas/Success"
                required:
                  - favorite_list
                  - success
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
    post:
      tags:
        - favorite
      description: いいねの情報を取得できます。
      operationId: favorite/get
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/favorite/get.php
      security:
        - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                uniqid:
                  $ref: "#/components/schemas/UniqID"
              required:
                - uniqid
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  favorite_list:
                    title: いいねしたユーザー
                    type: string
                    description: "`,`区切りの`string`型です。"
                    example: ",admin"
                  success:
                    $ref: "#/components/schemas/Success"
                required:
                  - favorite_list
                  - success
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/APIAuthFailed"
                  - $ref: "#/components/schemas/InputNotFound"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
  /token/get:
    summary: /token/get
    get:
      tags:
        - token
      description: APIアクセストークンを1回だけ取得できます。
      operationId: token/get
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/token/get.php
      security:
        - {}
      parameters:
        - session:
          name: session
          in: query
          schema:
            title: セッションID
            type: string
            example: eb774fe1-f826-9d2c-3296-de1db548b290
            format: uuid
          required: true
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    $ref: "#/components/schemas/Success"
                  username:
                    title: ユーザー名
                    type: string
                    example: あどみん
                  userid:
                    $ref: "#/components/schemas/UserID"
                  token:
                    title: APIトークン
                    type: string
                    example: LLOC2lHPVoPqCqKWmvbdcdo9DmAHyySpBwqxseohtYilob85A8g9Ebd9m9UbERw9
                required:
                  - success
                  - username
                  - userid
                  - token
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/InputNotFound"
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - critical_error_userdata_not_found
                          - session_invalid
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
    post:
      tags:
        - token
      description: APIアクセストークンを1回だけ取得できます。
      operationId: token/get
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/token/get.php
      security:
        - {}
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                session:
                  title: セッションID
                  type: string
                  example: eb774fe1-f826-9d2c-3296-de1db548b290
              required:
                - session
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    $ref: "#/components/schemas/Success"
                  username:
                    title: ユーザー名
                    type: string
                    example: あどみん
                  userid:
                    $ref: "#/components/schemas/UserID"
                  token:
                    title: APIトークン
                    type: string
                    example: LLOC2lHPVoPqCqKWmvbdcdo9DmAHyySpBwqxseohtYilob85A8g9Ebd9m9UbERw9
                required:
                  - success
                  - username
                  - userid
                  - token
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/InputNotFound"
                  - type: object
                    properties:
                      error_code:
                        title: エラーコード
                        type: string
                        enum:
                          - critical_error_userdata_not_found
                          - session_invalid
                      success:
                        $ref: "#/components/schemas/Failed"
                    required:
                      - error_code
                      - success
  /token/inquiry:
    summary: /token/inquiry
    get:
      tags:
        - token
      description: APIアクセストークンの情報を照会できます。
      operationId: token/inquiry
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/token/inquiry.php
      security:
        - bearerAuth: []
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  allow_scopes:
                    title: 付与された権限
                    type: array
                    items:
                      title: 権限
                      type: string
                      enum:
                        - read:me
                        - write:me
                        - read:users
                        - read:ueuse
                        - write:ueuse
                        - write:follow
                        - write:favorite
                        - read:notifications
                        - write:notifications
                        - write:bookmark
                        - read:bookmark
                  username:
                    title: ユーザー名
                    type: string
                    example: あどみん
                  userid:
                    $ref: "#/components/schemas/UserID"
                  success:
                    $ref: "#/components/schemas/Success"
                required:
                  - allow_scopes
                  - username
                  - userid
                  - success
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - this_account_has_been_frozen
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - could_not_complete
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
    post:
      tags:
        - token
      description: APIアクセストークンの情報を照会できます。
      operationId: token/inquiry
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/token/inquiry.php
      security:
        - bearerAuth: []
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  allow_scopes:
                    title: 付与されている権限
                    type: array
                    items:
                      title: 権限
                      type: string
                      enum:
                        - read:me
                        - write:me
                        - read:users
                        - read:ueuse
                        - write:ueuse
                        - write:follow
                        - write:favorite
                        - read:notifications
                        - write:notifications
                        - write:bookmark
                        - read:bookmark
                  username:
                    title: ユーザー名
                    type: string
                    example: あどみん
                  userid:
                    $ref: "#/components/schemas/UserID"
                  success:
                    $ref: "#/components/schemas/Success"
                required:
                  - allow_scopes
                  - username
                  - userid
                  - success
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - this_account_has_been_frozen
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - could_not_complete
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
  /auth:
    summary: /auth
    get:
      tags:
        - token
        - auth
      description: |
        ユーザー認可によるAPIトークン取得方法の確認ページです。
      operationId: auth
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/auth.php
      parameters:
        - session:
          name: session
          description: |
            UUIDなど、一意さの担保される方法でセッションIDを発行してください！
            > [!CAUTION]
            > 発行したセッションIDは絶対に使い回さないでください！  
            > また、絶対に第三者に公開しないでください！
          in: query
          schema:
            title: セッションID
            type: string
            example: eb774fe1-f826-9d2c-3296-de1db548b290
          required: true
        - client:
          name: client
          in: query
          schema:
            title: アプリケーション名
            type: string
            example: uwuzuクライアント
          required: true
        - scope:
          title: 要求する権限
          name: scope
          description: |
            `,`区切りで以下の表の権限を参考にしてください。
            > [!CAUTION]
            > 権限を0にすることはできません。  
            > 1つ以上の権限を含めてください。
            
            | 権限名 | 権限の内容 |
            | - | - |
            | read:me | 重要な情報以外の自分のアカウントの情報を見る |
            | write:me | 重要な情報以外の自分のアカウントの情報を変更する |
            | read:ueuse | ユーズを見る |
            | read:users | 自分以外のユーザーを見る |
            | write:ueuse | ユーズの作成・削除をする |
            | write:follow | フォロー・フォロー解除をする |
            | write:favorite | いいねをする・解除をする |
            | read:notifications | 通知を見る |
            | write:notifications | 通知を既読にする |
            | write:bookmark | ブックマークにユーズを追加・削除する |
            | read:bookmark | ブックマークを見る |
          in: query
          schema:
            type: string
            example: read:account,read:ueuse
          required: true
        - icon:
          name: icon
          in: query
          schema:
            title: アプリケーションアイコン画像
            type: string
            format: URL
            example: https://example.com/application/icon.png
        - about:
          name: about
          in: query
          schema:
            title: アプリケーションの説明
            type: string
            example: uwuzuのクライアントです
        - callback:
          name: callback
          in: query
          schema:
            title: コールバック先URL
            type: string
            example: https://example.com/application/callback

components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
  pathItems:
    ServerInfoAPI:
      tags:
        - serverinfo-api
      description: サーバー情報を取得できます。
      operationId: serverinfo-api
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/serverinfo-api.php
      security:
        - {}
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  server_info:
                    $ref: "#/components/schemas/ServerInfo"
                  software:
                    title: サーバーソフトウェア
                    type: object
                    properties:
                      name:
                        title: 名称
                        type: string
                        example: uwuzu
                      version:
                        title: バージョン
                        type: string
                        example: 1.6.5
                        pattern: \d+\.\d+\.\d+
                      repository:
                        title: リポジトリ
                        type: string
                        example: https://github.com/Daichimarukana/uwuzu
                    required:
                      - name
                      - version
                      - repository
                  server_notice:
                    $ref: "#/components/schemas/ServerNotice"
                required:
                  - server_info
                  - software
                  - server_notice
    MeAPI:
      tags:
        - me
      description: |
        自分のユーザー情報を取得できます。  
        メールアドレスなど一部の情報は取得できません。
      operationId: me
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/me/index.php
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
        400:
          $ref: "#/components/responses/APIAuthFailed"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - critical_error_userdata_not_found
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
    NotificationRead:
      tags:
        - me
        - notification
      description:  自分宛の通知を一括既読できます。
      operationId: me/notification/read
      externalDocs:
        description: ソースコード
        url: https://github.com/Daichimarukana/uwuzu/blob/main/api/me/notification/read.php
      responses:
        200:
          $ref: "#/components/responses/SuccessOnly"
        400:
          $ref: "#/components/responses/APIAuthFailed"
        401:
          $ref: "#/components/responses/Unauthorized"
        403:
          $ref: "#/components/responses/Forbidden"
        500:
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error_code:
                    $ref: "#/components/schemas/UpdateFailed"
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
  responses:
    SuccessOnly:
      description: OK
      content:
        application/json:
          schema:
            type: object
            properties:
              success:
                $ref: "#/components/schemas/Success"
            required:
              - success
    InputNotFound:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/InputNotFound"
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            type: object
            properties:
              error_code:
                $ref: "#/components/schemas/InputNotFound"
              success:
                $ref: "#/components/schemas/Failed"
            required:
              - error_code
              - success
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            type: object
            properties:
              error_code:
                title: エラーコード
                type: string
                enum:
                  - token_invalid
              success:
                $ref: "#/components/schemas/Failed"
            required:
              - error_code
              - success
    APIAuthFailed:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/APIAuthFailed"
    UserDataNotFound:
      description: Internal Server Error
      content:
        application/json:
          schema:
            type: object
            properties:
              error_code:
                title: エラーコード
                type: string
                enum:
                  - critical_error_userdata_not_found
              success:
                $ref: "#/components/schemas/Failed"
            required:
              - error_code
              - success
    NotificationAPI:
      description: OK
      content:
        application/json:
          schema:
            type: object
            properties:
              "0":
                $ref: "#/components/schemas/Notification"
              success:
                $ref: "#/components/schemas/Success"
            required:
              - "0"
              - success
    SettingsCountOver:
      description: Content Too Large
      content:
        application/json:
          schema:
            type: object
            properties:
              error_code:
                title: エラーコード
                type: string
                enum:
                  - ユーザーネームは50文字以内で入力してください。(USERNAME_OVER_MAX_COUNT)
                  - プロフィールは1024文字以内で入力してください。(INPUT_OVER_MAX_COUNT)
              success:
                $ref: "#/components/schemas/Failed"
            required:
              - error_code
              - success
    FollowSuccess:
      description: OK
      content:
        application/json:
          schema:
            type: object
            properties:
              userid:
                $ref: "#/components/schemas/UserID"
              success:
                $ref: "#/components/schemas/Success"
            required:
              - userid
              - success
    FollowBadReq:
      description: Bad Request
      content:
        application/json:
          schema:
            oneOf:
              - type: object
                properties:
                  error_code:
                    title: エラーコード
                    type: string
                    enum:
                      - you_cant_it_to_yourself
                      - input_not_found
                  success:
                    $ref: "#/components/schemas/Failed"
                required:
                  - error_code
                  - success
              - $ref: "#/components/schemas/APIAuthFailed"
    FollowInternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            type: object
            properties:
              error_code:
                title: エラーコード
                type: string
                enum:
                  - critical_error_userdata_not_found
                  - could_not_complete
              success:
                $ref: "#/components/schemas/Failed"
            required:
              - error_code
              - success
  schemas:
    InputNotFound:
      title: パラメータ不足
      type: object
      properties:
        error_code:
          $ref: "#/components/schemas/InputNotFound"
        success:
          $ref: "#/components/schemas/Failed"
      required:
        - error_code
        - success
    APIAuthFailed:
      title: API認証失敗
      type: object
      properties:
        error_code:
          type: string
          description: エラーコード
          enum:
            - this_account_has_been_frozen
            - token_invalid
            - not_allow_scope
        success:
          $ref: "#/components/schemas/Failed"
      required:
        - error_code
        - success
    Notification:
      title: 通知
      type: object
      properties:
        from:
          type: object
          description: 通知元ユーザー
          properties:
            username:
              type: string
              description: ユーザー名
              example: tester
            userid:
              $ref: "#/components/schemas/UserID"
            user_icon:
              type: string
              description: アイコン画像
              format: URL
              example: <?php echo safetext($origin); ?>/usericons/XXXXXXXXXX-XXXXX.png
            user_header:
              type: string
              description: ヘッダー画像
              format: URL
              example: <?php echo safetext($origin); ?>/usericons/XXXXXXXXXX-XXXXX.png
          required:
            - username
            - userid
            - user_icon
            - user_header
        category:
          type: string
          description: カテゴリ
          enum:
            - system
            - favorite
            - reply
            - reuse
            - ueuse
            - follow
            - mention
            - other
            - login
        title:
          type: string
          description: タイトル
          enum:
            - testerさんが返信しました！
            - testerさんがメンションしました！
            - testerさんがリユーズしました！
            - testerさんがいいねしました！
            - testerさんが返信しました！
            - testerさんにフォローされました！🎉
            - 🚪ログイン通知🚪
        text:
          type: string
          description: 本文
          example: test1
        datetime:
          type: string
          description: 通知時刻
          format: date
          example: 2025-08-02 18:12:29
        is_checked:
          type: boolean
          description: 既読かどうか
          enum:
            - true
            - false
      required:
        - from
        - category
        - title
        - text
        - datetime
        - is_checked
    ServerNotice:
      title: お知らせ
      type: array
      items:
        type:
          - object
          - string
        properties:
          title:
            title: タイトル
            type: string
            example: お知らせ！
          note:
            title: 本文
            type: string
            example: サービスを開始しました！
          editor:
            title: 配信者
            type: string
            example: admin
          datetime:
            title: 配信時刻
            type: string
            format: date
            example: 2024-03-29 14:35:06
        required:
          - title
          - note
          - editor
          - datetime
      required:
        - server_info
        - software
        - server_notice
    ServerInfo:
      title: サーバー概要
      type: object
      properties:
        server_name:
          title: 名称
          type: string
          example: 新規さば
        server_icon:
          title: アイコン画像
          type: string
          format: URL
          example: <?php echo safetext($origin); ?>/img/uwuzu_icon.png
        server_description:
          title: 説明文
          type: string
          example: ようこそ新規さばへ！etc...
        adminstor:
          title: 運営者
          type: object
          properties:
            name:
              title: 名前
              type: string
              example: あどみん
            email:
              title: メールアドレス
              type: string
              example: admin@uwuzu.example.com
          required:
            - name
            - email
        terms_url:
          title: 利用規約
          type: string
          format: URL
          example: <?php echo safetext($origin); ?>/rule/terms
        privacy_policy_url:
          title: プライバシーポリシー
          type: string
          format: URL
          example: <?php echo safetext($origin); ?>/rule/privacypolicy
        max_ueuse_length:
          title: 文字数制限
          type: number
          example: <?php echo $max_ueuse_length; ?>
        invitation_code:
          title: 招待制かどうか
          type: boolean
          enum:
            - true
            - false
        account_migration:
          title: アカウント移行が有効かどうか
          type: boolean
          enum:
            - true
            - false
        usage:
          title: カウント数
          type: object
          properties:
            users:
              title: ユーザー数
              type: number
              example: 120
            ueuse:
              title: ユーズ数
              type: number
              example: 5000
          required:
            - users
            - ueuse
      required:
        - server_name
        - server_icon
        - server_description
        - adminstor
        - terms_url
        - privacy_policy_url
        - max_ueuse_length
        - invitation_code
        - account_migration
        - usage
    User:
      title: ユーザー
      type: object
      properties:
        username:
          title: ユーザー名
          type: string
          maximum: 50
          example: あどみん
        userid:
          $ref: "#/components/schemas/UserID"
        profile:
          title: プロフィール
          type: string
          maximum: 1024
          example: あどみんです！
        user_icon:
          title: アイコン画像
          type: string
          format: URL
          example: <?php echo safetext($origin); ?>/usericons/XXXXXXXXXX-XXXXX.png
        user_header:
          title: ヘッダー画像
          type: string
          format: URL
          example: <?php echo safetext($origin); ?>/usericons/XXXXXXXXXX-XXXXX.png
        registered_date:
          title: 登録時刻
          type: string
          example: 2024-03-09 02:19:04
          format: date
        followee:
          title: フォロー
          type: array
          items:
            $ref: "#/components/schemas/UserID"
        followee_cnt:
          title: フォロー数
          type: number
          example: 1
        follower:
          title: フォロワー
          type: array
          items:
            $ref: "#/components/schemas/UserID"
        follower_cnt:
          title: フォロワー数
          type: number
          example: 1
        ueuse_cnt:
          title: ユーズ数
          type: number
          example: 38
        isBot:
          title: BOTかどうか
          type: boolean
          description: 
          enum:
            - true
            - false
        isAdmin:
          title: 管理者かどうか
          type: boolean
          enum:
            - true
            - false
        role:
          title: ロール
          type: array
          items:
            title: 詳細
            type: object
            properties:
              name:
                title: 名称
                type: string
                example: ゆーざー
              color:
                title: 色(16進数)
                type: string
                example: CCCCCC
              effect:
                title: エフェクト
                type: string
                enum:
                  - none
                  - shine
                  - rainbow
              id:
                title: ロールID
                type: string
                example: user
            required:
              - name
              - color
              - effect
              - id
        language:
          title: 言語
          type: string
          enum:
            - ja-JP
      required:
        - username
        - userid
        - profile
        - user_icon
        - user_header
        - registered_date
        - followee
        - followee_cnt
        - follower
        - follower_cnt
        - ueuse_cnt
        - isBot
        - isAdmin
        - role
        - language
    ueuse:
      title: ユーズ
      type: object
      properties:
        uniqid:
          $ref: "#/components/schemas/UniqID"
        replyid:
          title: 返信先ユーズ(ユニークID)
          type: string
          description: 返信でない場合は`""`が返されます
          example: 1vgsg0v3tzv
        reuseid:
          title: 引用/リユーズ元ユーズ(ユニークID)
          type: string
          description: 引用/リユーズでない場合は`""`が返されます
          example: 1vgsg0v3tzv
        text:
          title: 本文
          type: string
          maximum: <?php echo $max_ueuse_length; ?>
          example: "Test\nTest"
        account:
          title: 投稿アカウント
          type: object
          properties:
            username:
              title: ユーザー名
              type: string
              maximum: 50
              example: あどみん
            userid:
              $ref: "#/components/schemas/UserID"
            user_icon:
              title: アイコン画像
              type: string
              format: URL
              example: <?php echo safetext($origin); ?>/usericons/XXXXXXXXXX-XXXXX.png
            user_header:
              title: ヘッダー画像
              type: string
              format: URL
              example: <?php echo safetext($origin); ?>/userheads/XXXXXXXXXX-XXXXX.png
            is_bot:
              title: BOTかどうか
              type: boolean
              enum:
                - true
                - false
          required:
            - username
            - userid
            - user_icon
            - user_header
            - is_bot
        photo1:
          title: 画像1
          type: string
          description: 添付されていない場合は`""`が返されます
          format: URL
          example: <?php echo safetext($origin); ?>/ueuseimages/XXXXXXXXXX-XXXXX.png
        photo2:
          title: 画像2
          type: string
          description: 添付されていない場合は`""`が返されます
          format: URL
          example: <?php echo safetext($origin); ?>/ueuseimages/XXXXXXXXXX-XXXXX.png
        photo3:
          title: 画像3
          type: string
          description: 添付されていない場合は`""`が返されます
          format: URL
          example: <?php echo safetext($origin); ?>/ueuseimages/XXXXXXXXXX-XXXXX.png
        photo4:
          title: 画像4
          type: string
          description: 添付されていない場合は`""`が返されます
          format: URL
          example: <?php echo safetext($origin); ?>/ueuseimages/XXXXXXXXXX-XXXXX.png
        video1:
          title: 動画
          type: string
          description: 添付されていない場合は`""`が返されます
          format: URL
          example: <?php echo safetext($origin); ?>/ueusevideos/XXXXXXXXXX-XXXXX.mp4
        favorite:
          title: いいね
          type: array
          items:
            $ref: "#/components/schemas/UserID"
        favorite_cnt:
          title: いいね数
          type: number
          example: 1
        reply_cnt:
          title: 返信数
          type: number
          example: 1
        reuse_cnt:
          title: 引用/リユーズ数
          type: number
          example: 1
        datetime:
          title: 投稿時刻
          type: string
          example: 2024-04-19 20:33:13
          format: date
        abi:
          title: 追記
          type: string
          description: 追記がない場合は`""`が返されます
          example: ""
        abidatetime:
          title: 追記時刻
          type: string
          description: 追記がない場合は`0000-00-00 00:00:00`が返されます
          example: 2024-04-19 20:33:13
          format: date
        nsfw:
          title: NSFWかどうか
          type: boolean
          enum:
            - true
            - false
      required:
        - uniqid
        - replyid
        - reuseid
        - text
        - account
        - photo1
        - photo2
        - photo3
        - photo4
        - video1
        - favorite
        - favorite_cnt
        - reply_cnt
        - reuse_cnt
        - datetime
        - abi
        - abidatetime
        - nsfw
    Failed:
      title: 成功かどうか
      type: boolean
      enum:
        - false
    Page:
      title: ページ数
      type: number
      default: 1
      example: 5
    Limit:
      title: 制限数
      type: number
      maximum: 100
      default: 25
      example: 60
    UpdateFailed:
      title: エラーコード
      type: string
      enum:
        - update_failed
    UserID:
      title: ユーザーID
      type: string
      maximum: 20
      example: admin
    Success:
      title: 成功かどうか
      type: boolean
      enum:
        - true
    UniqID:
      title: ユニークID
      type: string
      example: 1vgsg0v3tzv
  parameters:
    page:
      name: page
      in: query
      schema:
        title: ページ数
        type: number
        default: 1
        example: 5
    limit:
      name: limit
      in: query
      schema:
        title: 制限数
        type: number
        maximum: 100
        default: 25
        example: 60
    pageRequired:
      name: page
      in: query
      schema:
        title: ページ数
        type: number
        default: 1
        example: 5
      required: true
    limitRequired:
      name: limit
      in: query
      schema:
        title: 制限数
        type: number
        maximum: 100
        default: 25
        example: 60
      required: true
    useridRequired:
      name: userid
      in: query
      schema:
        title: ユーザーID
        type: string
        maximum: 20
        example: admin
      required: true
    uniqidRequired:
      name: uniqid
      in: query
      schema:
        title: ユニークID
        type: string
        example: 1vgsg0v3tzv
      required: true
