feat: endpointsを自動で生成するように

pull/56/head
yupix 2 years ago
parent c38d240c21
commit d2c9a8cbf0
No known key found for this signature in database
GPG Key ID: 2FF705F5C56D9C06

@ -0,0 +1,24 @@
import json
from type import OpenAPI
PATHS: list[str] = []
PREFIX = '/api'
IMPORTS = "from typing import Literal\n\n"
TEMPLATES = "ENDPOINTS = "
with open('./datas/v13_api.json') as f:
api: OpenAPI = json.load(f)
for path in api['paths']:
PATHS.append(f'{PREFIX}{path}')
with open('./datas/ayuskey_api.json') as f:
api: OpenAPI = json.load(f)
for path in api['paths']:
PATHS.append(f'{PREFIX}{path}')
with open('../mipac/types/endpoints.py', 'w', encoding='utf-8') as f:
data = json.dumps(list(dict.fromkeys(PATHS)), ensure_ascii=False, indent=4)
f.write(
f'{IMPORTS}{TEMPLATES}Literal{data}'
)

@ -0,0 +1,31 @@
from typing import Any, Literal, TypedDict
class OpenAPIInfo(TypedDict):
version: str
title: str
class OpenAPIExternalDocs(TypedDict):
description: str
url: str
class OpenAPIRequestBody(TypedDict):
required: bool
class OpenAPIPath(TypedDict):
operationId: str
summary: str
description: str
externalDocs: OpenAPIExternalDocs
tags: list[str]
security: list[dict[str, list[Any]]]
class OpenAPI(TypedDict):
openapi: str
info: OpenAPIInfo
externalDocs: OpenAPIExternalDocs
paths: dict[str, dict[Literal['post', 'get'], OpenAPIPath]]

@ -1,313 +1,342 @@
from typing import Literal from typing import Literal
ENDPOINTS = Literal[ ENDPOINTS = Literal[
'/api/admin/abuse-user-reports', "/api/admin/meta",
'/api/admin/accounts/create', "/api/admin/abuse-user-reports",
'/api/admin/accounts/delete', "/api/admin/accounts/create",
'/api/admin/ad/create', "/api/admin/accounts/delete",
'/api/admin/ad/delete', "/api/admin/ad/create",
'/api/admin/ad/list', "/api/admin/ad/delete",
'/api/admin/ad/update', "/api/admin/ad/list",
'/api/admin/announcements/create', "/api/admin/ad/update",
'/api/admin/announcements/delete', "/api/admin/announcements/create",
'/api/admin/announcements/list', "/api/admin/announcements/delete",
'/api/admin/announcements/update', "/api/admin/announcements/list",
'/api/admin/delete-account', "/api/admin/announcements/update",
'/api/admin/delete-all-files-of-a-user', "/api/admin/delete-all-files-of-a-user",
'/api/admin/delete-logs', "/api/admin/drive/clean-remote-files",
'/api/admin/drive-capacity-override', "/api/admin/drive/cleanup",
'/api/admin/drive/clean-remote-files', "/api/admin/drive/files",
'/api/admin/drive/cleanup', "/api/admin/drive/show-file",
'/api/admin/drive/files', "/api/admin/emoji/add-aliases-bulk",
'/api/admin/drive/show-file', "/api/admin/emoji/add",
'/api/admin/emoji/add', "/api/admin/emoji/copy",
'/api/admin/emoji/add-aliases-bulk', "/api/admin/emoji/delete-bulk",
'/api/admin/emoji/copy', "/api/admin/emoji/delete",
'/api/admin/emoji/delete', "/api/admin/emoji/list-remote",
'/api/admin/emoji/delete-bulk', "/api/admin/emoji/list",
'/api/admin/emoji/list', "/api/admin/emoji/remove-aliases-bulk",
'/api/admin/emoji/list-remote', "/api/admin/emoji/set-aliases-bulk",
'/api/admin/emoji/remove', "/api/admin/emoji/set-category-bulk",
'/api/admin/emoji/remove-aliases-bulk', "/api/admin/emoji/update",
'/api/admin/emoji/set-aliases-bulk', "/api/admin/federation/delete-all-files",
'/api/admin/emoji/set-category-bulk', "/api/admin/federation/refresh-remote-instance-metadata",
'/api/admin/emoji/update', "/api/admin/federation/remove-all-following",
'/api/admin/federation/delete-all-files', "/api/admin/federation/update-instance",
'/api/admin/federation/refresh-remote-instance-metadata', "/api/admin/get-index-stats",
'/api/admin/federation/remove-all-following', "/api/admin/get-table-stats",
'/api/admin/federation/update-instance', "/api/admin/get-user-ips",
'/api/admin/get-index-stats', "/api/invite",
'/api/admin/get-table-stats', "/api/admin/promo/create",
'/api/admin/get-user-ips', "/api/admin/queue/clear",
'/api/admin/invite', "/api/admin/queue/deliver-delayed",
'/api/admin/logs', "/api/admin/queue/inbox-delayed",
'/api/admin/meta', "/api/admin/queue/stats",
'/api/admin/moderators/add', "/api/admin/relays/add",
'/api/admin/moderators/remove', "/api/admin/relays/list",
'/api/admin/promo/create', "/api/admin/relays/remove",
'/api/admin/queue/clear', "/api/admin/reset-password",
'/api/admin/queue/deliver-delayed', "/api/admin/resolve-abuse-user-report",
'/api/admin/queue/inbox-delayed', "/api/admin/send-email",
'/api/admin/queue/jobs', "/api/admin/server-info",
'/api/admin/queue/stats', "/api/admin/show-moderation-logs",
'/api/admin/relays/add', "/api/admin/show-user",
'/api/admin/relays/list', "/api/admin/show-users",
'/api/admin/relays/remove', "/api/admin/suspend-user",
'/api/admin/remove-abuse-user-report', "/api/admin/unsuspend-user",
'/api/admin/reset-password', "/api/admin/update-meta",
'/api/admin/resolve-abuse-user-report', "/api/admin/delete-account",
'/api/admin/resync-chart', "/api/admin/update-user-note",
'/api/admin/send-email', "/api/admin/roles/create",
'/api/admin/server-info', "/api/admin/roles/delete",
'/api/admin/set-premium', "/api/admin/roles/list",
'/api/admin/show-moderation-logs', "/api/admin/roles/show",
'/api/admin/show-user', "/api/admin/roles/update",
'/api/admin/show-users', "/api/admin/roles/assign",
'/api/admin/silence-user', "/api/admin/roles/unassign",
'/api/admin/suspend-user', "/api/admin/roles/update-default-policies",
'/api/admin/unset-premium', "/api/admin/roles/users",
'/api/admin/unsilence-user', "/api/announcements",
'/api/admin/unsuspend-user', "/api/antennas/create",
'/api/admin/unverify-user', "/api/antennas/delete",
'/api/admin/update-meta', "/api/antennas/list",
'/api/admin/update-remote-user', "/api/antennas/notes",
'/api/admin/update-user-note', "/api/antennas/show",
'/api/admin/vacuum', "/api/antennas/update",
'/api/admin/verify-user', "/api/ap/get",
'/api/announcements', "/api/ap/show",
'/api/antennas/create', "/api/app/create",
'/api/antennas/delete', "/api/app/show",
'/api/antennas/list', "/api/auth/session/generate",
'/api/antennas/notes', "/api/auth/session/show",
'/api/antennas/show', "/api/auth/session/userkey",
'/api/antennas/update', "/api/blocking/create",
'/api/ap/get', "/api/blocking/delete",
'/api/ap/show', "/api/blocking/list",
'/api/app/create', "/api/channels/create",
'/api/app/show', "/api/channels/featured",
'/api/auth/session/generate', "/api/channels/follow",
'/api/auth/session/show', "/api/channels/followed",
'/api/auth/session/userkey', "/api/channels/owned",
'/api/blocking/create', "/api/channels/show",
'/api/blocking/delete', "/api/channels/timeline",
'/api/blocking/list', "/api/channels/unfollow",
'/api/channels/create', "/api/channels/update",
'/api/channels/featured', "/api/charts/active-users",
'/api/channels/follow', "/api/charts/ap-request",
'/api/channels/followed', "/api/charts/drive",
'/api/channels/owned', "/api/charts/federation",
'/api/channels/pin-note', "/api/charts/instance",
'/api/channels/show', "/api/charts/notes",
'/api/channels/timeline', "/api/charts/user/drive",
'/api/channels/unfollow', "/api/charts/user/following",
'/api/channels/update', "/api/charts/user/notes",
'/api/charts/active-users', "/api/charts/user/pv",
'/api/charts/ap-request', "/api/charts/user/reactions",
'/api/charts/drive', "/api/charts/users",
'/api/charts/federation', "/api/clips/add-note",
'/api/charts/hashtag', "/api/clips/remove-note",
'/api/charts/instance', "/api/clips/create",
'/api/charts/network', "/api/clips/delete",
'/api/charts/notes', "/api/clips/list",
'/api/charts/user/drive', "/api/clips/notes",
'/api/charts/user/following', "/api/clips/show",
'/api/charts/user/notes', "/api/clips/update",
'/api/charts/user/reactions', "/api/drive",
'/api/charts/users', "/api/drive/files",
'/api/clips/add-note', "/api/drive/files/attached-notes",
'/api/clips/create', "/api/drive/files/check-existence",
'/api/clips/delete', "/api/drive/files/create",
'/api/clips/list', "/api/drive/files/delete",
'/api/clips/notes', "/api/drive/files/find-by-hash",
'/api/clips/remove-note', "/api/drive/files/find",
'/api/clips/show', "/api/drive/files/show",
'/api/clips/update', "/api/drive/files/update",
'/api/drive', "/api/drive/files/upload-from-url",
'/api/drive/files', "/api/drive/folders",
'/api/drive/files/attached-notes', "/api/drive/folders/create",
'/api/drive/files/check-existence', "/api/drive/folders/delete",
'/api/drive/files/create', "/api/drive/folders/find",
'/api/drive/files/delete', "/api/drive/folders/show",
'/api/drive/files/find', "/api/drive/folders/update",
'/api/drive/files/find-by-hash', "/api/drive/stream",
'/api/drive/files/show', "/api/email-address/available",
'/api/drive/files/update', "/api/endpoint",
'/api/drive/files/upload-from-url', "/api/endpoints",
'/api/drive/folders', "/api/federation/followers",
'/api/drive/folders/create', "/api/federation/following",
'/api/drive/folders/delete', "/api/federation/instances",
'/api/drive/folders/find', "/api/federation/show-instance",
'/api/drive/folders/show', "/api/federation/update-remote-user",
'/api/drive/folders/update', "/api/federation/users",
'/api/drive/stream', "/api/federation/stats",
'/api/email-address/available', "/api/following/create",
'/api/endpoint', "/api/following/delete",
'/api/endpoints', "/api/following/invalidate",
'/api/federation/followers', "/api/following/requests/accept",
'/api/federation/following', "/api/following/requests/cancel",
'/api/federation/instances', "/api/following/requests/list",
'/api/federation/show-instance', "/api/following/requests/reject",
'/api/federation/stats', "/api/gallery/featured",
'/api/federation/update-remote-user', "/api/gallery/popular",
'/api/federation/users', "/api/gallery/posts",
'/api/fetch-rss', "/api/gallery/posts/create",
'/api/following/create', "/api/gallery/posts/delete",
'/api/following/delete', "/api/gallery/posts/like",
'/api/following/invalidate', "/api/gallery/posts/show",
'/api/following/requests/accept', "/api/gallery/posts/unlike",
'/api/following/requests/cancel', "/api/gallery/posts/update",
'/api/following/requests/list', "/api/get-online-users-count",
'/api/following/requests/reject', "/api/hashtags/list",
'/api/gallery/featured', "/api/hashtags/search",
'/api/gallery/popular', "/api/hashtags/show",
'/api/gallery/posts', "/api/hashtags/trend",
'/api/gallery/posts/create', "/api/hashtags/users",
'/api/gallery/posts/delete', "/api/i",
'/api/gallery/posts/like', "/api/i/claim-achievement",
'/api/gallery/posts/show', "/api/i/favorites",
'/api/gallery/posts/unlike', "/api/i/gallery/likes",
'/api/gallery/posts/update', "/api/i/gallery/posts",
'/api/games/reversi/games', "/api/i/get-word-muted-notes-count",
'/api/games/reversi/games/show', "/api/i/notifications",
'/api/games/reversi/games/surrender', "/api/i/page-likes",
'/api/games/reversi/invitations', "/api/i/pages",
'/api/games/reversi/match', "/api/i/pin",
'/api/games/reversi/match/cancel', "/api/i/read-all-unread-notes",
'/api/get-online-users-count', "/api/i/read-announcement",
'/api/hashtags/list', "/api/i/unpin",
'/api/hashtags/search', "/api/i/update",
'/api/hashtags/show', "/api/i/webhooks/create",
'/api/hashtags/trend', "/api/i/webhooks/list",
'/api/hashtags/users', "/api/i/webhooks/show",
'/api/i', "/api/i/webhooks/update",
'/api/i/favorites', "/api/i/webhooks/delete",
'/api/i/gallery/likes', "/api/meta",
'/api/i/gallery/posts', "/api/emojis",
'/api/i/get-word-muted-notes-count', "/api/mute/create",
'/api/i/notifications', "/api/mute/delete",
'/api/i/page-likes', "/api/mute/list",
'/api/i/pages', "/api/renote-mute/create",
'/api/i/pin', "/api/renote-mute/delete",
'/api/i/read-all-messaging-messages', "/api/renote-mute/list",
'/api/i/read-all-unread-notes', "/api/my/apps",
'/api/i/read-announcement', "/api/notes",
'/api/i/registry/get', "/api/notes/children",
'/api/i/registry/get-all', "/api/notes/clips",
'/api/i/registry/get-detail', "/api/notes/conversation",
'/api/i/registry/keys', "/api/notes/create",
'/api/i/registry/keys-with-type', "/api/notes/delete",
'/api/i/registry/remove', "/api/notes/favorites/create",
'/api/i/registry/scopes', "/api/notes/favorites/delete",
'/api/i/registry/set', "/api/notes/featured",
'/api/i/unpin', "/api/notes/global-timeline",
'/api/i/update', "/api/notes/hybrid-timeline",
'/api/i/user-group-invites', "/api/notes/local-timeline",
'/api/i/webhooks/create', "/api/notes/mentions",
'/api/i/webhooks/delete', "/api/notes/polls/recommendation",
'/api/i/webhooks/list', "/api/notes/polls/vote",
'/api/i/webhooks/show', "/api/notes/reactions",
'/api/i/webhooks/update', "/api/notes/reactions/create",
'/api/messaging/history', "/api/notes/reactions/delete",
'/api/messaging/messages', "/api/notes/renotes",
'/api/messaging/messages/create', "/api/notes/replies",
'/api/messaging/messages/delete', "/api/notes/search-by-tag",
'/api/messaging/messages/read', "/api/notes/search",
'/api/meta', "/api/notes/show",
'/api/mute/create', "/api/notes/state",
'/api/mute/delete', "/api/notes/thread-muting/create",
'/api/mute/list', "/api/notes/thread-muting/delete",
'/api/my/apps', "/api/notes/timeline",
'/api/notes', "/api/notes/translate",
'/api/notes/children', "/api/notes/unrenote",
'/api/notes/clips', "/api/notes/user-list-timeline",
'/api/notes/conversation', "/api/notifications/create",
'/api/notes/create', "/api/notifications/mark-all-as-read",
'/api/notes/delete', "/api/notifications/read",
'/api/notes/favorites/create', "/api/pages/create",
'/api/notes/favorites/delete', "/api/pages/delete",
'/api/notes/featured', "/api/pages/featured",
'/api/notes/global-timeline', "/api/pages/like",
'/api/notes/hybrid-timeline', "/api/pages/show",
'/api/notes/local-timeline', "/api/pages/unlike",
'/api/notes/mentions', "/api/pages/update",
'/api/notes/polls/recommendation', "/api/flash/create",
'/api/notes/polls/vote', "/api/flash/delete",
'/api/notes/reactions', "/api/flash/featured",
'/api/notes/reactions/create', "/api/flash/like",
'/api/notes/reactions/delete', "/api/flash/show",
'/api/notes/renotes', "/api/flash/unlike",
'/api/notes/replies', "/api/flash/update",
'/api/notes/search', "/api/flash/my",
'/api/notes/search-by-tag', "/api/flash/my-likes",
'/api/notes/show', "/api/ping",
'/api/notes/state', "/api/pinned-users",
'/api/notes/thread-muting/create', "/api/promo/read",
'/api/notes/thread-muting/delete', "/api/roles/list",
'/api/notes/timeline', "/api/roles/show",
'/api/notes/translate', "/api/roles/users",
'/api/notes/unrenote', "/api/request-reset-password",
'/api/notes/user-list-timeline', "/api/reset-db",
'/api/notes/watching/create', "/api/reset-password",
'/api/notes/watching/delete', "/api/server-info",
'/api/notifications/create', "/api/stats",
'/api/notifications/mark-all-as-read', "/api/sw/show-registration",
'/api/notifications/read', "/api/sw/update-registration",
'/api/pages/create', "/api/sw/register",
'/api/pages/delete', "/api/sw/unregister",
'/api/pages/featured', "/api/test",
'/api/pages/like', "/api/username/available",
'/api/pages/show', "/api/users",
'/api/pages/unlike', "/api/users/clips",
'/api/pages/update', "/api/users/followers",
'/api/ping', "/api/users/following",
'/api/pinned-users', "/api/users/gallery/posts",
'/api/promo/read', "/api/users/get-frequently-replied-users",
'/api/request-reset-password', "/api/users/lists/create",
'/api/reset-db', "/api/users/lists/delete",
'/api/reset-password', "/api/users/lists/list",
'/api/room/show', "/api/users/lists/pull",
'/api/room/update', "/api/users/lists/push",
'/api/server-info', "/api/users/lists/show",
'/api/stats', "/api/users/lists/update",
'/api/sw/register', "/api/users/notes",
'/api/sw/unregister', "/api/users/pages",
'/api/test', "/api/users/reactions",
'/api/username/available', "/api/users/recommendation",
'/api/users', "/api/users/relation",
'/api/users/achievements', "/api/users/report-abuse",
'/api/users/clips', "/api/users/search-by-username-and-host",
'/api/users/followers', "/api/users/search",
'/api/users/following', "/api/users/show",
'/api/users/gallery/posts', "/api/users/stats",
'/api/users/get-frequently-replied-users', "/api/users/achievements",
'/api/users/groups/create', "/api/fetch-rss",
'/api/users/groups/delete', "/api/retention",
'/api/users/groups/invitations/accept', "/api/admin/delete-logs",
'/api/users/groups/invitations/reject', "/api/admin/emoji/remove",
'/api/users/groups/invite', "/api/admin/invite",
'/api/users/groups/joined', "/api/admin/logs",
'/api/users/groups/leave', "/api/admin/moderators/add",
'/api/users/groups/owned', "/api/admin/moderators/remove",
'/api/users/groups/pull', "/api/admin/queue/jobs",
'/api/users/groups/show', "/api/admin/remove-abuse-user-report",
'/api/users/groups/transfer', "/api/admin/resync-chart",
'/api/users/groups/update', "/api/admin/set-premium",
'/api/users/lists/create', "/api/admin/silence-user",
'/api/users/lists/delete', "/api/admin/unset-premium",
'/api/users/lists/list', "/api/admin/unsilence-user",
'/api/users/lists/pull', "/api/admin/unverify-user",
'/api/users/lists/push', "/api/admin/update-remote-user",
'/api/users/lists/show', "/api/admin/vacuum",
'/api/users/lists/update', "/api/admin/verify-user",
'/api/users/notes', "/api/channels/pin-note",
'/api/users/pages', "/api/charts/hashtag",
'/api/users/reactions', "/api/charts/network",
'/api/users/recommendation', "/api/games/reversi/games",
'/api/users/relation', "/api/games/reversi/games/show",
'/api/users/report-abuse', "/api/games/reversi/games/surrender",
'/api/users/search', "/api/games/reversi/invitations",
'/api/users/search-by-username-and-host', "/api/games/reversi/match",
'/api/users/show', "/api/games/reversi/match/cancel",
'/api/users/stats', "/api/i/read-all-messaging-messages",
'/api/version', "/api/i/registry/get-all",
] "/api/i/registry/get-detail",
"/api/i/registry/get",
"/api/i/registry/keys-with-type",
"/api/i/registry/keys",
"/api/i/registry/remove",
"/api/i/registry/scopes",
"/api/i/registry/set",
"/api/i/user-group-invites",
"/api/messaging/history",
"/api/messaging/messages",
"/api/messaging/messages/create",
"/api/messaging/messages/delete",
"/api/messaging/messages/read",
"/api/notes/watching/create",
"/api/notes/watching/delete",
"/api/room/show",
"/api/room/update",
"/api/users/groups/create",
"/api/users/groups/delete",
"/api/users/groups/invitations/accept",
"/api/users/groups/invitations/reject",
"/api/users/groups/invite",
"/api/users/groups/joined",
"/api/users/groups/owned",
"/api/users/groups/pull",
"/api/users/groups/show",
"/api/users/groups/transfer",
"/api/users/groups/update",
"/api/version"
]
Loading…
Cancel
Save