Skip to content
Clone
951a522
573 lines 39.9 KB
/// <reference types='./globals.d.ts' />
/* tslint:disable */
/* eslint-disable */
/**
* gitdata api - version 1.0
*
*
## Conventions
### Response envelope
Every JSON response uses the same envelope:
| field | meaning |
|---|---|
| &#x60;code&#x60; | always equal to the HTTP status code |
| &#x60;message&#x60; | human-readable result / error summary |
| &#x60;data&#x60; | payload, &#x60;null&#x60; for errors and empty results |
| &#x60;error&#x60; | field-level / technical detail (e.g. validation errors), may be &#x60;null&#x60; |
| &#x60;error_code&#x60; | stable machine-readable code on 4xx (e.g. &#x60;conflict&#x60;, &#x60;rate_limited&#x60;), may be &#x60;null&#x60; |
| &#x60;request_id&#x60; / &#x60;log_id&#x60; | correlation ids, also returned as &#x60;X-Request-Id&#x60; / &#x60;X-Log-Id&#x60; headers |
Successful &#x60;POST&#x60; creation returns &#x60;200&#x60; (not &#x60;201&#x60;); empty results use &#x60;200&#x60; with &#x60;data: null&#x60;.
- &#x60;POST /auth/logout&#x60; is idempotent: repeating it always succeeds with &#x60;200&#x60;.
### Authentication
- &#x60;session_cookie&#x60;: KenOAuth access token carried in the &#x60;gitdata_session&#x60;
cookie. &#x60;GET /auth/login&#x60; starts the OIDC authorization-code + PKCE flow;
&#x60;POST /auth/refresh&#x60; rotates the access/refresh pair; &#x60;POST /auth/logout&#x60;
revokes the KenOAuth session and clears both cookies.
- &#x60;basic_access_key&#x60;: HTTP Basic auth with a KenOAuth-issued access key.
**Scope: git repository endpoints only** (&#x60;/repos/*&#x60;, &#x60;/graphql&#x60;); it is NOT
accepted by chat/issues/space/user endpoints.
### URL &amp; parameter style
- Paths are &#x60;kebab-case&#x60;, plural nouns, nesting expresses ownership.
- Query/path/JSON field names are &#x60;snake_case&#x60;; enum values are &#x60;snake_case&#x60;.
- All endpoints are versioned under &#x60;/api/v1&#x60;. &#x60;/api/v1/internal/*&#x60; is guarded
by the &#x60;x-gitdata-service-key&#x60; header and is NOT documented here.
- State-transition actions use &#x60;POST {resource}/{id}/{verb}&#x60; (close/reopen);
idempotent whole-resource state uses &#x60;PUT&#x60; (default branch, pin, read-state);
partial updates use &#x60;PATCH&#x60;.
### Pagination
- Offset style: &#x60;?limit&#x3D;&amp;offset&#x3D;&#x60; (default 50, max 100 unless stated),
response &#x60;data&#x60; is &#x60;{ items, total, limit, offset }&#x60;.
- Cursor style (chat message/sequence data): &#x60;?before_seq&#x3D;&amp;after_seq&#x3D;&amp;limit&#x3D;&#x60;,
response contains &#x60;has_more&#x60;.
### PATCH semantics (three-state fields)
Update commands use &#x60;Option&lt;Option&lt;T&gt;&gt;&#x60; for clearable fields:
- field **absent** → unchanged
- field &#x60;null&#x60; → cleared
- field value → set
Example: &#x60;{&quot;milestone_id&quot;: null}&#x60; unassigns the milestone; omitting
&#x60;milestone_id&#x60; leaves it untouched.
### 2FA
TOTP enrollment, recovery codes and sensitive-operation verification are
handled by KenOAuth; GitData only proxies the account-management endpoints.
### Operations
- &#x60;GET /healthz&#x60; — liveness probe (no auth, outside &#x60;/api/v1&#x60;).
- &#x60;GET /readyz&#x60; — readiness probe: database + redis check, &#x60;503&#x60; when down.
- Runtime metrics are pushed to the configured OTLP collector (30s interval);
there is no scrape endpoint.
- Cross-origin browser access is disabled by default; the API expects a
same-origin reverse proxy. Enable &#x60;web.cors_allow_origins&#x60; to allowlist
other origins.
### Abuse controls
- Creation endpoints are subject to per-user rolling 24h quotas
(&#x60;[quota]&#x60; config; 0 disables). Exceeding a quota returns &#x60;429&#x60;
with &#x60;error_code: &quot;rate_limited&quot;&#x60;.
### Idempotency
- &#x60;POST /chat/rooms/{room_id}/messages&#x60; accepts &#x60;nonce&#x60;: unique per room;
retrying with the same nonce returns the original message instead of a duplicate.
### Resource references
- User references in responses embed a &#x60;user&#x60; object (&#x60;UserDto&#x60;) wherever a
single person is shown; raw uuid fields are named &#x60;*_id&#x60; consistently.
- Viewer-specific state is embedded, not fetched separately: &#x60;RepoDto.me&#x60;
carries &#x60;starred&#x60;/&#x60;watch_mode&#x60;, &#x60;IssueDto.viewer_watch&#x60; carries the caller
watch mode. &#x60;PUT /repos/{space}/{repo}/star|unstar&#x60; style reads do not exist.
### Identifiers
- Issues are addressable by UUID **or** board-scoped number
(e.g. &#x60;/issues/{space}/boards/{board}/issues/123&#x60;).
- Binary uploads use raw request bodies with a content-type header
(e.g. &#x60;PUT /me/avatar&#x60; accepts &#x60;image/*&#x60; bytes, not base64 JSON).
*
* OpenAPI version: 3.1.0
*
*
* NOTE: This file is auto generated by the alova's vscode plugin.
*
* https://alova.js.org/devtools/vscode
*
* **Do not edit the file manually.**
*/
export default {
'auth.totp_disable': ['POST', '/auth/2fa/disable'],
'auth.totp_enable': ['POST', '/auth/2fa/enable'],
'auth.recovery_codes': ['GET', '/auth/2fa/recovery-codes'],
'auth.regenerate_recovery_codes': ['PUT', '/auth/2fa/recovery-codes'],
'auth.totp_setup': ['POST', '/auth/2fa/setup'],
'auth.totp_status': ['GET', '/auth/2fa/status'],
'security.list_access_keys': ['GET', '/auth/access-keys'],
'security.create_access_key': ['POST', '/auth/access-keys'],
'security.delete_access_key': ['DELETE', '/auth/access-keys/{key_id}'],
'auth.rotate_access_key': ['POST', '/auth/access-keys/{key_id}/rotate'],
'account.list_agreements': ['GET', '/auth/agreements'],
'auth.jwt_request': ['GET', '/auth/jwt-request'],
'auth.change_password': ['POST', '/auth/password/change'],
'security.list_ssh_keys': ['GET', '/auth/ssh-keys'],
'security.add_ssh_key': ['POST', '/auth/ssh-keys'],
'security.delete_ssh_key': ['DELETE', '/auth/ssh-keys/{key_id}'],
'chat.create_attachment': ['POST', '/chat/attachments'],
'chat.get_attachment': ['GET', '/chat/attachments/{attachment_id}'],
'chat.download_attachment': ['GET', '/chat/attachments/{attachment_id}/file'],
'chat.finalize_attachment': ['POST', '/chat/attachments/{attachment_id}/finalize'],
'chat.list_dms': ['GET', '/chat/dms'],
'chat.open_dm': ['POST', '/chat/dms'],
'chat.close_dm': ['DELETE', '/chat/dms/{room_id}'],
'chat.list_my_drafts': ['GET', '/chat/drafts'],
'chat.post_via_webhook': ['POST', '/chat/hooks/{token}'],
'chat.accept_room_invite': ['POST', '/chat/invites/accept'],
'chat.reject_room_invite': ['POST', '/chat/invites/reject'],
'chat.livekit_webhook': ['POST', '/chat/livekit/webhook'],
'chat.set_presence': ['PUT', '/chat/presence'],
'chat.list_reminders': ['GET', '/chat/reminders'],
'chat.cancel_reminder': ['DELETE', '/chat/reminders/{reminder_id}'],
'chat.update_reminder': ['PATCH', '/chat/reminders/{reminder_id}'],
'chat.get_room': ['GET', '/chat/rooms/{room_id}'],
'chat.delete_room': ['DELETE', '/chat/rooms/{room_id}'],
'chat.update_room': ['PATCH', '/chat/rooms/{room_id}'],
'chat.list_room_bans': ['GET', '/chat/rooms/{room_id}/bans'],
'chat.ban_room_member': ['POST', '/chat/rooms/{room_id}/bans'],
'chat.unban_room_member': ['DELETE', '/chat/rooms/{room_id}/bans/{user_id}'],
'chat.list_bookmarks': ['GET', '/chat/rooms/{room_id}/bookmarks'],
'chat.create_bookmark': ['POST', '/chat/rooms/{room_id}/bookmarks'],
'chat.delete_bookmark': ['DELETE', '/chat/rooms/{room_id}/bookmarks/{bookmark_id}'],
'chat.update_bookmark': ['PATCH', '/chat/rooms/{room_id}/bookmarks/{bookmark_id}'],
'chat.get_draft': ['GET', '/chat/rooms/{room_id}/draft'],
'chat.upsert_draft': ['PUT', '/chat/rooms/{room_id}/draft'],
'chat.delete_draft': ['DELETE', '/chat/rooms/{room_id}/draft'],
'chat.list_room_invites': ['GET', '/chat/rooms/{room_id}/invites'],
'chat.create_room_invite': ['POST', '/chat/rooms/{room_id}/invites'],
'chat.revoke_room_invite': ['DELETE', '/chat/rooms/{room_id}/invites/{invite_id}'],
'chat.list_room_members': ['GET', '/chat/rooms/{room_id}/members'],
'chat.add_room_members': ['POST', '/chat/rooms/{room_id}/members'],
'chat.join_room': ['PUT', '/chat/rooms/{room_id}/members/@me'],
'chat.leave_room': ['DELETE', '/chat/rooms/{room_id}/members/@me'],
'chat.get_room_member': ['GET', '/chat/rooms/{room_id}/members/{user_id}'],
'chat.kick_room_member': ['DELETE', '/chat/rooms/{room_id}/members/{user_id}'],
'chat.update_room_member': ['PATCH', '/chat/rooms/{room_id}/members/{user_id}'],
'chat.list_messages': ['GET', '/chat/rooms/{room_id}/messages'],
'chat.send_message': ['POST', '/chat/rooms/{room_id}/messages'],
'chat.bulk_delete_messages': ['POST', '/chat/rooms/{room_id}/messages/bulk-delete'],
'chat.get_message': ['GET', '/chat/rooms/{room_id}/messages/{message_id}'],
'chat.delete_message': ['DELETE', '/chat/rooms/{room_id}/messages/{message_id}'],
'chat.update_message': ['PATCH', '/chat/rooms/{room_id}/messages/{message_id}'],
'chat.forward_message': ['POST', '/chat/rooms/{room_id}/messages/{message_id}/forward'],
'chat.list_message_history': ['GET', '/chat/rooms/{room_id}/messages/{message_id}/history'],
'chat.set_message_pin': ['PUT', '/chat/rooms/{room_id}/messages/{message_id}/pin'],
'chat.list_reactions': ['GET', '/chat/rooms/{room_id}/messages/{message_id}/reactions'],
'chat.add_reaction': ['PUT', '/chat/rooms/{room_id}/messages/{message_id}/reactions/@me'],
'chat.remove_reaction': ['DELETE', '/chat/rooms/{room_id}/messages/{message_id}/reactions/@me'],
'chat.create_reminder': ['POST', '/chat/rooms/{room_id}/messages/{message_id}/reminders'],
'chat.create_thread': ['POST', '/chat/rooms/{room_id}/messages/{message_id}/threads'],
'chat.list_outbound_webhooks': ['GET', '/chat/rooms/{room_id}/outbound-webhooks'],
'chat.create_outbound_webhook': ['POST', '/chat/rooms/{room_id}/outbound-webhooks'],
'chat.delete_outbound_webhook': ['DELETE', '/chat/rooms/{room_id}/outbound-webhooks/{webhook_id}'],
'chat.update_outbound_webhook': ['PATCH', '/chat/rooms/{room_id}/outbound-webhooks/{webhook_id}'],
'chat.transfer_room_owner': ['PUT', '/chat/rooms/{room_id}/owner'],
'chat.list_pins': ['GET', '/chat/rooms/{room_id}/pins'],
'chat.get_read_state': ['GET', '/chat/rooms/{room_id}/read-state'],
'chat.mark_read': ['PUT', '/chat/rooms/{room_id}/read-state'],
'chat.get_room_setting': ['GET', '/chat/rooms/{room_id}/settings'],
'chat.update_room_setting': ['PUT', '/chat/rooms/{room_id}/settings'],
'chat.list_threads': ['GET', '/chat/rooms/{room_id}/threads'],
'chat.list_hands': ['GET', '/chat/rooms/{room_id}/voice/hands'],
'chat.raise_hand': ['POST', '/chat/rooms/{room_id}/voice/hands'],
'chat.cancel_hand': ['DELETE', '/chat/rooms/{room_id}/voice/hands/@me'],
'chat.approve_hand': ['POST', '/chat/rooms/{room_id}/voice/hands/{user_id}/approve'],
'chat.deny_hand': ['POST', '/chat/rooms/{room_id}/voice/hands/{user_id}/deny'],
'chat.revoke_hand': ['POST', '/chat/rooms/{room_id}/voice/hands/{user_id}/revoke'],
'chat.get_voice_layout': ['GET', '/chat/rooms/{room_id}/voice/layout'],
'chat.save_voice_layout': ['PUT', '/chat/rooms/{room_id}/voice/layout'],
'chat.voice_participants': ['GET', '/chat/rooms/{room_id}/voice/participants'],
'chat.kick_participant': ['DELETE', '/chat/rooms/{room_id}/voice/participants/{user_id}'],
'chat.moderate_mute': ['POST', '/chat/rooms/{room_id}/voice/participants/{user_id}/mute'],
'chat.start_recording': ['POST', '/chat/rooms/{room_id}/voice/recording/start'],
'chat.stop_recording': ['POST', '/chat/rooms/{room_id}/voice/recording/stop'],
'chat.voice_token': ['POST', '/chat/rooms/{room_id}/voice/token'],
'chat.list_webhooks': ['GET', '/chat/rooms/{room_id}/webhooks'],
'chat.create_webhook': ['POST', '/chat/rooms/{room_id}/webhooks'],
'chat.delete_webhook': ['DELETE', '/chat/rooms/{room_id}/webhooks/{webhook_id}'],
'chat.update_webhook': ['PATCH', '/chat/rooms/{room_id}/webhooks/{webhook_id}'],
'chat.list_emojis': ['GET', '/chat/spaces/{space_name}/emojis'],
'chat.upload_emoji': ['POST', '/chat/spaces/{space_name}/emojis'],
'chat.get_emoji': ['GET', '/chat/spaces/{space_name}/emojis/{emoji_id}'],
'chat.delete_emoji': ['DELETE', '/chat/spaces/{space_name}/emojis/{emoji_id}'],
'chat.emoji_image': ['GET', '/chat/spaces/{space_name}/emojis/{emoji_id}/image'],
'chat.list_space_presences': ['GET', '/chat/spaces/{space_name}/presences'],
'chat.list_space_read_states': ['GET', '/chat/spaces/{space_name}/read-states'],
'chat.list_space_rooms': ['GET', '/chat/spaces/{space_name}/rooms'],
'chat.create_room': ['POST', '/chat/spaces/{space_name}/rooms'],
'chat.voice_space_states': ['GET', '/chat/spaces/{space_name}/voice-states'],
'chat.list_my_threads': ['GET', '/chat/threads'],
'chat.get_thread': ['GET', '/chat/threads/{thread_id}'],
'chat.update_thread': ['PATCH', '/chat/threads/{thread_id}'],
'chat.follow_thread': ['PUT', '/chat/threads/{thread_id}/members/@me'],
'chat.unfollow_thread': ['DELETE', '/chat/threads/{thread_id}/members/@me'],
'chat.mark_thread_read': ['PUT', '/chat/threads/{thread_id}/read-state'],
'chat.get_presence': ['GET', '/chat/users/{user_id}/presence'],
'chat.voice_config': ['GET', '/chat/voice/config'],
'issues.create_issue_attachment': ['POST', '/issues/attachments'],
'issues.delete_issue_attachment': ['DELETE', '/issues/attachments/{attachment_id}'],
'issues.download_issue_attachment': ['GET', '/issues/attachments/{attachment_id}/file'],
'issues.finalize_issue_attachment': ['POST', '/issues/attachments/{attachment_id}/finalize'],
'issues.list_boards': ['GET', '/issues/{space_name}/boards'],
'issues.create_board': ['POST', '/issues/{space_name}/boards'],
'issues.get_board': ['GET', '/issues/{space_name}/boards/{board_id}'],
'issues.delete_board': ['DELETE', '/issues/{space_name}/boards/{board_id}'],
'issues.update_board': ['PATCH', '/issues/{space_name}/boards/{board_id}'],
'issues.list_issues': ['GET', '/issues/{space_name}/boards/{board_id}/issues'],
'issues.create_issue': ['POST', '/issues/{space_name}/boards/{board_id}/issues'],
'issues.bulk_issues': ['POST', '/issues/{space_name}/boards/{board_id}/issues/bulk'],
'issues.get_issue': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}'],
'issues.delete_issue': ['DELETE', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}'],
'issues.update_issue': ['PATCH', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}'],
'issues.list_issue_attachments': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/attachments'],
'issues.close_issue': ['POST', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/close'],
'issues.list_comments': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/comments'],
'issues.create_comment': ['POST', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/comments'],
'issues.list_comments_tree': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/comments/tree'],
'issues.get_comment': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/comments/{comment_id}'],
'issues.delete_comment': ['DELETE', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/comments/{comment_id}'],
'issues.update_comment': ['PATCH', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/comments/{comment_id}'],
'issues.list_comment_reactions': [
'GET',
'/issues/{space_name}/boards/{board_id}/issues/{issue_id}/comments/{comment_id}/reactions'
],
'issues.add_comment_reaction': [
'PUT',
'/issues/{space_name}/boards/{board_id}/issues/{issue_id}/comments/{comment_id}/reactions/@me'
],
'issues.remove_comment_reaction': [
'DELETE',
'/issues/{space_name}/boards/{board_id}/issues/{issue_id}/comments/{comment_id}/reactions/@me'
],
'issues.list_dependencies': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/dependencies'],
'issues.create_dependency': ['POST', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/dependencies'],
'issues.delete_dependency': [
'DELETE',
'/issues/{space_name}/boards/{board_id}/issues/{issue_id}/dependencies/{dep_id}'
],
'issues.list_dependents': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/dependents'],
'issues.list_events': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/events'],
'issues.list_content_history': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/history'],
'issues.list_labels_for_issue': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/labels'],
'issues.bind_label': ['POST', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/labels/{label_id}'],
'issues.unbind_label': ['DELETE', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/labels/{label_id}'],
'issues.list_issue_members': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/members'],
'issues.create_member': ['POST', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/members'],
'issues.delete_member': ['DELETE', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/members/{member_id}'],
'pulls.list_issue_pulls': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/pulls'],
'pulls.link_issue_pull': ['POST', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/pulls'],
'pulls.unlink_issue_pull': ['DELETE', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/pulls/{relation_id}'],
'issues.list_issue_reactions': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/reactions'],
'issues.add_issue_reaction': ['PUT', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/reactions/@me'],
'issues.remove_issue_reaction': ['DELETE', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/reactions/@me'],
'issues.mark_issue_read': ['PUT', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/read-state'],
'issues.reopen_issue': ['POST', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/reopen'],
'issues.list_repo_relations': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/repos'],
'issues.create_repo_relation': ['POST', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/repos'],
'issues.delete_repo_relation': ['DELETE', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/repos/{rel_id}'],
'issues.get_stopwatch': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/stopwatch'],
'issues.start_stopwatch': ['POST', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/stopwatch/start'],
'issues.stop_stopwatch': ['POST', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/stopwatch/stop'],
'issues.list_tracked_time': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/times'],
'issues.create_tracked_time': ['POST', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/times'],
'issues.delete_tracked_time': ['DELETE', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/times/{time_id}'],
'issues.update_tracked_time': ['PATCH', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/times/{time_id}'],
'issues.list_issue_users': ['GET', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/users'],
'issues.upsert_issue_watch': ['PUT', '/issues/{space_name}/boards/{board_id}/issues/{issue_id}/watch'],
'issues.list_labels': ['GET', '/issues/{space_name}/boards/{board_id}/labels'],
'issues.create_label': ['POST', '/issues/{space_name}/boards/{board_id}/labels'],
'issues.get_label': ['GET', '/issues/{space_name}/boards/{board_id}/labels/{label_id}'],
'issues.delete_label': ['DELETE', '/issues/{space_name}/boards/{board_id}/labels/{label_id}'],
'issues.update_label': ['PATCH', '/issues/{space_name}/boards/{board_id}/labels/{label_id}'],
'issues.list_milestones': ['GET', '/issues/{space_name}/boards/{board_id}/milestones'],
'issues.create_milestone': ['POST', '/issues/{space_name}/boards/{board_id}/milestones'],
'issues.get_milestone': ['GET', '/issues/{space_name}/boards/{board_id}/milestones/{milestone_id}'],
'issues.delete_milestone': ['DELETE', '/issues/{space_name}/boards/{board_id}/milestones/{milestone_id}'],
'issues.update_milestone': ['PATCH', '/issues/{space_name}/boards/{board_id}/milestones/{milestone_id}'],
'issues.list_board_pins': ['GET', '/issues/{space_name}/boards/{board_id}/pins'],
'issues.create_pin': ['POST', '/issues/{space_name}/boards/{board_id}/pins'],
'issues.delete_pin': ['DELETE', '/issues/{space_name}/boards/{board_id}/pins/{pin_id}'],
'issues.update_pin': ['PATCH', '/issues/{space_name}/boards/{board_id}/pins/{pin_id}'],
'licenses.list_licenses': ['GET', '/licenses'],
'licenses.get_license': ['GET', '/licenses/{name}'],
'account.me': ['GET', '/me'],
'account.update_profile': ['PATCH', '/me'],
'account.accept_agreement': ['PUT', '/me/agreements/{key}'],
'user.get_avatar': ['GET', '/me/avatar'],
'user.upload_avatar': ['PUT', '/me/avatar'],
'user.delete_avatar': ['DELETE', '/me/avatar'],
'account.list_devices': ['GET', '/me/devices'],
'user.list_memes': ['GET', '/me/memes'],
'user.create_meme': ['POST', '/me/memes'],
'user.update_meme': ['PUT', '/me/memes/{meme_id}'],
'user.delete_meme': ['DELETE', '/me/memes/{meme_id}'],
'user.list_saved_messages': ['GET', '/me/messages/saved'],
'user.save_message': ['POST', '/me/messages/saved'],
'user.unsave_message': ['DELETE', '/me/messages/saved/{message_id}'],
'notifications.list_notifications': ['GET', '/me/notifications'],
'account.mark_notifications_read': ['PUT', '/me/notifications/read'],
'notifications.unread_notifications_count': ['GET', '/me/notifications/unread-count'],
'notifications.delete_notification': ['DELETE', '/me/notifications/{notification_id}'],
'account.get_preferences': ['GET', '/me/preferences'],
'account.update_preferences': ['PATCH', '/me/preferences'],
'user.list_push_subscriptions': ['GET', '/me/push-subscriptions'],
'user.upsert_push_subscription': ['POST', '/me/push-subscriptions'],
'user.delete_push_subscription': ['DELETE', '/me/push-subscriptions/{push_id}'],
'user.recent_mentions': ['GET', '/me/recent-mentions'],
'user.my_reports': ['GET', '/me/reports'],
'reports.create_report': ['POST', '/me/reports'],
'user.list_sessions': ['GET', '/me/sessions'],
'user.revoke_all_sessions': ['DELETE', '/me/sessions'],
'user.revoke_session': ['DELETE', '/me/sessions/{session_id}'],
'user.my_spaces': ['GET', '/me/spaces'],
'user.my_suspensions': ['GET', '/me/suspensions'],
'account.update_username': ['PUT', '/me/username'],
'pulls.list_my_pulls': ['GET', '/pulls/@me/{scope}'],
'push.push_config': ['GET', '/push/config'],
'content.caller_signature': ['POST', '/repos/utils/commit-signature'],
'patches.patch_parse': ['POST', '/repos/utils/patch/parse'],
'repos.list_repos': ['GET', '/repos/{space_name}'],
'repos.create_repo': ['POST', '/repos/{space_name}'],
'repos.get_repo': ['GET', '/repos/{space_name}/{repo_name}'],
'repos.update_repo': ['PATCH', '/repos/{space_name}/{repo_name}'],
'analysis.code_activity': ['GET', '/repos/{space_name}/{repo_name}/analysis/code-activity'],
'analysis.contributors': ['GET', '/repos/{space_name}/{repo_name}/analysis/contributors'],
'analysis.languages_read': ['GET', '/repos/{space_name}/{repo_name}/analysis/languages'],
'analysis.languages': ['POST', '/repos/{space_name}/{repo_name}/analysis/languages'],
'repos.archive_repo': ['POST', '/repos/{space_name}/{repo_name}/archive'],
'archives.create_archive': ['POST', '/repos/{space_name}/{repo_name}/archives'],
'archives.create_bundle': ['POST', '/repos/{space_name}/{repo_name}/archives/bundle'],
'archives.get_archive': ['GET', '/repos/{space_name}/{repo_name}/archives/{revision}'],
'blame.blame': ['GET', '/repos/{space_name}/{repo_name}/blame'],
'blobs.blob_content': ['GET', '/repos/{space_name}/{repo_name}/blobs/{oid}/content'],
'blobs.blob_metadata': ['GET', '/repos/{space_name}/{repo_name}/blobs/{oid}/metadata'],
'protection.list_policies': ['GET', '/repos/{space_name}/{repo_name}/branch-protection'],
'protection.create_policy': ['POST', '/repos/{space_name}/{repo_name}/branch-protection'],
'protection.get_policy': ['GET', '/repos/{space_name}/{repo_name}/branch-protection/{policy_id}'],
'protection.delete_policy': ['DELETE', '/repos/{space_name}/{repo_name}/branch-protection/{policy_id}'],
'protection.update_policy': ['PATCH', '/repos/{space_name}/{repo_name}/branch-protection/{policy_id}'],
'branch_protection.list_branch_whitelists': [
'GET',
'/repos/{space_name}/{repo_name}/branch-protection/{policy_id}/whitelists'
],
'branch_protection.add_branch_whitelist': [
'POST',
'/repos/{space_name}/{repo_name}/branch-protection/{policy_id}/whitelists'
],
'branch_protection.remove_branch_whitelist': [
'DELETE',
'/repos/{space_name}/{repo_name}/branch-protection/{policy_id}/whitelists/{whitelist_id}'
],
'branches.list_branches': ['GET', '/repos/{space_name}/{repo_name}/branches'],
'branches.create_branch': ['POST', '/repos/{space_name}/{repo_name}/branches'],
'branches.get_branch': ['GET', '/repos/{space_name}/{repo_name}/branches/{name}'],
'branches.delete_branch': ['DELETE', '/repos/{space_name}/{repo_name}/branches/{name}'],
'branches.rename_branch': ['PATCH', '/repos/{space_name}/{repo_name}/branches/{name}'],
'branches.set_default_branch': ['PUT', '/repos/{space_name}/{repo_name}/branches/{name}/default'],
'codeComments.list_code_comments': ['GET', '/repos/{space_name}/{repo_name}/code-comments'],
'codeComments.create_code_comment': ['POST', '/repos/{space_name}/{repo_name}/code-comments'],
'codeComments.delete_code_comment': ['DELETE', '/repos/{space_name}/{repo_name}/code-comments/{comment_id}'],
'codeComments.update_code_comment': ['PATCH', '/repos/{space_name}/{repo_name}/code-comments/{comment_id}'],
'codeComments.resolve_code_comment': ['PUT', '/repos/{space_name}/{repo_name}/code-comments/{comment_id}/resolve'],
'codeComments.unresolve_code_comment': [
'DELETE',
'/repos/{space_name}/{repo_name}/code-comments/{comment_id}/resolve'
],
'commits.set_commit_status': ['POST', '/repos/{space_name}/{repo_name}/commit-statuses'],
'commits.list_commit_statuses': ['GET', '/repos/{space_name}/{repo_name}/commit-statuses/{sha}'],
'commits.list_commits': ['GET', '/repos/{space_name}/{repo_name}/commits'],
'commits.is_ancestor': ['GET', '/repos/{space_name}/{repo_name}/commits/ancestor'],
'commits.commit_stats': ['GET', '/repos/{space_name}/{repo_name}/commits/stats'],
'commits.get_commit': ['GET', '/repos/{space_name}/{repo_name}/commits/{revision}'],
'conflicts.get_conflicts': ['GET', '/repos/{space_name}/{repo_name}/conflicts'],
'conflicts.conflict_detail': ['GET', '/repos/{space_name}/{repo_name}/conflicts/detail'],
'diffs.get_diff': ['GET', '/repos/{space_name}/{repo_name}/diff'],
'diffs.diff_for_commit': ['GET', '/repos/{space_name}/{repo_name}/diff/for-commit/{commit}'],
'diffs.range_diff': ['GET', '/repos/{space_name}/{repo_name}/diff/range'],
'diffs.diff_raw': ['GET', '/repos/{space_name}/{repo_name}/diff/raw'],
'hooks.execute_script': ['POST', '/repos/{space_name}/{repo_name}/hooks/{script}'],
'blobs.list_lfs_pointers': ['GET', '/repos/{space_name}/{repo_name}/lfs-pointers'],
'lfs.list_locks': ['GET', '/repos/{space_name}/{repo_name}/lfs/locks'],
'lfs.lock': ['POST', '/repos/{space_name}/{repo_name}/lfs/locks'],
'lfs.unlock': ['DELETE', '/repos/{space_name}/{repo_name}/lfs/locks'],
'lfs.verify_locks': ['POST', '/repos/{space_name}/{repo_name}/lfs/locks/verify'],
'lfs.unlock_by_id': ['DELETE', '/repos/{space_name}/{repo_name}/lfs/locks/{lock_id}'],
'patches.patch_generate': ['GET', '/repos/{space_name}/{repo_name}/patch/generate'],
'logs.path_log': ['GET', '/repos/{space_name}/{repo_name}/path-log'],
'pulls.list_pulls': ['GET', '/repos/{space_name}/{repo_name}/pulls'],
'pulls.create_pull': ['POST', '/repos/{space_name}/{repo_name}/pulls'],
'pulls.list_label_options': ['GET', '/repos/{space_name}/{repo_name}/pulls/label-options'],
'pulls.get_pull': ['GET', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}'],
'pulls.delete_pull': ['DELETE', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}'],
'pulls.update_pull': ['PATCH', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}'],
'pulls.list_pull_assignees': ['GET', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/assignees'],
'pulls.add_pull_assignee': ['POST', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/assignees/{user_ref}'],
'pulls.remove_pull_assignee': ['DELETE', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/assignees/{user_ref}'],
'pulls.get_pull_checks': ['GET', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/checks'],
'pulls.close_pull': ['POST', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/close'],
'pulls.list_pull_comments': ['GET', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/comments'],
'pulls.create_pull_comment': ['POST', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/comments'],
'pulls.list_pull_comment_tree': ['GET', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/comments/tree'],
'pulls.delete_pull_comment': ['DELETE', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/comments/{comment_id}'],
'pulls.update_pull_comment': ['PATCH', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/comments/{comment_id}'],
'pulls.resolve_pull_comment': [
'PUT',
'/repos/{space_name}/{repo_name}/pulls/{pull_ref}/comments/{comment_id}/resolve'
],
'pulls.unresolve_pull_comment': [
'DELETE',
'/repos/{space_name}/{repo_name}/pulls/{pull_ref}/comments/{comment_id}/resolve'
],
'pulls.list_pull_commits': ['GET', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/commits'],
'pulls.list_pull_events': ['GET', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/events'],
'pulls.get_pull_files': ['GET', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/files'],
'pulls.get_pull_gate': ['GET', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/gate'],
'pulls.list_pull_labels': ['GET', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/labels'],
'pulls.attach_pull_label': ['POST', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/labels'],
'pulls.detach_pull_label': ['DELETE', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/labels/{label_ref}'],
'pulls.lock_pull': ['PUT', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/lock'],
'pulls.unlock_pull': ['DELETE', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/lock'],
'pulls.merge_pull': ['POST', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/merge'],
'pulls.get_pull_patch': ['GET', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/patch'],
'pulls.reopen_pull': ['POST', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/reopen'],
'reviews.list_requested_reviewers': ['GET', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/requested-reviewers'],
'reviews.request_reviewers': ['POST', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/requested-reviewers'],
'reviews.delete_requested_reviewer': [
'DELETE',
'/repos/{space_name}/{repo_name}/pulls/{pull_ref}/requested-reviewers/{user_id}'
],
'reviews.list_reviews': ['GET', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/reviews'],
'reviews.submit_review': ['POST', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/reviews'],
'reviews.get_review': ['GET', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/reviews/{review_id}'],
'reviews.dismiss_review': ['PUT', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/reviews/{review_id}/dismiss'],
'reviews.publish_review': ['POST', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/reviews/{review_id}/submit'],
'pulls.refresh_pull_summary': ['POST', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/summary'],
'pulls.update_branch_pull': ['POST', '/repos/{space_name}/{repo_name}/pulls/{pull_ref}/update-branch'],
'releases.list_releases': ['GET', '/repos/{space_name}/{repo_name}/releases'],
'releases.create_release': ['POST', '/repos/{space_name}/{repo_name}/releases'],
'releases.get_release': ['GET', '/repos/{space_name}/{repo_name}/releases/{tag}'],
'releases.delete_release': ['DELETE', '/repos/{space_name}/{repo_name}/releases/{tag}'],
'releases.update_release': ['PATCH', '/repos/{space_name}/{repo_name}/releases/{tag}'],
'remotes.list_remotes': ['GET', '/repos/{space_name}/{repo_name}/remotes'],
'remotes.fetch': ['POST', '/repos/{space_name}/{repo_name}/remotes/fetch'],
'remotes.clone_import': ['POST', '/repos/{space_name}/{repo_name}/remotes/import'],
'remotes.push': ['POST', '/repos/{space_name}/{repo_name}/remotes/push'],
'remotes.upsert_remote': ['PUT', '/repos/{space_name}/{repo_name}/remotes/{name}'],
'remotes.remove': ['DELETE', '/repos/{space_name}/{repo_name}/remotes/{name}'],
'commits.rev_parse': ['GET', '/repos/{space_name}/{repo_name}/rev/{revision}'],
'signatures.verify_commit': ['GET', '/repos/{space_name}/{repo_name}/signatures/commit/{sha}'],
'signatures.verify_tag': ['GET', '/repos/{space_name}/{repo_name}/signatures/tag/{name}'],
'repos.star_repo': ['PUT', '/repos/{space_name}/{repo_name}/star'],
'repos.unstar_repo': ['DELETE', '/repos/{space_name}/{repo_name}/star'],
'repos.list_stargazers': ['GET', '/repos/{space_name}/{repo_name}/stargazers'],
'submodules.submodule_list': ['GET', '/repos/{space_name}/{repo_name}/submodules'],
'submodules.submodule_resolve': ['GET', '/repos/{space_name}/{repo_name}/submodules/resolve'],
'tag_protection.list_policies': ['GET', '/repos/{space_name}/{repo_name}/tag-protection'],
'tag_protection.create_policy': ['POST', '/repos/{space_name}/{repo_name}/tag-protection'],
'tag_protection.get_policy': ['GET', '/repos/{space_name}/{repo_name}/tag-protection/{policy_id}'],
'tag_protection.delete_policy': ['DELETE', '/repos/{space_name}/{repo_name}/tag-protection/{policy_id}'],
'tag_protection.update_policy': ['PATCH', '/repos/{space_name}/{repo_name}/tag-protection/{policy_id}'],
'tag_protection.list_tag_whitelists': [
'GET',
'/repos/{space_name}/{repo_name}/tag-protection/{policy_id}/whitelists'
],
'tag_protection.add_tag_whitelist': ['POST', '/repos/{space_name}/{repo_name}/tag-protection/{policy_id}/whitelists'],
'tag_protection.remove_tag_whitelist': [
'DELETE',
'/repos/{space_name}/{repo_name}/tag-protection/{policy_id}/whitelists/{user_id}'
],
'tags.list_tags': ['GET', '/repos/{space_name}/{repo_name}/tags'],
'tags.create_tag': ['POST', '/repos/{space_name}/{repo_name}/tags'],
'tags.get_tag': ['GET', '/repos/{space_name}/{repo_name}/tags/{name}'],
'tags.delete_tag': ['DELETE', '/repos/{space_name}/{repo_name}/tags/{name}'],
'repos.list_repo_topics': ['GET', '/repos/{space_name}/{repo_name}/topics'],
'repos.add_topic_to_repo': ['PUT', '/repos/{space_name}/{repo_name}/topics/{topic_name}'],
'repos.remove_topic_from_repo': ['DELETE', '/repos/{space_name}/{repo_name}/topics/{topic_name}'],
'trees.get_tree': ['GET', '/repos/{space_name}/{repo_name}/tree/{revision}'],
'repos.unarchive_repo': ['POST', '/repos/{space_name}/{repo_name}/unarchive'],
'repos.upsert_watch': ['PUT', '/repos/{space_name}/{repo_name}/watch'],
'repos.list_watchers': ['GET', '/repos/{space_name}/{repo_name}/watchers'],
'space.list_spaces': ['GET', '/spaces'],
'space.create_space': ['POST', '/spaces'],
'space.explore_spaces': ['GET', '/spaces/explore'],
'space.accept_invite': ['POST', '/spaces/invites/accept'],
'space.reject_invite': ['POST', '/spaces/invites/reject'],
'space.get_space': ['GET', '/spaces/{space_name}'],
'space.delete_space': ['DELETE', '/spaces/{space_name}'],
'space.update_space': ['PATCH', '/spaces/{space_name}'],
'space.list_bans': ['GET', '/spaces/{space_name}/bans'],
'space.ban_user': ['POST', '/spaces/{space_name}/bans'],
'space.get_ban': ['GET', '/spaces/{space_name}/bans/{user_id}'],
'space.unban_user': ['DELETE', '/spaces/{space_name}/bans/{user_id}'],
'space.update_ban': ['PATCH', '/spaces/{space_name}/bans/{user_id}'],
'cleanup.list_cleanup_objects': ['GET', '/spaces/{space_name}/cleanup'],
'cleanup.delete_cleanup_object': ['DELETE', '/spaces/{space_name}/cleanup/{kind}/{object_id}'],
'cleanup.set_cleanup_archive': ['POST', '/spaces/{space_name}/cleanup/{kind}/{object_id}/archive'],
'cleanup.clear_cleanup_overwrites': ['DELETE', '/spaces/{space_name}/cleanup/{kind}/{object_id}/overwrites'],
'cleanup.set_cleanup_visibility': ['POST', '/spaces/{space_name}/cleanup/{kind}/{object_id}/visibility'],
'space.get_space_dir_tree': ['GET', '/spaces/{space_name}/dir'],
'space.create_dir_node': ['POST', '/spaces/{space_name}/dir'],
'space.repair_dir_parents': ['POST', '/spaces/{space_name}/dir/repair-parents'],
'space.update_dir_node': ['PATCH', '/spaces/{space_name}/dir/{dir_id}'],
'space.list_dir_group_overwrites': ['GET', '/spaces/{space_name}/dir/{dir_id}/overwrites/groups'],
'space.set_dir_group_overwrite': ['PUT', '/spaces/{space_name}/dir/{dir_id}/overwrites/groups/{group_id}'],
'space.remove_dir_group_overwrite': ['DELETE', '/spaces/{space_name}/dir/{dir_id}/overwrites/groups/{group_id}'],
'space.list_dir_user_overwrites': ['GET', '/spaces/{space_name}/dir/{dir_id}/overwrites/users'],
'space.set_dir_user_overwrite': ['PUT', '/spaces/{space_name}/dir/{dir_id}/overwrites/users/{user_id}'],
'space.remove_dir_user_overwrite': ['DELETE', '/spaces/{space_name}/dir/{dir_id}/overwrites/users/{user_id}'],
'space.move_dir_node': ['PATCH', '/spaces/{space_name}/dir/{dir_id}/position'],
'space.list_groups': ['GET', '/spaces/{space_name}/groups'],
'space.create_group': ['POST', '/spaces/{space_name}/groups'],
'space.get_group': ['GET', '/spaces/{space_name}/groups/{group_id}'],
'space.delete_group': ['DELETE', '/spaces/{space_name}/groups/{group_id}'],
'space.update_group': ['PATCH', '/spaces/{space_name}/groups/{group_id}'],
'space.join_group_self': ['POST', '/spaces/{space_name}/groups/{group_id}/join'],
'space.leave_group_self': ['DELETE', '/spaces/{space_name}/groups/{group_id}/join'],
'space.get_space_image': ['GET', '/spaces/{space_name}/images/{kind}'],
'space.upload_space_image': ['PUT', '/spaces/{space_name}/images/{kind}'],
'space.delete_space_image': ['DELETE', '/spaces/{space_name}/images/{kind}'],
'space.get_space_image_file': ['GET', '/spaces/{space_name}/images/{kind}/file'],
'space.list_invites': ['GET', '/spaces/{space_name}/invites'],
'space.create_invite': ['POST', '/spaces/{space_name}/invites'],
'space.revoke_invite': ['DELETE', '/spaces/{space_name}/invites/{invite_id}'],
'space.list_join_requests': ['GET', '/spaces/{space_name}/join-requests'],
'space.create_join_request': ['POST', '/spaces/{space_name}/join-requests'],
'space.withdraw_join_request': ['DELETE', '/spaces/{space_name}/join-requests/{request_id}'],
'space.approve_join_request': ['POST', '/spaces/{space_name}/join-requests/{request_id}/approve'],
'space.reject_join_request': ['POST', '/spaces/{space_name}/join-requests/{request_id}/reject'],
'space.list_join_rules': ['GET', '/spaces/{space_name}/join-rules'],
'space.create_join_rule': ['POST', '/spaces/{space_name}/join-rules'],
'space.delete_join_rule': ['DELETE', '/spaces/{space_name}/join-rules/{rule_id}'],
'space.update_join_rule': ['PATCH', '/spaces/{space_name}/join-rules/{rule_id}'],
'space.list_space_members': ['GET', '/spaces/{space_name}/members'],
'space.add_member': ['POST', '/spaces/{space_name}/members'],
'space.leave_space': ['DELETE', '/spaces/{space_name}/members/@me'],
'space.update_self_member': ['PATCH', '/spaces/{space_name}/members/@me'],
'space.get_member': ['GET', '/spaces/{space_name}/members/{user_id}'],
'space.remove_member': ['DELETE', '/spaces/{space_name}/members/{user_id}'],
'space.update_member': ['PATCH', '/spaces/{space_name}/members/{user_id}'],
'space.assign_group': ['POST', '/spaces/{space_name}/members/{user_id}/groups'],
'space.unassign_group': ['DELETE', '/spaces/{space_name}/members/{user_id}/groups/{group_id}'],
'topics.list_topics': ['GET', '/topics'],
'topics.create_topic': ['POST', '/topics'],
'topics.get_topic': ['GET', '/topics/{name}'],
'topics.list_repos_by_topic': ['GET', '/topics/{name}/repos'],
'users.list_users_batch': ['GET', '/users'],
'users.get_user_by_username': ['GET', '/users/by-username/{username}'],
'users.get_user': ['GET', '/users/{user_id}'],
'users.get_user_avatar': ['GET', '/users/{user_id}/avatar'],
'user.get_profile_detail': ['GET', '/users/{user_id}/profile-detail']
};