├── .github └── workflows │ ├── build_and_publish.yml │ ├── triage_issue.yml │ └── triage_pr.yml ├── .gitignore ├── .vscode └── extensions.json ├── LICENSE ├── OpenAPI.json ├── README.md ├── package.json ├── pnpm-lock.yaml ├── src ├── baseURL.ts ├── index.ts ├── params.ts ├── routes.ts ├── schema.ts └── types.ts └── tsconfig.json /.github/workflows/build_and_publish.yml: -------------------------------------------------------------------------------- 1 | name: Build and Publish API 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - name: Checkout repository 13 | uses: actions/checkout@v3 14 | - uses: pnpm/action-setup@v4 15 | - name: Use Node.js LTS 16 | uses: actions/setup-node@v3 17 | with: 18 | node-version: 22.x 19 | cache: "pnpm" 20 | - name: Install packages 21 | run: pnpm install 22 | - name: Build package 23 | run: pnpm build 24 | - name: Commit changes 25 | uses: EndBug/add-and-commit@v9 26 | with: 27 | author_name: Revolt CI 28 | author_email: revolt-ci@users.noreply.github.com 29 | message: "chore: build library from latest spec [skip ci]" 30 | 31 | - name: Find current API version 32 | run: echo "api_version=$(jq -r .info.version OpenAPI.json)" >> $GITHUB_ENV 33 | - name: Check if tag exists for current version 34 | uses: mukunku/tag-exists-action@v1.2.0 35 | id: checkTag 36 | with: 37 | tag: ${{ env.api_version }} 38 | - name: Update version in package.json 39 | if: ${{ steps.checkTag.outputs.exists }} != true 40 | run: | 41 | jq '.version="${{ env.api_version }}"' package.json > temp.json 42 | mv temp.json package.json 43 | - name: Commit changes 44 | if: ${{ steps.checkTag.outputs.exists }} != true 45 | uses: EndBug/add-and-commit@v9 46 | with: 47 | author_name: Revolt CI 48 | author_email: revolt-ci@users.noreply.github.com 49 | tag: "${{ env.api_version }} --force" 50 | message: "chore: bump version to ${{ env.api_version }} [skip ci]" 51 | - name: Publish to NPM 52 | if: ${{ steps.checkTag.outputs.exists }} != true 53 | uses: JS-DevTools/npm-publish@v1 54 | with: 55 | token: ${{ secrets.NPM_TOKEN }} 56 | 57 | - name: Checkout revolt.js repository 58 | if: ${{ steps.checkTag.outputs.exists }} != true 59 | uses: actions/checkout@v3 60 | with: 61 | repository: revoltchat/revolt.js 62 | path: revolt.js 63 | token: ${{ secrets.PAT }} 64 | - name: Update revolt-api dependency 65 | if: ${{ steps.checkTag.outputs.exists }} != true 66 | run: cd revolt.js && pnpm add revolt-api@${{ env.api_version }} 67 | - name: Commit changes 68 | if: ${{ steps.checkTag.outputs.exists }} != true 69 | uses: EndBug/add-and-commit@v4 70 | with: 71 | cwd: "revolt.js" 72 | author_name: Revolt CI 73 | author_email: revolt-ci@users.noreply.github.com 74 | message: "chore: update revolt-api to ${{ env.api_version }}" 75 | -------------------------------------------------------------------------------- /.github/workflows/triage_issue.yml: -------------------------------------------------------------------------------- 1 | name: Add Issue to Board 2 | 3 | on: 4 | issues: 5 | types: [opened] 6 | 7 | jobs: 8 | track_issue: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Get project data 12 | env: 13 | GITHUB_TOKEN: ${{ secrets.PAT }} 14 | run: | 15 | gh api graphql -f query=' 16 | query { 17 | organization(login: "revoltchat"){ 18 | projectV2(number: 3) { 19 | id 20 | fields(first:20) { 21 | nodes { 22 | ... on ProjectV2SingleSelectField { 23 | id 24 | name 25 | options { 26 | id 27 | name 28 | } 29 | } 30 | } 31 | } 32 | } 33 | } 34 | }' > project_data.json 35 | 36 | echo 'PROJECT_ID='$(jq '.data.organization.projectV2.id' project_data.json) >> $GITHUB_ENV 37 | echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV 38 | echo 'TODO_OPTION_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .options[] | select(.name=="Todo") |.id' project_data.json) >> $GITHUB_ENV 39 | 40 | - name: Add issue to project 41 | env: 42 | GITHUB_TOKEN: ${{ secrets.PAT }} 43 | ISSUE_ID: ${{ github.event.issue.node_id }} 44 | run: | 45 | item_id="$( gh api graphql -f query=' 46 | mutation($project:ID!, $issue:ID!) { 47 | addProjectV2ItemById(input: {projectId: $project, contentId: $issue}) { 48 | item { 49 | id 50 | } 51 | } 52 | }' -f project=$PROJECT_ID -f issue=$ISSUE_ID --jq '.data.addProjectV2ItemById.item.id')" 53 | 54 | echo 'ITEM_ID='$item_id >> $GITHUB_ENV 55 | -------------------------------------------------------------------------------- /.github/workflows/triage_pr.yml: -------------------------------------------------------------------------------- 1 | name: Add PR to Board 2 | 3 | on: 4 | pull_request_target: 5 | types: [opened, synchronize, ready_for_review, review_requested] 6 | 7 | jobs: 8 | track_pr: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Get project data 12 | env: 13 | GITHUB_TOKEN: ${{ secrets.PAT }} 14 | run: | 15 | gh api graphql -f query=' 16 | query { 17 | organization(login: "revoltchat"){ 18 | projectV2(number: 5) { 19 | id 20 | fields(first:20) { 21 | nodes { 22 | ... on ProjectV2SingleSelectField { 23 | id 24 | name 25 | options { 26 | id 27 | name 28 | } 29 | } 30 | } 31 | } 32 | } 33 | } 34 | }' > project_data.json 35 | 36 | echo 'PROJECT_ID='$(jq '.data.organization.projectV2.id' project_data.json) >> $GITHUB_ENV 37 | echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV 38 | echo 'INCOMING_OPTION_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .options[] | select(.name=="🆕 Untriaged") |.id' project_data.json) >> $GITHUB_ENV 39 | 40 | - name: Add PR to project 41 | env: 42 | GITHUB_TOKEN: ${{ secrets.PAT }} 43 | PR_ID: ${{ github.event.pull_request.node_id }} 44 | run: | 45 | item_id="$( gh api graphql -f query=' 46 | mutation($project:ID!, $pr:ID!) { 47 | addProjectV2ItemById(input: {projectId: $project, contentId: $pr}) { 48 | item { 49 | id 50 | } 51 | } 52 | }' -f project=$PROJECT_ID -f pr=$PR_ID --jq '.data.addProjectV2ItemById.item.id')" 53 | 54 | echo 'ITEM_ID='$item_id >> $GITHUB_ENV 55 | 56 | - name: Set fields 57 | env: 58 | GITHUB_TOKEN: ${{ secrets.PAT }} 59 | run: | 60 | gh api graphql -f query=' 61 | mutation ( 62 | $project: ID! 63 | $item: ID! 64 | $status_field: ID! 65 | $status_value: String! 66 | ) { 67 | set_status: updateProjectV2ItemFieldValue(input: { 68 | projectId: $project 69 | itemId: $item 70 | fieldId: $status_field 71 | value: { 72 | singleSelectOptionId: $status_value 73 | } 74 | }) { 75 | projectV2Item { 76 | id 77 | } 78 | } 79 | }' -f project=$PROJECT_ID -f item=$ITEM_ID -f status_field=$STATUS_FIELD_ID -f status_value=${{ env.INCOMING_OPTION_ID }} --silent 80 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | __temp.ts 2 | node_modules 3 | *.old 4 | lib 5 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "awwsky.regionmarker", 4 | "txava.region-marker" 5 | ] 6 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Revolt 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Revolt API 2 | 3 | ![revolt-api](https://img.shields.io/npm/v/revolt-api) 4 | 5 | This package contains typings for objects in the [Revolt API](https://developers.revolt.chat/api/) and a fully typed API request builder. 6 | 7 | ### Example Usage 8 | 9 | If you just need access to types: 10 | 11 | ```typescript 12 | import type { User } from 'revolt-api'; 13 | ``` 14 | 15 | If you want to send requests: 16 | 17 | ```typescript 18 | import { API } from 'revolt-api'; 19 | 20 | // Initialise a new API client: 21 | const client = new API(); 22 | 23 | // or with authentication: 24 | const client = new API({ authentication: { revolt: 'bot-token' } }); 25 | 26 | // Make requests with ease: 27 | client.get('/users/@me') 28 | // Fully typed responses! 29 | .then(user => user.username); 30 | 31 | // No need to worry about the details: 32 | let channel_id = "some channel id"; 33 | client.post(`/channels/${channel_id}/messages`, { 34 | // Parameters given are fully typed as well! 35 | content: "some content" 36 | }); 37 | ``` 38 | 39 | For more details on how this works, see the [README of @insertish/oapi](https://github.com/insertish/oapi#example). 40 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "revolt-api", 3 | "version": "0.8.7", 4 | "description": "Revolt API Library", 5 | "type": "module", 6 | "exports": { 7 | ".": "./lib/index.js" 8 | }, 9 | "types": "lib/index.d.ts", 10 | "homepage": "https://developers.revolt.chat", 11 | "repository": "https://github.com/revoltchat/api.git", 12 | "author": "Paul Makles ", 13 | "license": "MIT", 14 | "scripts": { 15 | "build": "REWRITE_ANYOF=1 oapilib && tsc", 16 | "prepublish": "in-publish && pnpm build || echo Skipping build." 17 | }, 18 | "devDependencies": { 19 | "@insertish/oapi": "0.2.5", 20 | "in-publish": "^2.0.1", 21 | "openapi-typescript": "^5.4.2", 22 | "typescript": "^5.8.3" 23 | }, 24 | "files": [ 25 | "src", 26 | "lib", 27 | "OpenAPI.json", 28 | "LICENSE", 29 | "README.md" 30 | ], 31 | "packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39" 32 | } 33 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | '@insertish/oapi': 12 | specifier: 0.2.5 13 | version: 0.2.5 14 | in-publish: 15 | specifier: ^2.0.1 16 | version: 2.0.1 17 | openapi-typescript: 18 | specifier: ^5.4.2 19 | version: 5.4.2 20 | typescript: 21 | specifier: ^5.8.3 22 | version: 5.8.3 23 | 24 | packages: 25 | 26 | '@fastify/busboy@2.1.1': 27 | resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} 28 | engines: {node: '>=14'} 29 | 30 | '@insertish/oapi@0.2.5': 31 | resolution: {integrity: sha512-qepXfQz/jrT2DhvzMYzNzQN9HsuEZkDCPJFbszBuftIahXosmkoxgBHIyxYMCo1yVvBnMnfwSqYJTm9GmJ0JNw==} 32 | hasBin: true 33 | 34 | argparse@2.0.1: 35 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 36 | 37 | globalyzer@0.1.0: 38 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 39 | 40 | globrex@0.1.2: 41 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 42 | 43 | in-publish@2.0.1: 44 | resolution: {integrity: sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==} 45 | hasBin: true 46 | 47 | js-yaml@4.1.0: 48 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 49 | hasBin: true 50 | 51 | mime@3.0.0: 52 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 53 | engines: {node: '>=10.0.0'} 54 | hasBin: true 55 | 56 | openapi-typescript@5.4.2: 57 | resolution: {integrity: sha512-tHeRv39Yh7brqJpbUntdjtUaXrTHmC4saoyTLU/0J2I8LEFQYDXRLgnmWTMiMOB2GXugJiqHa5n9sAyd6BRqiA==} 58 | engines: {node: '>= 14.0.0'} 59 | hasBin: true 60 | 61 | prettier@2.8.8: 62 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 63 | engines: {node: '>=10.13.0'} 64 | hasBin: true 65 | 66 | tiny-glob@0.2.9: 67 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 68 | 69 | typescript@4.9.5: 70 | resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} 71 | engines: {node: '>=4.2.0'} 72 | hasBin: true 73 | 74 | typescript@5.8.3: 75 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 76 | engines: {node: '>=14.17'} 77 | hasBin: true 78 | 79 | undici@5.29.0: 80 | resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} 81 | engines: {node: '>=14.0'} 82 | 83 | yargs-parser@21.1.1: 84 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 85 | engines: {node: '>=12'} 86 | 87 | snapshots: 88 | 89 | '@fastify/busboy@2.1.1': {} 90 | 91 | '@insertish/oapi@0.2.5': 92 | dependencies: 93 | typescript: 4.9.5 94 | optionalDependencies: 95 | openapi-typescript: 5.4.2 96 | 97 | argparse@2.0.1: {} 98 | 99 | globalyzer@0.1.0: {} 100 | 101 | globrex@0.1.2: {} 102 | 103 | in-publish@2.0.1: {} 104 | 105 | js-yaml@4.1.0: 106 | dependencies: 107 | argparse: 2.0.1 108 | 109 | mime@3.0.0: {} 110 | 111 | openapi-typescript@5.4.2: 112 | dependencies: 113 | js-yaml: 4.1.0 114 | mime: 3.0.0 115 | prettier: 2.8.8 116 | tiny-glob: 0.2.9 117 | undici: 5.29.0 118 | yargs-parser: 21.1.1 119 | 120 | prettier@2.8.8: {} 121 | 122 | tiny-glob@0.2.9: 123 | dependencies: 124 | globalyzer: 0.1.0 125 | globrex: 0.1.2 126 | 127 | typescript@4.9.5: {} 128 | 129 | typescript@5.8.3: {} 130 | 131 | undici@5.29.0: 132 | dependencies: 133 | '@fastify/busboy': 2.1.1 134 | 135 | yargs-parser@21.1.1: {} 136 | -------------------------------------------------------------------------------- /src/baseURL.ts: -------------------------------------------------------------------------------- 1 | // This file was auto-generated by @insertish/oapi! 2 | export const defaultBaseURL = "https://api.revolt.chat"; -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | // This file was auto-generated by @insertish/oapi! 2 | import type { APIRoutes } from "./routes.js"; 3 | 4 | export * from "./types.js"; 5 | 6 | import { defaultBaseURL } from "./baseURL.js"; 7 | import { pathResolve, queryParams } from "./params.js"; 8 | 9 | type Methods = APIRoutes["method"]; 10 | type PickRoutes = APIRoutes & { method: Method }; 11 | 12 | type GetRoutes = PickRoutes<"get">; 13 | type PatchRoutes = PickRoutes<"patch">; 14 | type PutRoutes = PickRoutes<"put">; 15 | type DeleteRoutes = PickRoutes<"delete">; 16 | type PostRoutes = PickRoutes<"post">; 17 | 18 | type Count< 19 | Str extends string, 20 | SubStr extends string, 21 | Matches extends null[] = [] 22 | > = Str extends `${infer _}${SubStr}${infer After}` 23 | ? Count 24 | : Matches["length"]; 25 | 26 | /** 27 | * Get the specific path name of any given path. 28 | * @param anyPath Any path 29 | * @returns Specific path 30 | */ 31 | export function getPathName(anyPath: string) { 32 | const segments = anyPath.split("/"); 33 | 34 | const list = 35 | (pathResolve as unknown as Record)[ 36 | (segments.length - 1).toString() 37 | ] || []; 38 | for (const entry of list) { 39 | let i = 1; 40 | let copy = [...segments]; 41 | for (i; i < segments.length; i++) { 42 | if (Array.isArray(entry[i - 1])) { 43 | copy[i] = entry[i - 1]; 44 | continue; 45 | } else if (entry[i - 1] !== segments[i]) break; 46 | } 47 | 48 | if (i === segments.length) return copy.join("/"); 49 | } 50 | } 51 | 52 | /** 53 | * Client configuration options 54 | */ 55 | export interface Options { 56 | /** 57 | * Base URL of the Revolt node 58 | */ 59 | baseURL: string; 60 | /** 61 | * Additional headers to apply to requests 62 | */ 63 | headers?: Record; 64 | /** 65 | * Authentication used for requests 66 | */ 67 | authentication: { 68 | rauth?: string | undefined; 69 | revolt?: { token: string } | string | undefined; 70 | headers?: Record; 71 | }; 72 | } 73 | 74 | /** 75 | * Request options 76 | */ 77 | export interface RequestOptions { 78 | /** 79 | * The base URL used for this request 80 | */ 81 | baseURL?: string; 82 | /** 83 | * The type of response given 84 | */ 85 | responseType?: "blob" | "json" | "text" | "arrayBuffer"; 86 | /** 87 | * Headers to apply for this request 88 | */ 89 | headers?: Record; 90 | } 91 | 92 | /** 93 | * API Client 94 | */ 95 | export class API { 96 | private baseURL: Options["baseURL"]; 97 | private authentication: Options["authentication"]; 98 | private headers: Options["headers"]; 99 | 100 | constructor({ baseURL, authentication, headers }: Partial = {}) { 101 | this.baseURL = baseURL || defaultBaseURL; 102 | this.authentication = authentication || {}; 103 | this.headers = headers || {}; 104 | } 105 | 106 | /** 107 | * Generate authentication options. 108 | */ 109 | get auth(): Record { 110 | if (this.authentication.rauth) { 111 | if (typeof this.authentication.rauth === "string") { 112 | return { 113 | "X-Session-Token": this.authentication.rauth, 114 | }; 115 | } 116 | } else if (this.authentication.revolt) { 117 | switch (typeof this.authentication.revolt) { 118 | case "string": { 119 | return { 120 | "X-Bot-Token": this.authentication.revolt, 121 | }; 122 | } 123 | case "object": { 124 | return { 125 | "X-Session-Token": this.authentication.revolt.token, 126 | }; 127 | } 128 | } 129 | } else if (this.authentication.headers) { 130 | return this.authentication.headers; 131 | } 132 | 133 | return {}; 134 | } 135 | 136 | /** 137 | * Generate config to pass through to API. 138 | */ 139 | get config(): RequestOptions { 140 | return { 141 | baseURL: this.baseURL, 142 | headers: { 143 | ...this.auth, 144 | ...this.headers, 145 | }, 146 | }; 147 | } 148 | 149 | /** 150 | * Send any arbitrary request. 151 | * @param method HTTP Method 152 | * @param path Path 153 | * @param params Body or Query Parameters 154 | * @param config Request configuration 155 | * @returns Typed Response Data 156 | */ 157 | async req< 158 | Method extends Methods, 159 | Routes extends PickRoutes, 160 | Path extends Routes["path"], 161 | Route extends Routes & { path: Path; parts: Count } 162 | >( 163 | method: Method, 164 | path: Path, 165 | params: Route["params"], 166 | config?: RequestOptions 167 | ): Promise { 168 | let query = new URLSearchParams(); 169 | let body = {} as Record; 170 | let named = getPathName(path); 171 | 172 | // If we are aware of this route, then match the parameters given. 173 | if (named && typeof params === "object") { 174 | const route = queryParams[named as keyof typeof queryParams]; 175 | const allowed_query = (route as unknown as Record)[ 176 | method 177 | ]; 178 | // Map each parameter to the correct object. 179 | for (const parameter of Object.keys(params)) { 180 | // omit undefined values 181 | if (typeof (params as Record)[parameter] !== "undefined") { 182 | if (allowed_query?.includes(parameter)) { 183 | query.append(parameter, (params as Record)[parameter]); 184 | } else { 185 | body[parameter] = (params as Record)[parameter]; 186 | } 187 | } 188 | } 189 | } 190 | const passbody = ["head", "get"].includes(method) 191 | ? undefined 192 | : JSON.stringify(body); 193 | 194 | let fetchpath = `${path}?${query.toString()}`; 195 | if (fetchpath.startsWith("/")) { 196 | fetchpath = (config?.baseURL || this.baseURL) + fetchpath; 197 | } 198 | 199 | const fetchdata = await fetch(new URL(fetchpath).toString(), { 200 | method: method.toUpperCase(), 201 | headers: { 202 | ...(config?.headers || {}), 203 | ...(this.config.headers || {}), 204 | } as HeadersInit, 205 | body: passbody, 206 | }); 207 | 208 | const data = await fetchdata[config?.responseType || "json"](); 209 | 210 | if (fetchdata.ok) { 211 | return data; 212 | } else { 213 | throw data; 214 | } 215 | } 216 | 217 | /** 218 | * Send HTTP GET request. 219 | * @param path Path 220 | * @param params Body or Query Parameters 221 | * @param config Axios configuration 222 | * @returns Typed Response Data 223 | */ 224 | get< 225 | Path extends GetRoutes["path"], 226 | Route extends GetRoutes & { path: Path; parts: Count } 227 | >( 228 | path: Path, 229 | params: Route["params"], 230 | config?: RequestOptions 231 | ): Promise; 232 | 233 | /** 234 | * Send HTTP GET request. 235 | * @param path Path 236 | * @returns Typed Response Data 237 | */ 238 | get< 239 | Path extends (GetRoutes & { params: undefined })["path"], 240 | Route extends GetRoutes & { path: Path; parts: Count } 241 | >(path: Path): Promise; 242 | 243 | get(path: any, params?: any, config?: RequestOptions): Promise { 244 | // @ts-ignore-next-line 245 | return this.req("get", path, params, config); 246 | } 247 | 248 | /** 249 | * Send HTTP PATCH request. 250 | * @param path Path 251 | * @param params Body or Query Parameters 252 | * @param config Axios configuration 253 | * @returns Typed Response Data 254 | */ 255 | patch< 256 | Path extends PatchRoutes["path"], 257 | Route extends PatchRoutes & { path: Path; parts: Count } 258 | >( 259 | path: Path, 260 | params: Route["params"], 261 | config?: RequestOptions 262 | ): Promise; 263 | 264 | /** 265 | * Send HTTP PATCH request. 266 | * @param path Path 267 | * @returns Typed Response Data 268 | */ 269 | patch< 270 | Path extends (PatchRoutes & { params: undefined })["path"], 271 | Route extends PatchRoutes & { path: Path; parts: Count } 272 | >(path: Path): Promise; 273 | 274 | patch(path: any, params?: any, config?: RequestOptions): Promise { 275 | // @ts-ignore-next-line 276 | return this.req("patch", path, params, config); 277 | } 278 | 279 | /** 280 | * Send HTTP PUT request. 281 | * @param path Path 282 | * @param params Body or Query Parameters 283 | * @param config Axios configuration 284 | * @returns Typed Response Data 285 | */ 286 | put< 287 | Path extends PutRoutes["path"], 288 | Route extends PutRoutes & { path: Path; parts: Count } 289 | >( 290 | path: Path, 291 | params: Route["params"], 292 | config?: RequestOptions 293 | ): Promise; 294 | 295 | /** 296 | * Send HTTP PUT request. 297 | * @param path Path 298 | * @returns Typed Response Data 299 | */ 300 | put< 301 | Path extends (PutRoutes & { params: undefined })["path"], 302 | Route extends PutRoutes & { path: Path; parts: Count } 303 | >(path: Path): Promise; 304 | 305 | put(path: any, params?: any, config?: RequestOptions): Promise { 306 | // @ts-ignore-next-line 307 | return this.req("put", path, params, config); 308 | } 309 | 310 | /** 311 | * Send HTTP DELETE request. 312 | * @param path Path 313 | * @param params Body or Query Parameters 314 | * @param config Axios configuration 315 | * @returns Typed Response Data 316 | */ 317 | delete< 318 | Path extends DeleteRoutes["path"], 319 | Route extends DeleteRoutes & { path: Path; parts: Count } 320 | >( 321 | path: Path, 322 | params?: any, 323 | config?: RequestOptions 324 | ): Promise; 325 | 326 | /** 327 | * Send HTTP DELETE request. 328 | * @param path Path 329 | * @param params Body or Query Parameters 330 | * @returns Typed Response Data 331 | */ 332 | delete< 333 | Path extends (DeleteRoutes & { params: undefined })["path"], 334 | Route extends DeleteRoutes & { path: Path; parts: Count } 335 | >(path: Path, params?: any): Promise; 336 | 337 | delete(path: any, params?: any, config?: RequestOptions): Promise { 338 | // @ts-ignore-next-line 339 | return this.req("delete", path, params, config); 340 | } 341 | 342 | /** 343 | * Send HTTP POST request. 344 | * @param path Path 345 | * @param params Body or Query Parameters 346 | * @param config Axios configuration 347 | * @returns Typed Response Data 348 | */ 349 | post< 350 | Path extends PostRoutes["path"], 351 | Route extends PostRoutes & { path: Path; parts: Count } 352 | >( 353 | path: Path, 354 | params: Route["params"], 355 | config?: RequestOptions 356 | ): Promise; 357 | 358 | /** 359 | * Send HTTP POST request. 360 | * @param path Path 361 | * @returns Typed Response Data 362 | */ 363 | post< 364 | Path extends (PostRoutes & { params: undefined })["path"], 365 | Route extends PostRoutes & { path: Path; parts: Count } 366 | >(path: Path): Promise; 367 | 368 | post(path: any, params?: any, config?: RequestOptions): Promise { 369 | // @ts-ignore-next-line 370 | return this.req("post", path, params, config); 371 | } 372 | } 373 | -------------------------------------------------------------------------------- /src/params.ts: -------------------------------------------------------------------------------- 1 | // This file was auto-generated by @insertish/oapi! 2 | export const pathResolve = {"1":[[""]],"2":[["users","@me"],["users",["{target}"]],["users","dms"],["users","friend"],["bots","create"],["bots",["{bot}"]],["bots","@me"],["bots",["{target}"]],["channels",["{target}"]],["channels","create"],["servers","create"],["servers",["{target}"]],["invites",["{target}"]],["safety","report"],["onboard","hello"],["onboard","complete"],["policy","acknowledge"],["push","subscribe"],["push","unsubscribe"],["sync","unreads"],["webhooks",["{webhook_id}"]]],"3":[["users",["{target}"],"flags"],["users","@me","username"],["users",["{target}"],"default_avatar"],["users",["{target}"],"profile"],["users",["{target}"],"dm"],["users",["{target}"],"mutual"],["users",["{target}"],"friend"],["users",["{target}"],"block"],["bots",["{target}"],"invite"],["channels",["{target}"],"members"],["channels",["{target}"],"invites"],["channels",["{target}"],"messages"],["channels",["{target}"],"search"],["channels",["{target}"],"join_call"],["channels",["{target}"],"webhooks"],["channels",["{channel_id}"],"webhooks"],["servers",["{target}"],"ack"],["servers",["{server}"],"channels"],["servers",["{target}"],"members"],["servers",["{target}"],"members_experimental_query"],["servers",["{target}"],"bans"],["servers",["{target}"],"invites"],["servers",["{target}"],"roles"],["servers",["{target}"],"emojis"],["custom","emoji",["{id}"]],["custom","emoji",["{emoji_id}"]],["auth","account","create"],["auth","account","reverify"],["auth","account","delete"],["auth","account",""],["auth","account","disable"],["auth","account","reset_password"],["auth","session","login"],["auth","session","logout"],["auth","session","all"],["auth","session",["{id}"]],["auth","mfa","ticket"],["auth","mfa",""],["auth","mfa","recovery"],["auth","mfa","methods"],["auth","mfa","totp"],["sync","settings","fetch"],["sync","settings","set"],["webhooks",["{webhook_id}"],["{token}"]]],"4":[["channels",["{target}"],"ack",["{message}"]],["channels",["{target}"],"messages",["{msg}"]],["channels",["{target}"],"messages","bulk"],["channels",["{group_id}"],"recipients",["{member_id}"]],["channels",["{target}"],"recipients",["{member}"]],["channels",["{target}"],"permissions",["{role_id}"]],["channels",["{target}"],"permissions","default"],["servers",["{target}"],"members",["{member}"]],["servers",["{server}"],"members",["{member}"]],["servers",["{server}"],"bans",["{target}"]],["servers",["{target}"],"roles",["{role_id}"]],["servers",["{target}"],"permissions",["{role_id}"]],["servers",["{target}"],"permissions","default"],["auth","account","change","password"],["auth","account","change","email"],["auth","account","verify",["{code}"]],["webhooks",["{webhook_id}"],["{token}"],"github"]],"5":[["channels",["{target}"],"messages",["{msg}"],"pin"],["channels",["{target}"],"messages",["{msg}"],"reactions"]],"6":[["channels",["{target}"],"messages",["{msg}"],"reactions",["{emoji}"]]]}; 3 | export const queryParams = {"/":{"get":[]},"/users/@me":{"get":[]},"/users/{target}":{"get":[],"patch":[]},"/users/{target}/flags":{"get":[]},"/users/@me/username":{"patch":[]},"/users/{target}/default_avatar":{"get":[]},"/users/{target}/profile":{"get":[]},"/users/dms":{"get":[]},"/users/{target}/dm":{"get":[]},"/users/{target}/mutual":{"get":[]},"/users/{target}/friend":{"put":[],"delete":[]},"/users/{target}/block":{"put":[],"delete":[]},"/users/friend":{"post":[]},"/bots/create":{"post":[]},"/bots/{target}/invite":{"get":[],"post":[]},"/bots/{bot}":{"get":[]},"/bots/@me":{"get":[]},"/bots/{target}":{"delete":[],"patch":[]},"/channels/{target}/ack/{message}":{"put":[]},"/channels/{target}":{"get":[],"delete":["leave_silently"],"patch":[]},"/channels/{target}/members":{"get":[]},"/channels/{target}/invites":{"post":[]},"/channels/{target}/messages":{"get":["limit","before","after","sort","nearby","include_users"],"post":[]},"/channels/{target}/search":{"post":[]},"/channels/{target}/messages/{msg}/pin":{"post":[],"delete":[]},"/channels/{target}/messages/{msg}":{"get":[],"delete":[],"patch":[]},"/channels/{target}/messages/bulk":{"delete":[]},"/channels/create":{"post":[]},"/channels/{group_id}/recipients/{member_id}":{"put":[]},"/channels/{target}/recipients/{member}":{"delete":[]},"/channels/{target}/join_call":{"post":[]},"/channels/{target}/permissions/{role_id}":{"put":[]},"/channels/{target}/permissions/default":{"put":[]},"/channels/{target}/messages/{msg}/reactions/{emoji}":{"put":[],"delete":["user_id","remove_all"]},"/channels/{target}/messages/{msg}/reactions":{"delete":[]},"/channels/{target}/webhooks":{"post":[]},"/channels/{channel_id}/webhooks":{"get":[]},"/servers/create":{"post":[]},"/servers/{target}":{"get":["include_channels"],"delete":["leave_silently"],"patch":[]},"/servers/{target}/ack":{"put":[]},"/servers/{server}/channels":{"post":[]},"/servers/{target}/members":{"get":["exclude_offline"]},"/servers/{target}/members/{member}":{"get":["roles"],"delete":[]},"/servers/{server}/members/{member}":{"patch":[]},"/servers/{target}/members_experimental_query":{"get":["query","experimental_api"]},"/servers/{server}/bans/{target}":{"put":[],"delete":[]},"/servers/{target}/bans":{"get":[]},"/servers/{target}/invites":{"get":[]},"/servers/{target}/roles":{"post":[]},"/servers/{target}/roles/{role_id}":{"get":[],"delete":[],"patch":[]},"/servers/{target}/permissions/{role_id}":{"put":[]},"/servers/{target}/permissions/default":{"put":[]},"/servers/{target}/emojis":{"get":[]},"/invites/{target}":{"get":[],"post":[],"delete":[]},"/custom/emoji/{id}":{"put":[]},"/custom/emoji/{emoji_id}":{"get":[],"delete":[]},"/safety/report":{"post":[]},"/auth/account/create":{"post":[]},"/auth/account/reverify":{"post":[]},"/auth/account/delete":{"put":[],"post":[]},"/auth/account/":{"get":[]},"/auth/account/disable":{"post":[]},"/auth/account/change/password":{"patch":[]},"/auth/account/change/email":{"patch":[]},"/auth/account/verify/{code}":{"post":[]},"/auth/account/reset_password":{"post":[],"patch":[]},"/auth/session/login":{"post":[]},"/auth/session/logout":{"post":[]},"/auth/session/all":{"get":[],"delete":["revoke_self"]},"/auth/session/{id}":{"delete":[],"patch":[]},"/auth/mfa/ticket":{"put":[]},"/auth/mfa/":{"get":[]},"/auth/mfa/recovery":{"post":[],"patch":[]},"/auth/mfa/methods":{"get":[]},"/auth/mfa/totp":{"put":[],"post":[],"delete":[]},"/onboard/hello":{"get":[]},"/onboard/complete":{"post":[]},"/policy/acknowledge":{"post":[]},"/push/subscribe":{"post":[]},"/push/unsubscribe":{"post":[]},"/sync/settings/fetch":{"post":[]},"/sync/settings/set":{"post":["timestamp"]},"/sync/unreads":{"get":[]},"/webhooks/{webhook_id}/{token}":{"get":[],"post":[],"delete":[],"patch":[]},"/webhooks/{webhook_id}":{"get":[],"delete":[],"patch":[]},"/webhooks/{webhook_id}/{token}/github":{"post":[]}}; -------------------------------------------------------------------------------- /src/routes.ts: -------------------------------------------------------------------------------- 1 | // This file was auto-generated by @insertish/oapi! 2 | import { paths } from './schema'; 3 | export type APIRoutes = 4 | | { method: 'get', path: `/`, parts: 1, params: undefined, response: paths['/']['get']['responses']['200']['content']['application/json'] } 5 | | { method: 'get', path: `/users/@me`, parts: 2, params: undefined, response: paths['/users/@me']['get']['responses']['200']['content']['application/json'] } 6 | | { method: 'get', path: `/users/${string}`, parts: 2, params: undefined, response: paths['/users/{target}']['get']['responses']['200']['content']['application/json'] } 7 | | { method: 'get', path: '-/users/{target}', parts: 2, params: undefined, response: paths['/users/{target}']['get']['responses']['200']['content']['application/json'] } 8 | | { method: 'patch', path: `/users/${string}`, parts: 2, params: paths['/users/{target}']['patch']['requestBody']['content']['application/json'], response: paths['/users/{target}']['patch']['responses']['200']['content']['application/json'] } 9 | | { method: 'patch', path: '-/users/{target}', parts: 2, params: paths['/users/{target}']['patch']['requestBody']['content']['application/json'], response: paths['/users/{target}']['patch']['responses']['200']['content']['application/json'] } 10 | | { method: 'get', path: `/users/${string}/flags`, parts: 3, params: undefined, response: paths['/users/{target}/flags']['get']['responses']['200']['content']['application/json'] } 11 | | { method: 'get', path: '-/users/{target}/flags', parts: 3, params: undefined, response: paths['/users/{target}/flags']['get']['responses']['200']['content']['application/json'] } 12 | | { method: 'patch', path: `/users/@me/username`, parts: 3, params: paths['/users/@me/username']['patch']['requestBody']['content']['application/json'], response: paths['/users/@me/username']['patch']['responses']['200']['content']['application/json'] } 13 | | { method: 'get', path: `/users/${string}/default_avatar`, parts: 3, params: undefined, response: paths['/users/{target}/default_avatar']['get']['responses']['200']['content']['image/png'] } 14 | | { method: 'get', path: '-/users/{target}/default_avatar', parts: 3, params: undefined, response: paths['/users/{target}/default_avatar']['get']['responses']['200']['content']['image/png'] } 15 | | { method: 'get', path: `/users/${string}/profile`, parts: 3, params: undefined, response: paths['/users/{target}/profile']['get']['responses']['200']['content']['application/json'] } 16 | | { method: 'get', path: '-/users/{target}/profile', parts: 3, params: undefined, response: paths['/users/{target}/profile']['get']['responses']['200']['content']['application/json'] } 17 | | { method: 'get', path: `/users/dms`, parts: 2, params: undefined, response: paths['/users/dms']['get']['responses']['200']['content']['application/json'] } 18 | | { method: 'get', path: `/users/${string}/dm`, parts: 3, params: undefined, response: paths['/users/{target}/dm']['get']['responses']['200']['content']['application/json'] } 19 | | { method: 'get', path: '-/users/{target}/dm', parts: 3, params: undefined, response: paths['/users/{target}/dm']['get']['responses']['200']['content']['application/json'] } 20 | | { method: 'get', path: `/users/${string}/mutual`, parts: 3, params: undefined, response: paths['/users/{target}/mutual']['get']['responses']['200']['content']['application/json'] } 21 | | { method: 'get', path: '-/users/{target}/mutual', parts: 3, params: undefined, response: paths['/users/{target}/mutual']['get']['responses']['200']['content']['application/json'] } 22 | | { method: 'put', path: `/users/${string}/friend`, parts: 3, params: undefined, response: paths['/users/{target}/friend']['put']['responses']['200']['content']['application/json'] } 23 | | { method: 'put', path: '-/users/{target}/friend', parts: 3, params: undefined, response: paths['/users/{target}/friend']['put']['responses']['200']['content']['application/json'] } 24 | | { method: 'delete', path: `/users/${string}/friend`, parts: 3, params: undefined, response: paths['/users/{target}/friend']['delete']['responses']['200']['content']['application/json'] } 25 | | { method: 'delete', path: '-/users/{target}/friend', parts: 3, params: undefined, response: paths['/users/{target}/friend']['delete']['responses']['200']['content']['application/json'] } 26 | | { method: 'put', path: `/users/${string}/block`, parts: 3, params: undefined, response: paths['/users/{target}/block']['put']['responses']['200']['content']['application/json'] } 27 | | { method: 'put', path: '-/users/{target}/block', parts: 3, params: undefined, response: paths['/users/{target}/block']['put']['responses']['200']['content']['application/json'] } 28 | | { method: 'delete', path: `/users/${string}/block`, parts: 3, params: undefined, response: paths['/users/{target}/block']['delete']['responses']['200']['content']['application/json'] } 29 | | { method: 'delete', path: '-/users/{target}/block', parts: 3, params: undefined, response: paths['/users/{target}/block']['delete']['responses']['200']['content']['application/json'] } 30 | | { method: 'post', path: `/users/friend`, parts: 2, params: paths['/users/friend']['post']['requestBody']['content']['application/json'], response: paths['/users/friend']['post']['responses']['200']['content']['application/json'] } 31 | | { method: 'post', path: `/bots/create`, parts: 2, params: paths['/bots/create']['post']['requestBody']['content']['application/json'], response: paths['/bots/create']['post']['responses']['200']['content']['application/json'] } 32 | | { method: 'get', path: `/bots/${string}/invite`, parts: 3, params: undefined, response: paths['/bots/{target}/invite']['get']['responses']['200']['content']['application/json'] } 33 | | { method: 'get', path: '-/bots/{target}/invite', parts: 3, params: undefined, response: paths['/bots/{target}/invite']['get']['responses']['200']['content']['application/json'] } 34 | | { method: 'post', path: `/bots/${string}/invite`, parts: 3, params: paths['/bots/{target}/invite']['post']['requestBody']['content']['application/json'], response: undefined } 35 | | { method: 'post', path: '-/bots/{target}/invite', parts: 3, params: paths['/bots/{target}/invite']['post']['requestBody']['content']['application/json'], response: undefined } 36 | | { method: 'get', path: `/bots/${string}`, parts: 2, params: undefined, response: paths['/bots/{bot}']['get']['responses']['200']['content']['application/json'] } 37 | | { method: 'get', path: '-/bots/{bot}', parts: 2, params: undefined, response: paths['/bots/{bot}']['get']['responses']['200']['content']['application/json'] } 38 | | { method: 'get', path: `/bots/@me`, parts: 2, params: undefined, response: paths['/bots/@me']['get']['responses']['200']['content']['application/json'] } 39 | | { method: 'delete', path: `/bots/${string}`, parts: 2, params: undefined, response: undefined } 40 | | { method: 'delete', path: '-/bots/{target}', parts: 2, params: undefined, response: undefined } 41 | | { method: 'patch', path: `/bots/${string}`, parts: 2, params: paths['/bots/{target}']['patch']['requestBody']['content']['application/json'], response: paths['/bots/{target}']['patch']['responses']['200']['content']['application/json'] } 42 | | { method: 'patch', path: '-/bots/{target}', parts: 2, params: paths['/bots/{target}']['patch']['requestBody']['content']['application/json'], response: paths['/bots/{target}']['patch']['responses']['200']['content']['application/json'] } 43 | | { method: 'put', path: `/channels/${string}/ack/${string}`, parts: 4, params: undefined, response: undefined } 44 | | { method: 'put', path: '-/channels/{target}/ack/{message}', parts: 4, params: undefined, response: undefined } 45 | | { method: 'get', path: `/channels/${string}`, parts: 2, params: undefined, response: paths['/channels/{target}']['get']['responses']['200']['content']['application/json'] } 46 | | { method: 'get', path: '-/channels/{target}', parts: 2, params: undefined, response: paths['/channels/{target}']['get']['responses']['200']['content']['application/json'] } 47 | | { method: 'delete', path: `/channels/${string}`, parts: 2, params: paths['/channels/{target}']['delete']['parameters']['query'], response: undefined } 48 | | { method: 'delete', path: '-/channels/{target}', parts: 2, params: paths['/channels/{target}']['delete']['parameters']['query'], response: undefined } 49 | | { method: 'patch', path: `/channels/${string}`, parts: 2, params: paths['/channels/{target}']['patch']['requestBody']['content']['application/json'], response: paths['/channels/{target}']['patch']['responses']['200']['content']['application/json'] } 50 | | { method: 'patch', path: '-/channels/{target}', parts: 2, params: paths['/channels/{target}']['patch']['requestBody']['content']['application/json'], response: paths['/channels/{target}']['patch']['responses']['200']['content']['application/json'] } 51 | | { method: 'get', path: `/channels/${string}/members`, parts: 3, params: undefined, response: paths['/channels/{target}/members']['get']['responses']['200']['content']['application/json'] } 52 | | { method: 'get', path: '-/channels/{target}/members', parts: 3, params: undefined, response: paths['/channels/{target}/members']['get']['responses']['200']['content']['application/json'] } 53 | | { method: 'post', path: `/channels/${string}/invites`, parts: 3, params: undefined, response: paths['/channels/{target}/invites']['post']['responses']['200']['content']['application/json'] } 54 | | { method: 'post', path: '-/channels/{target}/invites', parts: 3, params: undefined, response: paths['/channels/{target}/invites']['post']['responses']['200']['content']['application/json'] } 55 | | { method: 'get', path: `/channels/${string}/messages`, parts: 3, params: paths['/channels/{target}/messages']['get']['parameters']['query'], response: paths['/channels/{target}/messages']['get']['responses']['200']['content']['application/json'] } 56 | | { method: 'get', path: '-/channels/{target}/messages', parts: 3, params: paths['/channels/{target}/messages']['get']['parameters']['query'], response: paths['/channels/{target}/messages']['get']['responses']['200']['content']['application/json'] } 57 | | { method: 'post', path: `/channels/${string}/messages`, parts: 3, params: paths['/channels/{target}/messages']['post']['requestBody']['content']['application/json'], response: paths['/channels/{target}/messages']['post']['responses']['200']['content']['application/json'] } 58 | | { method: 'post', path: '-/channels/{target}/messages', parts: 3, params: paths['/channels/{target}/messages']['post']['requestBody']['content']['application/json'], response: paths['/channels/{target}/messages']['post']['responses']['200']['content']['application/json'] } 59 | | { method: 'post', path: `/channels/${string}/search`, parts: 3, params: paths['/channels/{target}/search']['post']['requestBody']['content']['application/json'], response: paths['/channels/{target}/search']['post']['responses']['200']['content']['application/json'] } 60 | | { method: 'post', path: '-/channels/{target}/search', parts: 3, params: paths['/channels/{target}/search']['post']['requestBody']['content']['application/json'], response: paths['/channels/{target}/search']['post']['responses']['200']['content']['application/json'] } 61 | | { method: 'post', path: `/channels/${string}/messages/${string}/pin`, parts: 5, params: undefined, response: undefined } 62 | | { method: 'post', path: '-/channels/{target}/messages/{msg}/pin', parts: 5, params: undefined, response: undefined } 63 | | { method: 'delete', path: `/channels/${string}/messages/${string}/pin`, parts: 5, params: undefined, response: undefined } 64 | | { method: 'delete', path: '-/channels/{target}/messages/{msg}/pin', parts: 5, params: undefined, response: undefined } 65 | | { method: 'get', path: `/channels/${string}/messages/${string}`, parts: 4, params: undefined, response: paths['/channels/{target}/messages/{msg}']['get']['responses']['200']['content']['application/json'] } 66 | | { method: 'get', path: '-/channels/{target}/messages/{msg}', parts: 4, params: undefined, response: paths['/channels/{target}/messages/{msg}']['get']['responses']['200']['content']['application/json'] } 67 | | { method: 'delete', path: `/channels/${string}/messages/${string}`, parts: 4, params: undefined, response: undefined } 68 | | { method: 'delete', path: '-/channels/{target}/messages/{msg}', parts: 4, params: undefined, response: undefined } 69 | | { method: 'patch', path: `/channels/${string}/messages/${string}`, parts: 4, params: paths['/channels/{target}/messages/{msg}']['patch']['requestBody']['content']['application/json'], response: paths['/channels/{target}/messages/{msg}']['patch']['responses']['200']['content']['application/json'] } 70 | | { method: 'patch', path: '-/channels/{target}/messages/{msg}', parts: 4, params: paths['/channels/{target}/messages/{msg}']['patch']['requestBody']['content']['application/json'], response: paths['/channels/{target}/messages/{msg}']['patch']['responses']['200']['content']['application/json'] } 71 | | { method: 'delete', path: `/channels/${string}/messages/bulk`, parts: 4, params: paths['/channels/{target}/messages/bulk']['delete']['requestBody']['content']['application/json'], response: undefined } 72 | | { method: 'delete', path: '-/channels/{target}/messages/bulk', parts: 4, params: paths['/channels/{target}/messages/bulk']['delete']['requestBody']['content']['application/json'], response: undefined } 73 | | { method: 'post', path: `/channels/create`, parts: 2, params: paths['/channels/create']['post']['requestBody']['content']['application/json'], response: paths['/channels/create']['post']['responses']['200']['content']['application/json'] } 74 | | { method: 'put', path: `/channels/${string}/recipients/${string}`, parts: 4, params: undefined, response: undefined } 75 | | { method: 'put', path: '-/channels/{group_id}/recipients/{member_id}', parts: 4, params: undefined, response: undefined } 76 | | { method: 'delete', path: `/channels/${string}/recipients/${string}`, parts: 4, params: undefined, response: undefined } 77 | | { method: 'delete', path: '-/channels/{target}/recipients/{member}', parts: 4, params: undefined, response: undefined } 78 | | { method: 'post', path: `/channels/${string}/join_call`, parts: 3, params: undefined, response: paths['/channels/{target}/join_call']['post']['responses']['200']['content']['application/json'] } 79 | | { method: 'post', path: '-/channels/{target}/join_call', parts: 3, params: undefined, response: paths['/channels/{target}/join_call']['post']['responses']['200']['content']['application/json'] } 80 | | { method: 'put', path: `/channels/${string}/permissions/${string}`, parts: 4, params: paths['/channels/{target}/permissions/{role_id}']['put']['requestBody']['content']['application/json'], response: paths['/channels/{target}/permissions/{role_id}']['put']['responses']['200']['content']['application/json'] } 81 | | { method: 'put', path: '-/channels/{target}/permissions/{role_id}', parts: 4, params: paths['/channels/{target}/permissions/{role_id}']['put']['requestBody']['content']['application/json'], response: paths['/channels/{target}/permissions/{role_id}']['put']['responses']['200']['content']['application/json'] } 82 | | { method: 'put', path: `/channels/${string}/permissions/default`, parts: 4, params: paths['/channels/{target}/permissions/default']['put']['requestBody']['content']['application/json'], response: paths['/channels/{target}/permissions/default']['put']['responses']['200']['content']['application/json'] } 83 | | { method: 'put', path: '-/channels/{target}/permissions/default', parts: 4, params: paths['/channels/{target}/permissions/default']['put']['requestBody']['content']['application/json'], response: paths['/channels/{target}/permissions/default']['put']['responses']['200']['content']['application/json'] } 84 | | { method: 'put', path: `/channels/${string}/messages/${string}/reactions/${string}`, parts: 6, params: undefined, response: undefined } 85 | | { method: 'put', path: '-/channels/{target}/messages/{msg}/reactions/{emoji}', parts: 6, params: undefined, response: undefined } 86 | | { method: 'delete', path: `/channels/${string}/messages/${string}/reactions/${string}`, parts: 6, params: paths['/channels/{target}/messages/{msg}/reactions/{emoji}']['delete']['parameters']['query'], response: undefined } 87 | | { method: 'delete', path: '-/channels/{target}/messages/{msg}/reactions/{emoji}', parts: 6, params: paths['/channels/{target}/messages/{msg}/reactions/{emoji}']['delete']['parameters']['query'], response: undefined } 88 | | { method: 'delete', path: `/channels/${string}/messages/${string}/reactions`, parts: 5, params: undefined, response: undefined } 89 | | { method: 'delete', path: '-/channels/{target}/messages/{msg}/reactions', parts: 5, params: undefined, response: undefined } 90 | | { method: 'post', path: `/channels/${string}/webhooks`, parts: 3, params: paths['/channels/{target}/webhooks']['post']['requestBody']['content']['application/json'], response: paths['/channels/{target}/webhooks']['post']['responses']['200']['content']['application/json'] } 91 | | { method: 'post', path: '-/channels/{target}/webhooks', parts: 3, params: paths['/channels/{target}/webhooks']['post']['requestBody']['content']['application/json'], response: paths['/channels/{target}/webhooks']['post']['responses']['200']['content']['application/json'] } 92 | | { method: 'get', path: `/channels/${string}/webhooks`, parts: 3, params: undefined, response: paths['/channels/{channel_id}/webhooks']['get']['responses']['200']['content']['application/json'] } 93 | | { method: 'get', path: '-/channels/{channel_id}/webhooks', parts: 3, params: undefined, response: paths['/channels/{channel_id}/webhooks']['get']['responses']['200']['content']['application/json'] } 94 | | { method: 'post', path: `/servers/create`, parts: 2, params: paths['/servers/create']['post']['requestBody']['content']['application/json'], response: paths['/servers/create']['post']['responses']['200']['content']['application/json'] } 95 | | { method: 'get', path: `/servers/${string}`, parts: 2, params: paths['/servers/{target}']['get']['parameters']['query'], response: paths['/servers/{target}']['get']['responses']['200']['content']['application/json'] } 96 | | { method: 'get', path: '-/servers/{target}', parts: 2, params: paths['/servers/{target}']['get']['parameters']['query'], response: paths['/servers/{target}']['get']['responses']['200']['content']['application/json'] } 97 | | { method: 'delete', path: `/servers/${string}`, parts: 2, params: paths['/servers/{target}']['delete']['parameters']['query'], response: undefined } 98 | | { method: 'delete', path: '-/servers/{target}', parts: 2, params: paths['/servers/{target}']['delete']['parameters']['query'], response: undefined } 99 | | { method: 'patch', path: `/servers/${string}`, parts: 2, params: paths['/servers/{target}']['patch']['requestBody']['content']['application/json'], response: paths['/servers/{target}']['patch']['responses']['200']['content']['application/json'] } 100 | | { method: 'patch', path: '-/servers/{target}', parts: 2, params: paths['/servers/{target}']['patch']['requestBody']['content']['application/json'], response: paths['/servers/{target}']['patch']['responses']['200']['content']['application/json'] } 101 | | { method: 'put', path: `/servers/${string}/ack`, parts: 3, params: undefined, response: undefined } 102 | | { method: 'put', path: '-/servers/{target}/ack', parts: 3, params: undefined, response: undefined } 103 | | { method: 'post', path: `/servers/${string}/channels`, parts: 3, params: paths['/servers/{server}/channels']['post']['requestBody']['content']['application/json'], response: paths['/servers/{server}/channels']['post']['responses']['200']['content']['application/json'] } 104 | | { method: 'post', path: '-/servers/{server}/channels', parts: 3, params: paths['/servers/{server}/channels']['post']['requestBody']['content']['application/json'], response: paths['/servers/{server}/channels']['post']['responses']['200']['content']['application/json'] } 105 | | { method: 'get', path: `/servers/${string}/members`, parts: 3, params: paths['/servers/{target}/members']['get']['parameters']['query'], response: paths['/servers/{target}/members']['get']['responses']['200']['content']['application/json'] } 106 | | { method: 'get', path: '-/servers/{target}/members', parts: 3, params: paths['/servers/{target}/members']['get']['parameters']['query'], response: paths['/servers/{target}/members']['get']['responses']['200']['content']['application/json'] } 107 | | { method: 'get', path: `/servers/${string}/members/${string}`, parts: 4, params: paths['/servers/{target}/members/{member}']['get']['parameters']['query'], response: paths['/servers/{target}/members/{member}']['get']['responses']['200']['content']['application/json'] } 108 | | { method: 'get', path: '-/servers/{target}/members/{member}', parts: 4, params: paths['/servers/{target}/members/{member}']['get']['parameters']['query'], response: paths['/servers/{target}/members/{member}']['get']['responses']['200']['content']['application/json'] } 109 | | { method: 'delete', path: `/servers/${string}/members/${string}`, parts: 4, params: undefined, response: undefined } 110 | | { method: 'delete', path: '-/servers/{target}/members/{member}', parts: 4, params: undefined, response: undefined } 111 | | { method: 'patch', path: `/servers/${string}/members/${string}`, parts: 4, params: paths['/servers/{server}/members/{member}']['patch']['requestBody']['content']['application/json'], response: paths['/servers/{server}/members/{member}']['patch']['responses']['200']['content']['application/json'] } 112 | | { method: 'patch', path: '-/servers/{server}/members/{member}', parts: 4, params: paths['/servers/{server}/members/{member}']['patch']['requestBody']['content']['application/json'], response: paths['/servers/{server}/members/{member}']['patch']['responses']['200']['content']['application/json'] } 113 | | { method: 'get', path: `/servers/${string}/members_experimental_query`, parts: 3, params: paths['/servers/{target}/members_experimental_query']['get']['parameters']['query'], response: paths['/servers/{target}/members_experimental_query']['get']['responses']['200']['content']['application/json'] } 114 | | { method: 'get', path: '-/servers/{target}/members_experimental_query', parts: 3, params: paths['/servers/{target}/members_experimental_query']['get']['parameters']['query'], response: paths['/servers/{target}/members_experimental_query']['get']['responses']['200']['content']['application/json'] } 115 | | { method: 'put', path: `/servers/${string}/bans/${string}`, parts: 4, params: paths['/servers/{server}/bans/{target}']['put']['requestBody']['content']['application/json'], response: paths['/servers/{server}/bans/{target}']['put']['responses']['200']['content']['application/json'] } 116 | | { method: 'put', path: '-/servers/{server}/bans/{target}', parts: 4, params: paths['/servers/{server}/bans/{target}']['put']['requestBody']['content']['application/json'], response: paths['/servers/{server}/bans/{target}']['put']['responses']['200']['content']['application/json'] } 117 | | { method: 'delete', path: `/servers/${string}/bans/${string}`, parts: 4, params: undefined, response: undefined } 118 | | { method: 'delete', path: '-/servers/{server}/bans/{target}', parts: 4, params: undefined, response: undefined } 119 | | { method: 'get', path: `/servers/${string}/bans`, parts: 3, params: undefined, response: paths['/servers/{target}/bans']['get']['responses']['200']['content']['application/json'] } 120 | | { method: 'get', path: '-/servers/{target}/bans', parts: 3, params: undefined, response: paths['/servers/{target}/bans']['get']['responses']['200']['content']['application/json'] } 121 | | { method: 'get', path: `/servers/${string}/invites`, parts: 3, params: undefined, response: paths['/servers/{target}/invites']['get']['responses']['200']['content']['application/json'] } 122 | | { method: 'get', path: '-/servers/{target}/invites', parts: 3, params: undefined, response: paths['/servers/{target}/invites']['get']['responses']['200']['content']['application/json'] } 123 | | { method: 'post', path: `/servers/${string}/roles`, parts: 3, params: paths['/servers/{target}/roles']['post']['requestBody']['content']['application/json'], response: paths['/servers/{target}/roles']['post']['responses']['200']['content']['application/json'] } 124 | | { method: 'post', path: '-/servers/{target}/roles', parts: 3, params: paths['/servers/{target}/roles']['post']['requestBody']['content']['application/json'], response: paths['/servers/{target}/roles']['post']['responses']['200']['content']['application/json'] } 125 | | { method: 'get', path: `/servers/${string}/roles/${string}`, parts: 4, params: undefined, response: paths['/servers/{target}/roles/{role_id}']['get']['responses']['200']['content']['application/json'] } 126 | | { method: 'get', path: '-/servers/{target}/roles/{role_id}', parts: 4, params: undefined, response: paths['/servers/{target}/roles/{role_id}']['get']['responses']['200']['content']['application/json'] } 127 | | { method: 'delete', path: `/servers/${string}/roles/${string}`, parts: 4, params: undefined, response: undefined } 128 | | { method: 'delete', path: '-/servers/{target}/roles/{role_id}', parts: 4, params: undefined, response: undefined } 129 | | { method: 'patch', path: `/servers/${string}/roles/${string}`, parts: 4, params: paths['/servers/{target}/roles/{role_id}']['patch']['requestBody']['content']['application/json'], response: paths['/servers/{target}/roles/{role_id}']['patch']['responses']['200']['content']['application/json'] } 130 | | { method: 'patch', path: '-/servers/{target}/roles/{role_id}', parts: 4, params: paths['/servers/{target}/roles/{role_id}']['patch']['requestBody']['content']['application/json'], response: paths['/servers/{target}/roles/{role_id}']['patch']['responses']['200']['content']['application/json'] } 131 | | { method: 'put', path: `/servers/${string}/permissions/${string}`, parts: 4, params: paths['/servers/{target}/permissions/{role_id}']['put']['requestBody']['content']['application/json'], response: paths['/servers/{target}/permissions/{role_id}']['put']['responses']['200']['content']['application/json'] } 132 | | { method: 'put', path: '-/servers/{target}/permissions/{role_id}', parts: 4, params: paths['/servers/{target}/permissions/{role_id}']['put']['requestBody']['content']['application/json'], response: paths['/servers/{target}/permissions/{role_id}']['put']['responses']['200']['content']['application/json'] } 133 | | { method: 'put', path: `/servers/${string}/permissions/default`, parts: 4, params: paths['/servers/{target}/permissions/default']['put']['requestBody']['content']['application/json'], response: paths['/servers/{target}/permissions/default']['put']['responses']['200']['content']['application/json'] } 134 | | { method: 'put', path: '-/servers/{target}/permissions/default', parts: 4, params: paths['/servers/{target}/permissions/default']['put']['requestBody']['content']['application/json'], response: paths['/servers/{target}/permissions/default']['put']['responses']['200']['content']['application/json'] } 135 | | { method: 'get', path: `/servers/${string}/emojis`, parts: 3, params: undefined, response: paths['/servers/{target}/emojis']['get']['responses']['200']['content']['application/json'] } 136 | | { method: 'get', path: '-/servers/{target}/emojis', parts: 3, params: undefined, response: paths['/servers/{target}/emojis']['get']['responses']['200']['content']['application/json'] } 137 | | { method: 'get', path: `/invites/${string}`, parts: 2, params: undefined, response: paths['/invites/{target}']['get']['responses']['200']['content']['application/json'] } 138 | | { method: 'get', path: '-/invites/{target}', parts: 2, params: undefined, response: paths['/invites/{target}']['get']['responses']['200']['content']['application/json'] } 139 | | { method: 'post', path: `/invites/${string}`, parts: 2, params: undefined, response: paths['/invites/{target}']['post']['responses']['200']['content']['application/json'] } 140 | | { method: 'post', path: '-/invites/{target}', parts: 2, params: undefined, response: paths['/invites/{target}']['post']['responses']['200']['content']['application/json'] } 141 | | { method: 'delete', path: `/invites/${string}`, parts: 2, params: undefined, response: undefined } 142 | | { method: 'delete', path: '-/invites/{target}', parts: 2, params: undefined, response: undefined } 143 | | { method: 'put', path: `/custom/emoji/${string}`, parts: 3, params: paths['/custom/emoji/{id}']['put']['requestBody']['content']['application/json'], response: paths['/custom/emoji/{id}']['put']['responses']['200']['content']['application/json'] } 144 | | { method: 'put', path: '-/custom/emoji/{id}', parts: 3, params: paths['/custom/emoji/{id}']['put']['requestBody']['content']['application/json'], response: paths['/custom/emoji/{id}']['put']['responses']['200']['content']['application/json'] } 145 | | { method: 'get', path: `/custom/emoji/${string}`, parts: 3, params: undefined, response: paths['/custom/emoji/{emoji_id}']['get']['responses']['200']['content']['application/json'] } 146 | | { method: 'get', path: '-/custom/emoji/{emoji_id}', parts: 3, params: undefined, response: paths['/custom/emoji/{emoji_id}']['get']['responses']['200']['content']['application/json'] } 147 | | { method: 'delete', path: `/custom/emoji/${string}`, parts: 3, params: undefined, response: undefined } 148 | | { method: 'delete', path: '-/custom/emoji/{emoji_id}', parts: 3, params: undefined, response: undefined } 149 | | { method: 'post', path: `/safety/report`, parts: 2, params: paths['/safety/report']['post']['requestBody']['content']['application/json'], response: undefined } 150 | | { method: 'post', path: `/auth/account/create`, parts: 3, params: paths['/auth/account/create']['post']['requestBody']['content']['application/json'], response: undefined } 151 | | { method: 'post', path: `/auth/account/reverify`, parts: 3, params: paths['/auth/account/reverify']['post']['requestBody']['content']['application/json'], response: undefined } 152 | | { method: 'put', path: `/auth/account/delete`, parts: 3, params: paths['/auth/account/delete']['put']['requestBody']['content']['application/json'], response: undefined } 153 | | { method: 'post', path: `/auth/account/delete`, parts: 3, params: undefined, response: undefined } 154 | | { method: 'get', path: `/auth/account/`, parts: 3, params: undefined, response: paths['/auth/account/']['get']['responses']['200']['content']['application/json'] } 155 | | { method: 'post', path: `/auth/account/disable`, parts: 3, params: undefined, response: undefined } 156 | | { method: 'patch', path: `/auth/account/change/password`, parts: 4, params: paths['/auth/account/change/password']['patch']['requestBody']['content']['application/json'], response: undefined } 157 | | { method: 'patch', path: `/auth/account/change/email`, parts: 4, params: paths['/auth/account/change/email']['patch']['requestBody']['content']['application/json'], response: undefined } 158 | | { method: 'post', path: `/auth/account/verify/${string}`, parts: 4, params: undefined, response: paths['/auth/account/verify/{code}']['post']['responses']['200']['content']['application/json'] } 159 | | { method: 'post', path: '-/auth/account/verify/{code}', parts: 4, params: undefined, response: paths['/auth/account/verify/{code}']['post']['responses']['200']['content']['application/json'] } 160 | | { method: 'post', path: `/auth/account/reset_password`, parts: 3, params: paths['/auth/account/reset_password']['post']['requestBody']['content']['application/json'], response: undefined } 161 | | { method: 'patch', path: `/auth/account/reset_password`, parts: 3, params: paths['/auth/account/reset_password']['patch']['requestBody']['content']['application/json'], response: undefined } 162 | | { method: 'post', path: `/auth/session/login`, parts: 3, params: paths['/auth/session/login']['post']['requestBody']['content']['application/json'], response: paths['/auth/session/login']['post']['responses']['200']['content']['application/json'] } 163 | | { method: 'post', path: `/auth/session/logout`, parts: 3, params: undefined, response: undefined } 164 | | { method: 'get', path: `/auth/session/all`, parts: 3, params: undefined, response: paths['/auth/session/all']['get']['responses']['200']['content']['application/json'] } 165 | | { method: 'delete', path: `/auth/session/all`, parts: 3, params: paths['/auth/session/all']['delete']['parameters']['query'], response: undefined } 166 | | { method: 'delete', path: `/auth/session/${string}`, parts: 3, params: undefined, response: undefined } 167 | | { method: 'delete', path: '-/auth/session/{id}', parts: 3, params: undefined, response: undefined } 168 | | { method: 'patch', path: `/auth/session/${string}`, parts: 3, params: paths['/auth/session/{id}']['patch']['requestBody']['content']['application/json'], response: paths['/auth/session/{id}']['patch']['responses']['200']['content']['application/json'] } 169 | | { method: 'patch', path: '-/auth/session/{id}', parts: 3, params: paths['/auth/session/{id}']['patch']['requestBody']['content']['application/json'], response: paths['/auth/session/{id}']['patch']['responses']['200']['content']['application/json'] } 170 | | { method: 'put', path: `/auth/mfa/ticket`, parts: 3, params: paths['/auth/mfa/ticket']['put']['requestBody']['content']['application/json'], response: paths['/auth/mfa/ticket']['put']['responses']['200']['content']['application/json'] } 171 | | { method: 'get', path: `/auth/mfa/`, parts: 3, params: undefined, response: paths['/auth/mfa/']['get']['responses']['200']['content']['application/json'] } 172 | | { method: 'post', path: `/auth/mfa/recovery`, parts: 3, params: undefined, response: paths['/auth/mfa/recovery']['post']['responses']['200']['content']['application/json'] } 173 | | { method: 'patch', path: `/auth/mfa/recovery`, parts: 3, params: undefined, response: paths['/auth/mfa/recovery']['patch']['responses']['200']['content']['application/json'] } 174 | | { method: 'get', path: `/auth/mfa/methods`, parts: 3, params: undefined, response: paths['/auth/mfa/methods']['get']['responses']['200']['content']['application/json'] } 175 | | { method: 'put', path: `/auth/mfa/totp`, parts: 3, params: paths['/auth/mfa/totp']['put']['requestBody']['content']['application/json'], response: undefined } 176 | | { method: 'post', path: `/auth/mfa/totp`, parts: 3, params: undefined, response: paths['/auth/mfa/totp']['post']['responses']['200']['content']['application/json'] } 177 | | { method: 'delete', path: `/auth/mfa/totp`, parts: 3, params: undefined, response: undefined } 178 | | { method: 'get', path: `/onboard/hello`, parts: 2, params: undefined, response: paths['/onboard/hello']['get']['responses']['200']['content']['application/json'] } 179 | | { method: 'post', path: `/onboard/complete`, parts: 2, params: paths['/onboard/complete']['post']['requestBody']['content']['application/json'], response: paths['/onboard/complete']['post']['responses']['200']['content']['application/json'] } 180 | | { method: 'post', path: `/policy/acknowledge`, parts: 2, params: undefined, response: undefined } 181 | | { method: 'post', path: `/push/subscribe`, parts: 2, params: paths['/push/subscribe']['post']['requestBody']['content']['application/json'], response: undefined } 182 | | { method: 'post', path: `/push/unsubscribe`, parts: 2, params: undefined, response: undefined } 183 | | { method: 'post', path: `/sync/settings/fetch`, parts: 3, params: paths['/sync/settings/fetch']['post']['requestBody']['content']['application/json'], response: paths['/sync/settings/fetch']['post']['responses']['200']['content']['application/json'] } 184 | | { method: 'post', path: `/sync/settings/set`, parts: 3, params: paths['/sync/settings/set']['post']['parameters']['query']|paths['/sync/settings/set']['post']['requestBody']['content']['application/json'], response: undefined } 185 | | { method: 'get', path: `/sync/unreads`, parts: 2, params: undefined, response: paths['/sync/unreads']['get']['responses']['200']['content']['application/json'] } 186 | | { method: 'get', path: `/webhooks/${string}/${string}`, parts: 3, params: undefined, response: paths['/webhooks/{webhook_id}/{token}']['get']['responses']['200']['content']['application/json'] } 187 | | { method: 'get', path: '-/webhooks/{webhook_id}/{token}', parts: 3, params: undefined, response: paths['/webhooks/{webhook_id}/{token}']['get']['responses']['200']['content']['application/json'] } 188 | | { method: 'post', path: `/webhooks/${string}/${string}`, parts: 3, params: paths['/webhooks/{webhook_id}/{token}']['post']['requestBody']['content']['application/json'], response: paths['/webhooks/{webhook_id}/{token}']['post']['responses']['200']['content']['application/json'] } 189 | | { method: 'post', path: '-/webhooks/{webhook_id}/{token}', parts: 3, params: paths['/webhooks/{webhook_id}/{token}']['post']['requestBody']['content']['application/json'], response: paths['/webhooks/{webhook_id}/{token}']['post']['responses']['200']['content']['application/json'] } 190 | | { method: 'delete', path: `/webhooks/${string}/${string}`, parts: 3, params: undefined, response: undefined } 191 | | { method: 'delete', path: '-/webhooks/{webhook_id}/{token}', parts: 3, params: undefined, response: undefined } 192 | | { method: 'patch', path: `/webhooks/${string}/${string}`, parts: 3, params: paths['/webhooks/{webhook_id}/{token}']['patch']['requestBody']['content']['application/json'], response: paths['/webhooks/{webhook_id}/{token}']['patch']['responses']['200']['content']['application/json'] } 193 | | { method: 'patch', path: '-/webhooks/{webhook_id}/{token}', parts: 3, params: paths['/webhooks/{webhook_id}/{token}']['patch']['requestBody']['content']['application/json'], response: paths['/webhooks/{webhook_id}/{token}']['patch']['responses']['200']['content']['application/json'] } 194 | | { method: 'get', path: `/webhooks/${string}`, parts: 2, params: undefined, response: paths['/webhooks/{webhook_id}']['get']['responses']['200']['content']['application/json'] } 195 | | { method: 'get', path: '-/webhooks/{webhook_id}', parts: 2, params: undefined, response: paths['/webhooks/{webhook_id}']['get']['responses']['200']['content']['application/json'] } 196 | | { method: 'delete', path: `/webhooks/${string}`, parts: 2, params: undefined, response: undefined } 197 | | { method: 'delete', path: '-/webhooks/{webhook_id}', parts: 2, params: undefined, response: undefined } 198 | | { method: 'patch', path: `/webhooks/${string}`, parts: 2, params: paths['/webhooks/{webhook_id}']['patch']['requestBody']['content']['application/json'], response: paths['/webhooks/{webhook_id}']['patch']['responses']['200']['content']['application/json'] } 199 | | { method: 'patch', path: '-/webhooks/{webhook_id}', parts: 2, params: paths['/webhooks/{webhook_id}']['patch']['requestBody']['content']['application/json'], response: paths['/webhooks/{webhook_id}']['patch']['responses']['200']['content']['application/json'] } 200 | | { method: 'post', path: `/webhooks/${string}/${string}/github`, parts: 4, params: undefined, response: undefined } 201 | | { method: 'post', path: '-/webhooks/{webhook_id}/{token}/github', parts: 4, params: undefined, response: undefined }; -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | // This file was auto-generated by @insertish/oapi! 2 | import { components } from './schema'; 3 | export type RevoltConfig = components['schemas']['RevoltConfig']; 4 | export type RevoltFeatures = components['schemas']['RevoltFeatures']; 5 | export type CaptchaFeature = components['schemas']['CaptchaFeature']; 6 | export type Feature = components['schemas']['Feature']; 7 | export type VoiceFeature = components['schemas']['VoiceFeature']; 8 | export type BuildInformation = components['schemas']['BuildInformation']; 9 | export type Error = components['schemas']['Error']; 10 | export type User = components['schemas']['User']; 11 | export type File = components['schemas']['File']; 12 | export type Metadata = components['schemas']['Metadata']; 13 | export type Relationship = components['schemas']['Relationship']; 14 | export type RelationshipStatus = components['schemas']['RelationshipStatus']; 15 | export type UserStatus = components['schemas']['UserStatus']; 16 | export type Presence = components['schemas']['Presence']; 17 | export type BotInformation = components['schemas']['BotInformation']; 18 | export type Id = components['schemas']['Id']; 19 | export type FlagResponse = components['schemas']['FlagResponse']; 20 | export type DataEditUser = components['schemas']['DataEditUser']; 21 | export type DataUserProfile = components['schemas']['DataUserProfile']; 22 | export type FieldsUser = components['schemas']['FieldsUser']; 23 | export type DataChangeUsername = components['schemas']['DataChangeUsername']; 24 | export type UserProfile = components['schemas']['UserProfile']; 25 | export type Channel = components['schemas']['Channel']; 26 | export type OverrideField = components['schemas']['OverrideField']; 27 | export type MutualResponse = components['schemas']['MutualResponse']; 28 | export type DataSendFriendRequest = components['schemas']['DataSendFriendRequest']; 29 | export type BotWithUserResponse = components['schemas']['BotWithUserResponse']; 30 | export type DataCreateBot = components['schemas']['DataCreateBot']; 31 | export type InviteBotDestination = components['schemas']['InviteBotDestination']; 32 | export type PublicBot = components['schemas']['PublicBot']; 33 | export type FetchBotResponse = components['schemas']['FetchBotResponse']; 34 | export type Bot = components['schemas']['Bot']; 35 | export type OwnedBotsResponse = components['schemas']['OwnedBotsResponse']; 36 | export type DataEditBot = components['schemas']['DataEditBot']; 37 | export type FieldsBot = components['schemas']['FieldsBot']; 38 | export type DataEditChannel = components['schemas']['DataEditChannel']; 39 | export type FieldsChannel = components['schemas']['FieldsChannel']; 40 | export type Invite = components['schemas']['Invite']; 41 | export type Message = components['schemas']['Message']; 42 | export type Member = components['schemas']['Member']; 43 | export type MemberCompositeKey = components['schemas']['MemberCompositeKey']; 44 | export type ISO8601_Timestamp = components['schemas']['ISO8601 Timestamp']; 45 | export type MessageWebhook = components['schemas']['MessageWebhook']; 46 | export type SystemMessage = components['schemas']['SystemMessage']; 47 | export type Embed = components['schemas']['Embed']; 48 | export type Special = components['schemas']['Special']; 49 | export type LightspeedType = components['schemas']['LightspeedType']; 50 | export type TwitchType = components['schemas']['TwitchType']; 51 | export type BandcampType = components['schemas']['BandcampType']; 52 | export type Image = components['schemas']['Image']; 53 | export type ImageSize = components['schemas']['ImageSize']; 54 | export type Video = components['schemas']['Video']; 55 | export type Interactions = components['schemas']['Interactions']; 56 | export type Masquerade = components['schemas']['Masquerade']; 57 | export type DataMessageSend = components['schemas']['DataMessageSend']; 58 | export type ReplyIntent = components['schemas']['ReplyIntent']; 59 | export type SendableEmbed = components['schemas']['SendableEmbed']; 60 | export type BulkMessageResponse = components['schemas']['BulkMessageResponse']; 61 | export type MessageSort = components['schemas']['MessageSort']; 62 | export type DataMessageSearch = components['schemas']['DataMessageSearch']; 63 | export type DataEditMessage = components['schemas']['DataEditMessage']; 64 | export type OptionsBulkDelete = components['schemas']['OptionsBulkDelete']; 65 | export type DataCreateGroup = components['schemas']['DataCreateGroup']; 66 | export type LegacyCreateVoiceUserResponse = components['schemas']['LegacyCreateVoiceUserResponse']; 67 | export type DataSetRolePermissions = components['schemas']['DataSetRolePermissions']; 68 | export type Override = components['schemas']['Override']; 69 | export type DataDefaultChannelPermissions = components['schemas']['DataDefaultChannelPermissions']; 70 | export type Webhook = components['schemas']['Webhook']; 71 | export type CreateWebhookBody = components['schemas']['CreateWebhookBody']; 72 | export type CreateServerLegacyResponse = components['schemas']['CreateServerLegacyResponse']; 73 | export type Server = components['schemas']['Server']; 74 | export type Category = components['schemas']['Category']; 75 | export type SystemMessageChannels = components['schemas']['SystemMessageChannels']; 76 | export type Role = components['schemas']['Role']; 77 | export type DataCreateServer = components['schemas']['DataCreateServer']; 78 | export type FetchServerResponse = components['schemas']['FetchServerResponse']; 79 | export type DataEditServer = components['schemas']['DataEditServer']; 80 | export type FieldsServer = components['schemas']['FieldsServer']; 81 | export type DataCreateServerChannel = components['schemas']['DataCreateServerChannel']; 82 | export type LegacyServerChannelType = components['schemas']['LegacyServerChannelType']; 83 | export type AllMemberResponse = components['schemas']['AllMemberResponse']; 84 | export type MemberResponse = components['schemas']['MemberResponse']; 85 | export type DataMemberEdit = components['schemas']['DataMemberEdit']; 86 | export type FieldsMember = components['schemas']['FieldsMember']; 87 | export type MemberQueryResponse = components['schemas']['MemberQueryResponse']; 88 | export type ServerBan = components['schemas']['ServerBan']; 89 | export type DataBanCreate = components['schemas']['DataBanCreate']; 90 | export type BanListResult = components['schemas']['BanListResult']; 91 | export type BannedUser = components['schemas']['BannedUser']; 92 | export type NewRoleResponse = components['schemas']['NewRoleResponse']; 93 | export type DataCreateRole = components['schemas']['DataCreateRole']; 94 | export type DataEditRole = components['schemas']['DataEditRole']; 95 | export type FieldsRole = components['schemas']['FieldsRole']; 96 | export type DataSetServerRolePermission = components['schemas']['DataSetServerRolePermission']; 97 | export type DataPermissionsValue = components['schemas']['DataPermissionsValue']; 98 | export type Emoji = components['schemas']['Emoji']; 99 | export type EmojiParent = components['schemas']['EmojiParent']; 100 | export type InviteResponse = components['schemas']['InviteResponse']; 101 | export type InviteJoinResponse = components['schemas']['InviteJoinResponse']; 102 | export type DataCreateEmoji = components['schemas']['DataCreateEmoji']; 103 | export type DataReportContent = components['schemas']['DataReportContent']; 104 | export type ReportedContent = components['schemas']['ReportedContent']; 105 | export type ContentReportReason = components['schemas']['ContentReportReason']; 106 | export type UserReportReason = components['schemas']['UserReportReason']; 107 | export type Authifier_Error = components['schemas']['Authifier Error']; 108 | export type DataCreateAccount = components['schemas']['DataCreateAccount']; 109 | export type DataResendVerification = components['schemas']['DataResendVerification']; 110 | export type DataAccountDeletion = components['schemas']['DataAccountDeletion']; 111 | export type AccountInfo = components['schemas']['AccountInfo']; 112 | export type DataChangePassword = components['schemas']['DataChangePassword']; 113 | export type DataChangeEmail = components['schemas']['DataChangeEmail']; 114 | export type ResponseVerify = components['schemas']['ResponseVerify']; 115 | export type MFATicket = components['schemas']['MFATicket']; 116 | export type DataPasswordReset = components['schemas']['DataPasswordReset']; 117 | export type DataSendPasswordReset = components['schemas']['DataSendPasswordReset']; 118 | export type ResponseLogin = components['schemas']['ResponseLogin']; 119 | export type WebPushSubscription = components['schemas']['WebPushSubscription']; 120 | export type MFAMethod = components['schemas']['MFAMethod']; 121 | export type DataLogin = components['schemas']['DataLogin']; 122 | export type MFAResponse = components['schemas']['MFAResponse']; 123 | export type SessionInfo = components['schemas']['SessionInfo']; 124 | export type DataEditSession = components['schemas']['DataEditSession']; 125 | export type MultiFactorStatus = components['schemas']['MultiFactorStatus']; 126 | export type ResponseTotpSecret = components['schemas']['ResponseTotpSecret']; 127 | export type DataHello = components['schemas']['DataHello']; 128 | export type DataOnboard = components['schemas']['DataOnboard']; 129 | export type OptionsFetchSettings = components['schemas']['OptionsFetchSettings']; 130 | export type ChannelUnread = components['schemas']['ChannelUnread']; 131 | export type ChannelCompositeKey = components['schemas']['ChannelCompositeKey']; 132 | export type DataEditWebhook = components['schemas']['DataEditWebhook']; 133 | export type FieldsWebhook = components['schemas']['FieldsWebhook']; 134 | export type ResponseWebhook = components['schemas']['ResponseWebhook'];; -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2022", 4 | "module": "ES6", 5 | "moduleResolution": "node", 6 | "rootDir": "./src", 7 | "declaration": true, 8 | "declarationMap": true, 9 | "outDir": "./lib", 10 | "esModuleInterop": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "strict": true, 13 | "skipLibCheck": true 14 | } 15 | } 16 | --------------------------------------------------------------------------------