uwuzu_/api-docs/openapi.php

3281 lines
105 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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