refactor progress
2
fluxer_docs/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
node_modules/
|
||||
.mintlify/
|
||||
2
fluxer_docs/.npmrc
Normal file
@@ -0,0 +1,2 @@
|
||||
link-workspace-packages=false
|
||||
shared-workspace-lockfile=false
|
||||
@@ -1,28 +0,0 @@
|
||||
FROM node:24-bookworm-slim AS base
|
||||
WORKDIR /usr/src/app
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends libvips libvips-dev curl openssl && rm -rf /var/lib/apt/lists/*
|
||||
RUN corepack enable
|
||||
|
||||
FROM base AS deps
|
||||
WORKDIR /usr/src/app
|
||||
COPY package.json pnpm-lock.yaml ./
|
||||
COPY source.config.ts ./
|
||||
RUN pnpm install --frozen-lockfile
|
||||
|
||||
FROM base AS build
|
||||
WORKDIR /usr/src/app
|
||||
COPY --from=deps /usr/src/app/node_modules ./node_modules
|
||||
COPY . ./
|
||||
RUN pnpm run build
|
||||
|
||||
FROM base AS runner
|
||||
WORKDIR /usr/src/app
|
||||
ENV NODE_ENV=production
|
||||
ENV PORT=3000
|
||||
COPY --from=build /usr/src/app/.next ./.next
|
||||
COPY --from=build /usr/src/app/public ./public
|
||||
COPY --from=build /usr/src/app/package.json ./package.json
|
||||
COPY --from=deps /usr/src/app/node_modules ./node_modules
|
||||
USER nobody
|
||||
EXPOSE 3000
|
||||
CMD ["node", "node_modules/next/dist/bin/next", "start", "-p", "3000"]
|
||||
21
fluxer_docs/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023 Mintlify
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
6
fluxer_docs/api-reference/introduction.mdx
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
title: 'Introduction'
|
||||
description: 'Fluxer REST API documentation'
|
||||
---
|
||||
|
||||
TBD
|
||||
84942
fluxer_docs/api-reference/openapi.json
Normal file
@@ -1,65 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2026 Fluxer Contributors
|
||||
*
|
||||
* This file is part of Fluxer.
|
||||
*
|
||||
* Fluxer is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Fluxer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Fluxer. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {DocsBody, DocsDescription, DocsPage, DocsTitle} from 'fumadocs-ui/layouts/docs/page';
|
||||
import {createRelativeLink} from 'fumadocs-ui/mdx';
|
||||
import type {Metadata} from 'next';
|
||||
import {notFound} from 'next/navigation';
|
||||
import {getPageImage, source} from '@/lib/source';
|
||||
import {getMDXComponents} from '@/mdx-components';
|
||||
|
||||
export default async function Page(props: PageProps<'/[[...slug]]'>) {
|
||||
const params = await props.params;
|
||||
const page = source.getPage(params.slug);
|
||||
if (!page) notFound();
|
||||
|
||||
const MDX = page.data.body;
|
||||
|
||||
return (
|
||||
<DocsPage toc={page.data.toc} full={page.data.full}>
|
||||
<DocsTitle>{page.data.title}</DocsTitle>
|
||||
<DocsDescription>{page.data.description}</DocsDescription>
|
||||
<DocsBody>
|
||||
<MDX
|
||||
components={getMDXComponents({
|
||||
a: createRelativeLink(source, page),
|
||||
})}
|
||||
/>
|
||||
</DocsBody>
|
||||
</DocsPage>
|
||||
);
|
||||
}
|
||||
|
||||
export async function generateStaticParams() {
|
||||
return source.generateParams();
|
||||
}
|
||||
|
||||
export async function generateMetadata(props: PageProps<'/[[...slug]]'>): Promise<Metadata> {
|
||||
const params = await props.params;
|
||||
const page = source.getPage(params.slug);
|
||||
if (!page) notFound();
|
||||
|
||||
return {
|
||||
title: page.data.title,
|
||||
description: page.data.description,
|
||||
openGraph: {
|
||||
images: getPageImage(page).url,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2026 Fluxer Contributors
|
||||
*
|
||||
* This file is part of Fluxer.
|
||||
*
|
||||
* Fluxer is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Fluxer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Fluxer. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {DocsLayout} from 'fumadocs-ui/layouts/docs';
|
||||
import {baseOptions} from '@/lib/layout.shared';
|
||||
import {source} from '@/lib/source';
|
||||
|
||||
export default function Layout({children}: LayoutProps<'/'>) {
|
||||
return (
|
||||
<DocsLayout tree={source.pageTree} {...baseOptions()}>
|
||||
{children}
|
||||
</DocsLayout>
|
||||
);
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2026 Fluxer Contributors
|
||||
*
|
||||
* This file is part of Fluxer.
|
||||
*
|
||||
* Fluxer is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Fluxer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Fluxer. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {createFromSource} from 'fumadocs-core/search/server';
|
||||
import {source} from '@/lib/source';
|
||||
|
||||
export const {GET} = createFromSource(source, {
|
||||
language: 'english',
|
||||
});
|
||||
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2026 Fluxer Contributors
|
||||
*
|
||||
* This file is part of Fluxer.
|
||||
*
|
||||
* Fluxer is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Fluxer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Fluxer. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
@import 'tailwindcss';
|
||||
@import 'fumadocs-ui/css/neutral.css';
|
||||
@import 'fumadocs-ui/css/preset.css';
|
||||
|
||||
:root {
|
||||
--saturation-factor: 1;
|
||||
/* Dark theme - use brand-primary-light */
|
||||
--color-fd-primary: hsl(242, calc(100% * var(--saturation-factor)), 84%);
|
||||
}
|
||||
|
||||
.light {
|
||||
/* Light theme - use brand-primary */
|
||||
--color-fd-primary: hsl(242, calc(70% * var(--saturation-factor)), 55%);
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2026 Fluxer Contributors
|
||||
*
|
||||
* This file is part of Fluxer.
|
||||
*
|
||||
* Fluxer is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Fluxer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Fluxer. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {RootProvider} from 'fumadocs-ui/provider/next';
|
||||
import './global.css';
|
||||
import type {Metadata, Viewport} from 'next';
|
||||
import {Inter} from 'next/font/google';
|
||||
|
||||
const inter = Inter({
|
||||
subsets: ['latin'],
|
||||
});
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: {
|
||||
template: 'Fluxer API Docs | %s',
|
||||
default: 'Fluxer API Docs',
|
||||
},
|
||||
description: 'Official API documentation for Fluxer',
|
||||
icons: {
|
||||
icon: [
|
||||
{url: 'https://fluxerstatic.com/web/favicon.ico'},
|
||||
{url: 'https://fluxerstatic.com/web/favicon-16x16.png', sizes: '16x16', type: 'image/png'},
|
||||
{url: 'https://fluxerstatic.com/web/favicon-32x32.png', sizes: '32x32', type: 'image/png'},
|
||||
],
|
||||
apple: {url: 'https://fluxerstatic.com/web/apple-touch-icon.png', sizes: '180x180'},
|
||||
},
|
||||
};
|
||||
|
||||
export const viewport: Viewport = {
|
||||
themeColor: '#4641D9',
|
||||
};
|
||||
|
||||
export default function Layout({children}: LayoutProps<'/'>) {
|
||||
return (
|
||||
<html lang="en" className={inter.className} suppressHydrationWarning>
|
||||
<body className="flex min-h-screen flex-col">
|
||||
<RootProvider>{children}</RootProvider>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2026 Fluxer Contributors
|
||||
*
|
||||
* This file is part of Fluxer.
|
||||
*
|
||||
* Fluxer is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Fluxer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Fluxer. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {getLLMText, source} from '@/lib/source';
|
||||
|
||||
export const revalidate = false;
|
||||
|
||||
export async function GET() {
|
||||
const scan = source.getPages().map(getLLMText);
|
||||
const scanned = await Promise.all(scan);
|
||||
|
||||
return new Response(scanned.join('\n\n'));
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2026 Fluxer Contributors
|
||||
*
|
||||
* This file is part of Fluxer.
|
||||
*
|
||||
* Fluxer is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Fluxer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Fluxer. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {generate as DefaultImage} from 'fumadocs-ui/og';
|
||||
import {notFound} from 'next/navigation';
|
||||
import {ImageResponse} from 'next/og';
|
||||
import {getPageImage, source} from '@/lib/source';
|
||||
|
||||
export const revalidate = false;
|
||||
|
||||
export async function GET(_req: Request, {params}: RouteContext<'/og/docs/[...slug]'>) {
|
||||
const {slug} = await params;
|
||||
const page = source.getPage(slug.slice(0, -1));
|
||||
if (!page) notFound();
|
||||
|
||||
return new ImageResponse(<DefaultImage title={page.data.title} description={page.data.description} site="My App" />, {
|
||||
width: 1200,
|
||||
height: 630,
|
||||
});
|
||||
}
|
||||
|
||||
export function generateStaticParams() {
|
||||
return source.getPages().map((page) => ({
|
||||
lang: page.locale,
|
||||
slug: getPageImage(page).segments,
|
||||
}));
|
||||
}
|
||||
@@ -1,386 +0,0 @@
|
||||
---
|
||||
title: API Reference
|
||||
description: An overview of how the Fluxer API works and how to use it
|
||||
---
|
||||
|
||||
Fluxer exposes an HTTP API for most read/write operations. Use it to build bots, automations, and integrations that talk to Fluxer from your code. For real-time events, connect to the Fluxer Gateway over WebSocket.
|
||||
|
||||
If you've used the [Discord API](https://discord.dev), Fluxer should feel familiar. Most Discord libraries adapt with only small tweaks (for example, changing the base URL).
|
||||
|
||||
## Base URL
|
||||
|
||||
All HTTP API requests go through the same base URL:
|
||||
|
||||
```text
|
||||
https://api.fluxer.app
|
||||
```
|
||||
|
||||
## API Versioning
|
||||
|
||||
Fluxer uses versioned API endpoints. The current version is `v1`, and all documented endpoints are prefixed with `/v1/`.
|
||||
|
||||
```text
|
||||
GET /v1/...
|
||||
```
|
||||
|
||||
If you omit the version prefix, you'll hit the latest stable version. That can change over time, so pin a version like `/v1/` for anything you don't want to break unexpectedly.
|
||||
|
||||
## Error Responses
|
||||
|
||||
### Generic Error Response
|
||||
|
||||
When a request fails, the API returns an HTTP status code plus a JSON body with error details:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "UNKNOWN_USER",
|
||||
"message": "Unknown User"
|
||||
}
|
||||
```
|
||||
|
||||
`code` is stable and machine-readable. `message` is for humans and may change, so don't rely on it for program logic.
|
||||
|
||||
### Form Validation Errors
|
||||
|
||||
For endpoints that accept form data, failed validation returns `400 Bad Request` and a list of field-level errors:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "INVALID_FORM_BODY",
|
||||
"message": "Input Validation Error",
|
||||
"errors": [
|
||||
{"path": "username", "message": "Username must be at least 3 characters long."},
|
||||
{"path": "email", "message": "Email must be a valid email address."}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
For nested structures, `path` uses dot and index notation to point at the field that failed:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": "INVALID_FORM_BODY",
|
||||
"message": "Input Validation Error",
|
||||
"errors": [
|
||||
{"path": "profile.address.street", "message": "Street is required."},
|
||||
{"path": "items.0.quantity", "message": "Quantity must be a positive integer."}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Treat `code` as the stable part of the error and use `errors[*].path` to locate invalid inputs.
|
||||
|
||||
## Authentication
|
||||
|
||||
Most API requests require authentication. Send your bot token in the `Authorization` header:
|
||||
|
||||
```text
|
||||
Authorization: Bot YOUR_BOT_TOKEN
|
||||
```
|
||||
|
||||
Replace `YOUR_BOT_TOKEN` with the token from **User Settings > Applications** in the Fluxer web/desktop app.
|
||||
|
||||
Keep bot tokens secret. Don't commit them to source control or ship them in client-side code.
|
||||
|
||||
## Encryption
|
||||
|
||||
All HTTP and WebSocket connections to Fluxer must use TLS (`https://` and `wss://`). The minimum supported version is TLS 1.2.
|
||||
|
||||
Plain `http://` and `ws://` endpoints are not available.
|
||||
|
||||
## Snowflakes
|
||||
|
||||
Fluxer uses [Twitter Snowflakes](https://github.com/twitter-archive/snowflake/tree/snowflake-2010) as IDs for users, messages, channels, and other entities.
|
||||
|
||||
Within a single entity type (for example, messages), Snowflakes are unique. Different entity types may share the same numeric Snowflake, so always track which entity an ID refers to.
|
||||
|
||||
Snowflakes are 64-bit unsigned integers that encode a timestamp plus some extra bits. In JSON, they're always sent as strings to avoid precision issues. Treat them as opaque strings unless you need to decode them.
|
||||
|
||||
| Component | Bits | Description |
|
||||
| --------------- | ---- | ------------------------------------------------------------------------------- |
|
||||
| Timestamp | 42 | Milliseconds since the Fluxer epoch (`1420070400000`, the first second of 2015) |
|
||||
| Worker ID | 5 | ID of the worker that generated the Snowflake |
|
||||
| Process ID | 5 | ID of the process that generated the Snowflake |
|
||||
| Sequence Number | 12 | Counter for IDs generated in the same millisecond |
|
||||
|
||||
If you decode the timestamp part, you can tell when a resource was created.
|
||||
|
||||
```ts
|
||||
function snowflakeToTimestamp(snowflake: string): number {
|
||||
const fluxerEpoch = 1420070400000n;
|
||||
const timestamp = (BigInt(snowflake) >> 22n) + fluxerEpoch;
|
||||
return Number(timestamp);
|
||||
}
|
||||
```
|
||||
|
||||
### Pagination with Snowflakes
|
||||
|
||||
Many API endpoints return lists. These endpoints accept `before`, `after`, and `limit` query parameters. Check the individual endpoint docs to see which ones support pagination.
|
||||
|
||||
Because Snowflake IDs encode timestamps, you can generate Snowflakes from timestamps to paginate by time:
|
||||
|
||||
```ts
|
||||
function timestampToSnowflake(timestamp: number): string {
|
||||
const fluxerEpoch = 1420070400000n;
|
||||
const snowflake = (BigInt(timestamp) - fluxerEpoch) << 22n;
|
||||
return snowflake.toString();
|
||||
}
|
||||
|
||||
const currentTimeMs = Date.now();
|
||||
const currentSnowflake = timestampToSnowflake(currentTimeMs);
|
||||
```
|
||||
|
||||
To specify the beginning of time, use the Snowflake `0`.
|
||||
|
||||
## ISO 8601 Timestamps
|
||||
|
||||
Timestamps in Fluxer API responses use the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format in UTC. Parse them with standard libraries in your language of choice.
|
||||
|
||||
## Nullable & Optional Fields
|
||||
|
||||
To stay close to Discord's API docs, the Fluxer API uses this convention for nullable and optional fields in tables:
|
||||
|
||||
| Field Name | Type | Description |
|
||||
| -------------------------- | ------- | -------------------------------------------------------------------------- |
|
||||
| `optional_field?` | string | An optional field that may be missing in the response |
|
||||
| `nullable_field` | ?string | A nullable field that may be `null` in the response, but is always present |
|
||||
| `optional_nullable_field?` | ?string | An optional field that may be missing or `null` in the response |
|
||||
|
||||
## Backwards Compatibility
|
||||
|
||||
New response fields (documented or not) are backwards-compatible. Your client should ignore fields it doesn't recognize.
|
||||
|
||||
Breaking changes will be announced in advance, with a migration period where old and new versions both work.
|
||||
|
||||
## HTTP API
|
||||
|
||||
### User Agent
|
||||
|
||||
When making HTTP requests, set a custom `User-Agent` header that identifies your application. Example:
|
||||
|
||||
```text
|
||||
User-Agent: MyFluxerBot ($url, $version)
|
||||
```
|
||||
|
||||
### Content Type
|
||||
|
||||
Set the `Content-Type` header to `application/json`, `application/x-www-form-urlencoded`, or `multipart/form-data` as appropriate for your request body.
|
||||
|
||||
### Rate Limits
|
||||
|
||||
Rate limits are reported via HTTP headers. If you exceed a limit, you'll receive `429 Too Many Requests`. For details, see the [Rate Limits](./rate-limits) documentation.
|
||||
|
||||
## Gateway API (WebSocket)
|
||||
|
||||
Fluxer's Gateway API lets you maintain a long-lived WebSocket connection for real-time events. For how to connect and interact, see the [Gateway API](./gateway) documentation.
|
||||
|
||||
## Message Formatting
|
||||
|
||||
Fluxer supports rich message formatting using Markdown-style syntax. Compatibility with most Discord-flavored Markdown is intentional so you can port bots and integrations with minimal changes.
|
||||
|
||||
### Format Types
|
||||
|
||||
In addition to standard formatting such as bold, italics, underline, strikethrough, inline code, code blocks, blockquotes, headings, lists, and links, Fluxer supports the following formatting options:
|
||||
|
||||
| Type | Syntax | Example |
|
||||
| ------------------------- | --------------------- | ---------------------------------------- |
|
||||
| Spoiler | `\|\|text\|\|` | `\|\|spoiler\|\|` (hidden until clicked) |
|
||||
| Subtext (small gray text) | `-# your text` | `-# extra context / footnote` |
|
||||
| Email link | `<hello@example.com>` | `<hello@example.com>` |
|
||||
| Phone link | `<+1234567890>` | `<+1234567890>` |
|
||||
| Mention user | `<@user_id>` | `<@123456789012345678>` |
|
||||
| Mention channel | `<#channel_id>` | `<#123456789012345678>` |
|
||||
| Mention role | `<@&role_id>` | `<@&123456789012345678>` |
|
||||
| Standard emoji | Unicode emoji | 😄 |
|
||||
| Custom emoji | `<:name:emoji_id>` | `<:custom_emoji:123456789012345678>` |
|
||||
| Custom emoji (animated) | `<a:name:emoji_id>` | `<a:animated_emoji:123456789012345678>` |
|
||||
| Unix timestamp | `<t:timestamp>` | `<t:1445444940>` |
|
||||
| Unix timestamp (styled) | `<t:timestamp:style>` | `<t:1445444940:R>` |
|
||||
|
||||
### Timestamp Styles
|
||||
|
||||
When using Unix timestamps, you can specify a style character to control how the timestamp is displayed:
|
||||
|
||||
| Style | Description | Example Output |
|
||||
| ----- | ----------------------- | ------------------------------------ |
|
||||
| `t` | Short time | 16:29 |
|
||||
| `T` | Medium time | 16:29:00 |
|
||||
| `d` | Short date | 10/21/2015 |
|
||||
| `D` | Long date | October 21, 2015 |
|
||||
| `f`\* | Long date, short time | October 21, 2015 at 16:29 |
|
||||
| `F` | Full date, short time | Wednesday, October 21, 2015 at 16:29 |
|
||||
| `s` | Short date, short time | 10/21/2015, 16:29 |
|
||||
| `S` | Short date, medium time | 10/21/2015, 16:29:00 |
|
||||
| `R` | Relative time | 2 hours ago |
|
||||
|
||||
\* Default if no style is provided.
|
||||
|
||||
## User Content CDN
|
||||
|
||||
### Base URL
|
||||
|
||||
```text
|
||||
https://fluxerusercontent.com
|
||||
```
|
||||
|
||||
All user-uploaded media content is served through the User Content CDN at the above base URL.
|
||||
|
||||
### CDN Endpoints
|
||||
|
||||
| Resource Type | Path Template | Supported Formats |
|
||||
| ------------------- | ---------------------------------------------------------------- | -------------------- |
|
||||
| User Avatar | `/avatars/{user_id}/{avatar_hash}.{ext}` | PNG, JPEG, WebP, GIF |
|
||||
| Guild Icon | `/icons/{guild_id}/{icon_hash}.{ext}` | PNG, JPEG, WebP, GIF |
|
||||
| Guild Banner | `/banners/{guild_id}/{banner_hash}.{ext}` | PNG, JPEG, WebP, GIF |
|
||||
| Guild Splash | `/splashes/{guild_id}/{splash_hash}.{ext}` | PNG, JPEG, WebP, GIF |
|
||||
| Guild Embed Splash | `/embed-splashes/{guild_id}/{embed_splash_hash}.{ext}` | PNG, JPEG, WebP |
|
||||
| Custom Emoji | `/emojis/{emoji_id}.{ext}` | PNG, JPEG, WebP, GIF |
|
||||
| Sticker | `/stickers/{sticker_id}.{ext}` | WebP, GIF |
|
||||
| Guild Member Avatar | `/guilds/{guild_id}/users/{user_id}/avatars/{avatar_hash}.{ext}` | PNG, JPEG, WebP, GIF |
|
||||
| Guild Member Banner | `/guilds/{guild_id}/users/{user_id}/banners/{banner_hash}.{ext}` | PNG, JPEG, WebP, GIF |
|
||||
| Attachment | `/attachments/{channel_id}/{attachment_id}/{filename}` | Various |
|
||||
|
||||
All CDN endpoints support query parameters for dynamic image transformation and optimization.
|
||||
|
||||
### Query Parameters
|
||||
|
||||
CDN endpoints support the following query parameters for transforming and optimizing media on the fly:
|
||||
|
||||
#### Avatar, Icon, Banner, Splash, and Emoji Endpoints
|
||||
|
||||
These endpoints support the `ImageQuerySchema`:
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
| ---------- | ------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `size` | integer | `128` | The desired width in pixels. Must be one of: 16, 20, 22, 24, 28, 32, 40, 44, 48, 56, 60, 64, 80, 96, 100, 128, 160, 240, 256, 300, 320, 480, 512, 600, 640, 1024, 1280, 1536, 2048, 3072, 4096. The image will be resized proportionally. |
|
||||
| `quality` | string | `high` | Image quality preset. Options: `high` (80% quality), `low` (20% quality), `lossless` (100% quality). |
|
||||
| `animated` | boolean | `false` | Whether to preserve animation for WebP images. **Note:** GIF images are always animated regardless of this parameter. |
|
||||
|
||||
#### Attachment Endpoints
|
||||
|
||||
Attachment endpoints support more flexible transformations via the `ExternalQuerySchema`:
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
| ---------- | ------- | ---------- | ------------------------------------------------------------------------------------------------------------------ |
|
||||
| `width` | integer | - | The desired width in pixels (1-4096). If only width is specified, height is calculated to maintain aspect ratio. |
|
||||
| `height` | integer | - | The desired height in pixels (1-4096). If only height is specified, width is calculated to maintain aspect ratio. |
|
||||
| `format` | string | - | Convert the image to the specified format. Options: `png`, `jpg`, `jpeg`, `webp`, `gif`. |
|
||||
| `quality` | string | `lossless` | Image quality preset. Options: `high` (80% quality), `low` (20% quality), `lossless` (100% quality). |
|
||||
| `animated` | boolean | `false` | Whether to preserve animation for GIF and WebP images. Must be set to `true` to preserve animation in attachments. |
|
||||
|
||||
<Callout>
|
||||
For attachment endpoints, if no transformations are specified (no `width`, `height`, `format`, or `quality` other than `lossless`), the original file is served directly.
|
||||
</Callout>
|
||||
|
||||
### Examples
|
||||
|
||||
```text
|
||||
# Get a 256px user avatar in high quality
|
||||
https://fluxerusercontent.com/avatars/123456789012345678/a_abc123.webp?size=256&quality=high
|
||||
|
||||
# Get an animated guild icon
|
||||
https://fluxerusercontent.com/icons/123456789012345678/a_def456.gif?size=512&animated=true
|
||||
|
||||
# Get an attachment resized to 800x600 in WebP format
|
||||
https://fluxerusercontent.com/attachments/123/456/image.png?width=800&height=600&format=webp
|
||||
|
||||
# Stream a video attachment without transformation
|
||||
https://fluxerusercontent.com/attachments/123/456/video.mp4
|
||||
```
|
||||
|
||||
## Static Assets CDN
|
||||
|
||||
### Base URL
|
||||
|
||||
```text
|
||||
https://fluxerstatic.com
|
||||
```
|
||||
|
||||
Default avatars can be accessed through the Static Assets CDN at the above base URL.
|
||||
|
||||
### CDN Endpoints
|
||||
|
||||
| Resource Type | Path Template | Supported Formats |
|
||||
| -------------- | ------------------------ | ----------------- |
|
||||
| Default Avatar | `/avatars/{index}.png`\* | PNG |
|
||||
|
||||
\* `{index}` is a number from `0` to `5`, representing the six default avatar options. Use `index = user_id % 6` to select a default avatar based on the user's ID.
|
||||
|
||||
```ts
|
||||
function getDefaultAvatarUrl(userId: string): string {
|
||||
const index = Number(BigInt(userId) % 6n);
|
||||
return `https://fluxerstatic.com/avatars/${index}.png`;
|
||||
}
|
||||
```
|
||||
|
||||
## Image Data
|
||||
|
||||
Image data is a data URI scheme supporting PNG, JPEG, WebP, and GIF formats. It consists of a prefix indicating the media type and encoding, followed by the base64-encoded image data.
|
||||
|
||||
```text
|
||||
data:image/{format};base64,{base64_data}
|
||||
```
|
||||
|
||||
Replace `{format}` with the actual image format (for example, `png`, `jpeg`, `webp`, `gif`) and `{base64_data}` with the base64-encoded string of the image.
|
||||
|
||||
## Uploading Files
|
||||
|
||||
<Callout>
|
||||
The file upload size limit applies to each file in a request. The default limit is **25 MiB** for free users and **500
|
||||
MiB** for premium users. At most **10 files** can be uploaded in a single message.
|
||||
</Callout>
|
||||
|
||||
### Multipart Form Data Upload
|
||||
|
||||
Upload files directly with your message using `multipart/form-data`:
|
||||
|
||||
```javascript
|
||||
const form = new FormData();
|
||||
|
||||
form.append(
|
||||
'payload_json',
|
||||
JSON.stringify({
|
||||
content: 'Check out these files!',
|
||||
attachments: [
|
||||
{id: 0, filename: 'cat.png', description: 'A cute cat'},
|
||||
{id: 1, filename: 'dog.jpg', description: 'A good dog'},
|
||||
],
|
||||
}),
|
||||
);
|
||||
|
||||
form.append('files[0]', catImageBlob, 'cat.png');
|
||||
form.append('files[1]', dogImageBlob, 'dog.jpg');
|
||||
|
||||
const response = await fetch('https://api.fluxer.app/v1/channels/123456789012345678/messages', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Authorization: 'Bot YOUR_BOT_TOKEN',
|
||||
},
|
||||
body: form,
|
||||
});
|
||||
```
|
||||
|
||||
### Editing Messages with Attachments
|
||||
|
||||
Existing attachments must be specified when `PATCH`ing messages with new attachments. Any attachments not specified will be removed and replaced with the specified list. If you don't specify `attachments` at all, the existing attachments will remain unchanged.
|
||||
|
||||
### Using Attachments in Embeds
|
||||
|
||||
Use the special `attachment://{filename}` URL format to reference uploaded files within embed objects.
|
||||
|
||||
<Callout type="warning">
|
||||
Only PNG, JPEG, WebP, and GIF image formats may be used at this time. Other file types are not supported.
|
||||
</Callout>
|
||||
|
||||
```json
|
||||
{
|
||||
"embeds": [
|
||||
{
|
||||
"title": "Look at this image",
|
||||
"image": {
|
||||
"url": "attachment://cat.png"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Gateway Events
|
||||
description: Gateway Events
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Gateway
|
||||
description: Gateway
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"title": "Events",
|
||||
"pages": ["overview", "gateway", "gateway-events"],
|
||||
"defaultOpen": true
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Overview
|
||||
description: Events Overview
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,37 +0,0 @@
|
||||
---
|
||||
title: Introduction
|
||||
description: Welcome to the Fluxer API documentation
|
||||
---
|
||||
|
||||
Learn how to talk to Fluxer from code: build bots, wire up automations, and plug Fluxer into the rest of your stack. Beep boop!
|
||||
|
||||
We only document the public APIs meant for you to build on. Some endpoints are used internally by the Fluxer app and may change without notice, so they're not covered here. If you're curious, the whole project is open source — you can always dig through the [code on GitHub](https://github.com/fluxerapp/fluxer) and experiment. Just remember that internal APIs may break at any time, and we don't officially support them.
|
||||
|
||||
## Getting Started
|
||||
|
||||
1. Create or log into your Fluxer account [via the web app](https://web.fluxer.app/channels/@me) or desktop app.
|
||||
2. Click the cogwheel in the bottom-left to open **User Settings** → **Applications**.
|
||||
3. Create your first application and copy the bot token.
|
||||
|
||||
Once you've got a bot token, you're ready to hit the Fluxer API. The [Quickstart guide](./quickstart) walks you through building a small bot end-to-end.
|
||||
|
||||
If you've used the [Discord API](https://discord.dev), you'll feel at home — Fluxer's API surface is intentionally similar (but not identical). For a quick primer on how Fluxer's API is structured, check out the [API Reference](./api-reference).
|
||||
|
||||
## Need Help?
|
||||
|
||||
Stuck on something or just want to bounce ideas around?
|
||||
|
||||
- Join the [Fluxer Developers community](https://fluxer.gg/fluxer-developers)
|
||||
- Open a thread in our [GitHub Discussions](https://github.com/fluxerapp/fluxer/discussions)
|
||||
- Or email us at [developers@fluxer.app](mailto:developers@fluxer.app)
|
||||
|
||||
The community is usually the quickest way to get eyes on a question, especially for code examples and debugging.
|
||||
|
||||
## Stay Updated
|
||||
|
||||
For release notes, new features, and occasional behind-the-scenes updates:
|
||||
|
||||
- Follow us on [Bluesky](https://bsky.app/profile/fluxer.app) (@fluxer.app)
|
||||
- Check the #announcements channel in the [Fluxer Developers community](https://fluxer.gg/fluxer-developers)
|
||||
|
||||
Happy coding!
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"title": "Documentation",
|
||||
"pages": [
|
||||
"index",
|
||||
"api-reference",
|
||||
"quickstart",
|
||||
"---Events",
|
||||
"events",
|
||||
"---Resources",
|
||||
"resources",
|
||||
"---Topics",
|
||||
"topics"
|
||||
]
|
||||
}
|
||||
@@ -1,188 +0,0 @@
|
||||
---
|
||||
title: Quickstart
|
||||
description: Build a small Fluxer bot with JavaScript using discord.js core
|
||||
---
|
||||
|
||||
Fluxer's HTTP and Gateway APIs are Discord-compatible in many places. You can use the low-level `discord.js` core packages as your REST + WebSocket clients.
|
||||
|
||||
This quickstart:
|
||||
- gets you to “ping → pong”
|
||||
- uses only the `discord.js` core packages that map closely to Fluxer
|
||||
- avoids framework-style abstractions until Fluxer SDKs exist for your language
|
||||
|
||||
<Callout type="info" title="Packages used">
|
||||
- `@discordjs/core`
|
||||
- `@discordjs/rest`
|
||||
- `@discordjs/ws`
|
||||
|
||||
We're not using the full `discord.js` library. Treat these as typed REST + WebSocket clients that speak the Discord Gateway protocol.
|
||||
</Callout>
|
||||
|
||||
<Callout type="warning" title="Compatibility">
|
||||
Fluxer is not Discord.
|
||||
|
||||
- Discord-only features/events/helpers in the wider `discord.js` ecosystem may not work.
|
||||
- Fluxer may ship payloads/features these packages don't support.
|
||||
- For larger or long-lived bots, expect Fluxer-specific code (or use a Fluxer SDK when available).
|
||||
|
||||
Use this as a quickstart, not a production architecture.
|
||||
</Callout>
|
||||
|
||||
You will:
|
||||
- set up a Node.js project
|
||||
- create a Fluxer application and bot token
|
||||
- build a minimal “ping → pong” bot
|
||||
|
||||
---
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- [Node.js](https://nodejs.org/en/) (LTS)
|
||||
- A Fluxer account (https://web.fluxer.app/register)
|
||||
- A text editor/IDE (for example, [VS Code](https://code.visualstudio.com/))
|
||||
- Basic JavaScript/Node.js familiarity
|
||||
|
||||
<Callout type="warning" title="Keep your bot token secret">
|
||||
Your bot token controls your bot. Don't commit it to Git. Use environment variables or a
|
||||
secrets manager.
|
||||
</Callout>
|
||||
|
||||
---
|
||||
|
||||
## Step 1: Set up your project
|
||||
|
||||
1. Create a directory:
|
||||
```bash
|
||||
mkdir fluxer-quickstart
|
||||
cd fluxer-quickstart
|
||||
```
|
||||
|
||||
2. Create `package.json`:
|
||||
```bash
|
||||
echo '{
|
||||
"name": "fluxer-quickstart",
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"main": "bot.js"
|
||||
}' > package.json
|
||||
```
|
||||
|
||||
3. Install dependencies:
|
||||
```bash
|
||||
npm install @discordjs/core @discordjs/rest @discordjs/ws
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 2: Create a Fluxer application and bot
|
||||
|
||||
1. Open the Fluxer app and sign in.
|
||||
|
||||
2. Go to **User Settings → Applications**.
|
||||
|
||||
3. Create an application.
|
||||
|
||||
4. On the application page:
|
||||
- Copy the bot token.
|
||||
- In **OAuth2 URL Builder**, select **Bot**.
|
||||
- (Optional) Pre-grant permissions.
|
||||
- Copy the **Authorize URL**.
|
||||
|
||||

|
||||
|
||||
5. Open the Authorize URL, pick a community, and click **Authorize**.
|
||||
|
||||
---
|
||||
|
||||
## Step 3: Set your bot token
|
||||
|
||||
Set `FLUXER_BOT_TOKEN`.
|
||||
|
||||
macOS/Linux:
|
||||
```bash
|
||||
export FLUXER_BOT_TOKEN="your_bot_token_here"
|
||||
```
|
||||
|
||||
Windows (Command Prompt):
|
||||
```cmd
|
||||
set FLUXER_BOT_TOKEN="your_bot_token_here"
|
||||
```
|
||||
|
||||
Windows (PowerShell):
|
||||
```powershell
|
||||
$Env:FLUXER_BOT_TOKEN = "your_bot_token_here"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 4: Write the bot
|
||||
|
||||
Create `bot.js`:
|
||||
```javascript
|
||||
import { Client, GatewayDispatchEvents } from "@discordjs/core";
|
||||
import { REST } from "@discordjs/rest";
|
||||
import { WebSocketManager } from "@discordjs/ws";
|
||||
|
||||
const token = process.env.FLUXER_BOT_TOKEN;
|
||||
|
||||
if (!token) {
|
||||
console.error("Missing FLUXER_BOT_TOKEN environment variable.");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const rest = new REST({
|
||||
api: "https://api.fluxer.app",
|
||||
version: "1",
|
||||
}).setToken(token);
|
||||
|
||||
const gateway = new WebSocketManager({
|
||||
token,
|
||||
intents: 0, // Fluxer has no intents yet
|
||||
rest,
|
||||
version: "1",
|
||||
});
|
||||
|
||||
export const client = new Client({ rest, gateway });
|
||||
|
||||
client.on(GatewayDispatchEvents.MessageCreate, async ({ api, data }) => {
|
||||
if (data.content === "ping") {
|
||||
await api.channels.createMessage(data.channel_id, { content: "pong" });
|
||||
}
|
||||
});
|
||||
|
||||
client.on(GatewayDispatchEvents.Ready, ({ data }) => {
|
||||
console.log(`Logged in as ${data.user.username}#${data.user.discriminator}`);
|
||||
});
|
||||
|
||||
gateway.connect();
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 5: Run the bot
|
||||
|
||||
```bash
|
||||
node bot.js
|
||||
```
|
||||
|
||||
Expected output:
|
||||
```text
|
||||
Logged in as MyFluxerBot#0000
|
||||
```
|
||||
|
||||
Send `ping` in a channel the bot can read/write. It should reply `pong`.
|
||||
|
||||
If it doesn't:
|
||||
- Ensure `FLUXER_BOT_TOKEN` is set in the same shell.
|
||||
- Confirm the bot is authorized into the correct community.
|
||||
- Confirm the bot can access the test channel.
|
||||
|
||||
---
|
||||
|
||||
## Next steps
|
||||
|
||||
- Read the [Fluxer API reference](./api-reference)
|
||||
- Review [Gateway Events](./events/gateway-events.mdx)
|
||||
- Add more handlers
|
||||
- Use Fluxer HTTP calls for features not covered by `discord.js` core
|
||||
- If you're up for it: build a Fluxer SDK for your language!
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Audit Log
|
||||
description: Audit Log
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Channel
|
||||
description: Channel
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Emoji
|
||||
description: Emoji
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Guild
|
||||
description: Guild
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Invite
|
||||
description: Invite
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Message
|
||||
description: Message
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"title": "Resources",
|
||||
"pages": ["audit-log", "channel", "emoji", "guild", "invite", "message", "sticker", "user", "voice", "webhook"],
|
||||
"defaultOpen": true
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Sticker
|
||||
description: Sticker
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: User
|
||||
description: User
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Voice
|
||||
description: Voice
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Webhook
|
||||
description: Webhook
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,17 +0,0 @@
|
||||
---
|
||||
title: Components
|
||||
description: Components
|
||||
---
|
||||
|
||||
## Code Block
|
||||
|
||||
```js
|
||||
console.log('Hello World');
|
||||
```
|
||||
|
||||
## Cards
|
||||
|
||||
<Cards>
|
||||
<Card title="Learn more about Next.js" href="https://nextjs.org/docs" />
|
||||
<Card title="Learn more about Fumadocs" href="https://fumadocs.dev" />
|
||||
</Cards>
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"title": "Topics",
|
||||
"pages": ["opcodes-status-codes", "permissions", "rate-limits", "voice"],
|
||||
"defaultOpen": true
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Opcodes & Status Codes
|
||||
description: Opcodes & Status Codes
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Permissions
|
||||
description: Permissions
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Rate Limits
|
||||
description: Rate Limits
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: Voice
|
||||
description: Voice
|
||||
---
|
||||
|
||||
TBD
|
||||
154
fluxer_docs/docs.json
Normal file
@@ -0,0 +1,154 @@
|
||||
{
|
||||
"$schema": "https://mintlify.com/docs.json",
|
||||
"theme": "maple",
|
||||
"name": "Fluxer",
|
||||
"colors": {
|
||||
"primary": "#5865F2",
|
||||
"light": "#7289DA",
|
||||
"dark": "#4752C4"
|
||||
},
|
||||
"favicon": "favicon.png",
|
||||
"navigation": {
|
||||
"tabs": [
|
||||
{
|
||||
"tab": "Guides",
|
||||
"groups": [
|
||||
{
|
||||
"group": "Getting started",
|
||||
"pages": ["index", "quickstart", "introduction/authentication"]
|
||||
},
|
||||
{
|
||||
"group": "Gateway",
|
||||
"pages": [
|
||||
"gateway/overview",
|
||||
"gateway/connection_lifecycle",
|
||||
"gateway/opcodes",
|
||||
"gateway/close_codes",
|
||||
"gateway/events"
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Topics",
|
||||
"pages": [
|
||||
"topics/snowflakes",
|
||||
"topics/error_codes",
|
||||
"topics/audit_log",
|
||||
"topics/rate_limits",
|
||||
"topics/permissions",
|
||||
"topics/voice",
|
||||
"topics/media_proxy",
|
||||
"topics/oauth2"
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Resources",
|
||||
"pages": [
|
||||
"resources/overview",
|
||||
"resources/users",
|
||||
"resources/guilds",
|
||||
"resources/channels",
|
||||
"resources/invites",
|
||||
"resources/webhooks",
|
||||
"resources/oauth2",
|
||||
"resources/billing",
|
||||
"resources/premium",
|
||||
"resources/gifts",
|
||||
"resources/gateway",
|
||||
"resources/auth",
|
||||
"resources/instance",
|
||||
"resources/admin",
|
||||
"resources/search",
|
||||
"resources/themes",
|
||||
"resources/packs",
|
||||
"resources/klipy",
|
||||
"resources/saved_media",
|
||||
"resources/reports",
|
||||
"resources/read_states",
|
||||
"resources/media_proxy",
|
||||
"resources/common"
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Self-hosting",
|
||||
"pages": [
|
||||
"self_hosting/overview",
|
||||
"self_hosting/quickstart",
|
||||
"self_hosting/configuration",
|
||||
"self_hosting/architecture",
|
||||
"self_hosting/voice",
|
||||
"self_hosting/upgrading"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"tab": "API reference",
|
||||
"openapi": "api-reference/openapi.json"
|
||||
},
|
||||
{
|
||||
"tab": "Media Proxy API",
|
||||
"openapi": "media-proxy-api/openapi.json"
|
||||
},
|
||||
{
|
||||
"tab": "Relay Directory API",
|
||||
"openapi": "relay-api/openapi.json"
|
||||
}
|
||||
],
|
||||
"global": {
|
||||
"anchors": [
|
||||
{
|
||||
"anchor": "Blog",
|
||||
"icon": "pencil",
|
||||
"href": "https://blog.fluxer.app"
|
||||
},
|
||||
{
|
||||
"anchor": "Help center",
|
||||
"icon": "life-ring",
|
||||
"href": "https://fluxer.app/help"
|
||||
},
|
||||
{
|
||||
"anchor": "Donate",
|
||||
"icon": "heart",
|
||||
"href": "https://fluxer.app/donate"
|
||||
},
|
||||
{
|
||||
"anchor": "Source code",
|
||||
"icon": "github",
|
||||
"href": "https://github.com/fluxerapp/fluxer"
|
||||
},
|
||||
{
|
||||
"anchor": "Security",
|
||||
"icon": "shield-check",
|
||||
"href": "https://fluxer.app/security"
|
||||
},
|
||||
{
|
||||
"anchor": "Bluesky",
|
||||
"icon": "butterfly",
|
||||
"href": "https://bsky.app/profile/fluxer.app"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"navbar": {
|
||||
"links": [
|
||||
{
|
||||
"label": "Support",
|
||||
"href": "mailto:developers@fluxer.app"
|
||||
}
|
||||
],
|
||||
"primary": {
|
||||
"type": "button",
|
||||
"label": "Open Fluxer",
|
||||
"href": "https://web.fluxer.app/channels/@me"
|
||||
}
|
||||
},
|
||||
"logo": {
|
||||
"light": "https://fluxerstatic.com/marketing/branding/logo-color.svg",
|
||||
"dark": "https://fluxerstatic.com/marketing/branding/logo-white.svg"
|
||||
},
|
||||
"footer": {
|
||||
"socials": {
|
||||
"github": "https://github.com/fluxerapp/fluxer"
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
fluxer_docs/favicon.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
19
fluxer_docs/favicon.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M9.06145 23.1079C5.26816 22.3769 -3.39077 20.6274 1.4173 5.06384C9.6344 6.09939 16.9728 14.0644 9.06145 23.1079Z" fill="url(#paint0_linear_17557_2021)"/>
|
||||
<path d="M8.91928 23.0939C5.27642 21.2223 0.78371 4.20891 17.0071 0C20.7569 7.19341 19.6212 16.5452 8.91928 23.0939Z" fill="url(#paint1_linear_17557_2021)"/>
|
||||
<path d="M8.91388 23.0788C8.73534 19.8817 10.1585 9.08525 23.5699 13.1107C23.1812 20.1229 18.984 26.4182 8.91388 23.0788Z" fill="url(#paint2_linear_17557_2021)"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_17557_2021" x1="3.77557" y1="5.91571" x2="5.23185" y2="21.5589" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#18E299"/>
|
||||
<stop offset="1" stop-color="#15803D"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_17557_2021" x1="12.1711" y1="-0.718425" x2="10.1897" y2="22.9832" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#16A34A"/>
|
||||
<stop offset="1" stop-color="#4ADE80"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_17557_2021" x1="23.1327" y1="15.353" x2="9.33841" y2="18.5196" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#4ADE80"/>
|
||||
<stop offset="1" stop-color="#0D9373"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
23
fluxer_docs/gateway/close_codes.mdx
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: 'Close codes'
|
||||
description: 'WebSocket close codes used by the Fluxer gateway.'
|
||||
---
|
||||
|
||||
When the gateway closes a connection, it sends a close code indicating why. Some close codes are recoverable (the client should reconnect), while others are not.
|
||||
|
||||
## Close code reference
|
||||
|
||||
| Code | Name | Description | Reconnect |
|
||||
|------|------|-------------|----------|
|
||||
| `4000` | `UNKNOWN_ERROR` | Unknown error occurred | Yes |
|
||||
| `4001` | `UNKNOWN_OPCODE` | Sent an invalid gateway opcode | Yes |
|
||||
| `4002` | `DECODE_ERROR` | Sent an invalid payload | Yes |
|
||||
| `4003` | `NOT_AUTHENTICATED` | Sent a payload before identifying | Yes |
|
||||
| `4004` | `AUTHENTICATION_FAILED` | Account token is invalid | No |
|
||||
| `4005` | `ALREADY_AUTHENTICATED` | Sent more than one identify payload | Yes |
|
||||
| `4007` | `INVALID_SEQ` | Sent an invalid sequence when resuming | Yes |
|
||||
| `4008` | `RATE_LIMITED` | Sending payloads too quickly | Yes |
|
||||
| `4009` | `SESSION_TIMEOUT` | Session timed out; reconnect and start a new one | Yes |
|
||||
| `4010` | `INVALID_SHARD` | Sent an invalid shard when identifying | No |
|
||||
| `4011` | `SHARDING_REQUIRED` | Session would have handled too many guilds; sharding is required | No |
|
||||
| `4012` | `INVALID_API_VERSION` | Sent an invalid gateway version | No |
|
||||
6
fluxer_docs/gateway/connection_lifecycle.mdx
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
title: 'Connection lifecycle'
|
||||
description: 'Connect, identify, stay connected, and recover from disconnects.'
|
||||
---
|
||||
|
||||
TBD
|
||||
1328
fluxer_docs/gateway/events.mdx
Normal file
25
fluxer_docs/gateway/opcodes.mdx
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: 'Opcodes'
|
||||
description: 'Gateway opcodes used for communication between client and server.'
|
||||
---
|
||||
|
||||
Gateway opcodes indicate the type of payload being sent or received. Clients send and receive different opcodes depending on their role in the connection lifecycle.
|
||||
|
||||
## Opcode reference
|
||||
|
||||
| Opcode | Name | Description | Client Action |
|
||||
|--------|------|-------------|---------------|
|
||||
| `0` | `DISPATCH` | Dispatches an event to the client | Receive |
|
||||
| `1` | `HEARTBEAT` | Fired periodically to keep the connection alive | Send/Receive |
|
||||
| `2` | `IDENTIFY` | Starts a new session during the initial handshake | Send |
|
||||
| `3` | `PRESENCE_UPDATE` | Updates the client presence | Send |
|
||||
| `4` | `VOICE_STATE_UPDATE` | Joins, moves, or disconnects from a voice channel | Send |
|
||||
| `5` | `VOICE_SERVER_PING` | Pings the voice server | Send |
|
||||
| `6` | `RESUME` | Resumes a previous session after a disconnect | Send |
|
||||
| `7` | `RECONNECT` | Indicates the client should reconnect to the gateway | Receive |
|
||||
| `8` | `REQUEST_GUILD_MEMBERS` | Requests members for a guild | Send |
|
||||
| `9` | `INVALID_SESSION` | Session has been invalidated; client should reconnect and identify | Receive |
|
||||
| `10` | `HELLO` | Sent immediately after connecting; contains heartbeat interval | Receive |
|
||||
| `11` | `HEARTBEAT_ACK` | Acknowledgement of a heartbeat | Receive |
|
||||
| `12` | `GATEWAY_ERROR` | Indicates an error occurred while processing a gateway message | Receive |
|
||||
| `14` | `LAZY_REQUEST` | Requests lazy-loaded guild data | Send |
|
||||
6
fluxer_docs/gateway/overview.mdx
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
title: 'Gateway overview'
|
||||
description: 'How Fluxer gateway connections work at a high level.'
|
||||
---
|
||||
|
||||
TBD
|
||||
BIN
fluxer_docs/images/checks-passed.png
Normal file
|
After Width: | Height: | Size: 157 KiB |
BIN
fluxer_docs/images/hero-dark.png
Normal file
|
After Width: | Height: | Size: 108 KiB |
BIN
fluxer_docs/images/hero-light.png
Normal file
|
After Width: | Height: | Size: 102 KiB |
42
fluxer_docs/index.mdx
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: 'Introduction'
|
||||
description: 'Fluxer developer documentation'
|
||||
---
|
||||
|
||||
Fluxer is a free and open source instant messaging and VoIP platform built for friends, groups, and communities.
|
||||
|
||||
With Fluxer's HTTP, WebSocket Gateway, and Media Proxy APIs, you can build integrations on the Fluxer platform, whether you're creating a bot, a webhook, or an OAuth2 integration.
|
||||
|
||||
Fluxer's APIs are consistent across Fluxer instances, as long as they're running the latest Fluxer Server version. This applies whether you use the official Fluxer.app deployment operated by Fluxer Platform AB or a self-hosted deployment. Just make sure you use the correct base URLs for the instance you're targeting.
|
||||
|
||||
Fluxer's API surface is intentionally similar to Discord's, but it's not Discord. You should expect some differences. That said, if you've worked with Discord's APIs before, you'll likely feel at home. The part most likely to remain compatible is the core WebSocket Gateway protocol, which means you can often reuse WebSocket connection code from existing Discord libraries.
|
||||
|
||||
## Documentation scope
|
||||
|
||||
These docs are more comprehensive than you might be used to from Discord since they cover not only bot-facing APIs, but also instance management APIs (since you can self-host Fluxer) and client-specific APIs (since Fluxer encourages you to build third-party clients). If you're just looking to build a bot, you can safely skip over sections that don't interest you.
|
||||
|
||||
## Ready to get started?
|
||||
|
||||
<Card
|
||||
title="Quickstart: Build your first bot"
|
||||
icon="rocket"
|
||||
href="/quickstart"
|
||||
horizontal
|
||||
>
|
||||
Create a Fluxer bot that pings your pong.
|
||||
</Card>
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="API Reference" icon="terminal" href="/api-reference/introduction">
|
||||
See all the HTTP API endpoints available.
|
||||
</Card>
|
||||
<Card title="WebSocket Gateway API" icon="satellite-dish" href="/gateway/overview">
|
||||
Learn how to implement your own WebSocket client. Or use an existing one.
|
||||
</Card>
|
||||
<Card title="OAuth2" icon="key" href="/topics/oauth2">
|
||||
Let people sign in with Fluxer to your web services.
|
||||
</Card>
|
||||
<Card title="Resources" icon="table" href="/resources/overview">
|
||||
Browse all request and response schemas in detail.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
6
fluxer_docs/introduction/authentication.mdx
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
title: 'Authentication'
|
||||
description: 'Token types and how to authenticate to Fluxer.'
|
||||
---
|
||||
|
||||
TBD
|
||||
@@ -1,45 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2026 Fluxer Contributors
|
||||
*
|
||||
* This file is part of Fluxer.
|
||||
*
|
||||
* Fluxer is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Fluxer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Fluxer. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {docs} from 'fumadocs-mdx:collections/server';
|
||||
import {type InferPageType, loader} from 'fumadocs-core/source';
|
||||
import {lucideIconsPlugin} from 'fumadocs-core/source/lucide-icons';
|
||||
|
||||
export const source = loader({
|
||||
baseUrl: '/',
|
||||
source: docs.toFumadocsSource(),
|
||||
plugins: [lucideIconsPlugin()],
|
||||
});
|
||||
|
||||
export function getPageImage(page: InferPageType<typeof source>) {
|
||||
const segments = [...page.slugs, 'image.png'];
|
||||
|
||||
return {
|
||||
segments,
|
||||
url: `/og/docs/${segments.join('/')}`,
|
||||
};
|
||||
}
|
||||
|
||||
export async function getLLMText(page: InferPageType<typeof source>) {
|
||||
const processed = await page.data.getText('processed');
|
||||
|
||||
return `# ${page.data.title}
|
||||
|
||||
${processed}`;
|
||||
}
|
||||
21
fluxer_docs/logo/dark.svg
Normal file
|
After Width: | Height: | Size: 12 KiB |
21
fluxer_docs/logo/light.svg
Normal file
|
After Width: | Height: | Size: 12 KiB |
@@ -1,32 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2026 Fluxer Contributors
|
||||
*
|
||||
* This file is part of Fluxer.
|
||||
*
|
||||
* Fluxer is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Fluxer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Fluxer. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import defaultMdxComponents from 'fumadocs-ui/mdx';
|
||||
import type {MDXComponents} from 'mdx/types';
|
||||
import type {ComponentProps} from 'react';
|
||||
|
||||
export function getMDXComponents(components?: MDXComponents): MDXComponents {
|
||||
return {
|
||||
...defaultMdxComponents,
|
||||
...components,
|
||||
// biome-ignore lint/a11y/useAltText: alt is passed through props from MDX content
|
||||
// biome-ignore lint/performance/noImgElement: using native img for external image linking
|
||||
img: (props: ComponentProps<'img'>) => <img loading={props.loading ?? 'lazy'} {...props} />,
|
||||
};
|
||||
}
|
||||
1471
fluxer_docs/media-proxy-api/openapi.json
Normal file
@@ -1,34 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2026 Fluxer Contributors
|
||||
*
|
||||
* This file is part of Fluxer.
|
||||
*
|
||||
* Fluxer is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Fluxer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Fluxer. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {createMDX} from 'fumadocs-mdx/next';
|
||||
|
||||
const withMDX = createMDX();
|
||||
|
||||
/** @type {import('next').NextConfig} */
|
||||
const config = {
|
||||
reactStrictMode: true,
|
||||
output: 'standalone',
|
||||
// Disable Next.js image optimization so external image URLs are served directly.
|
||||
images: {
|
||||
unoptimized: true,
|
||||
},
|
||||
};
|
||||
|
||||
export default withMDX(config);
|
||||
@@ -1,38 +0,0 @@
|
||||
{
|
||||
"name": "fluxer_docs",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "next build",
|
||||
"dev": "next dev",
|
||||
"start": "next start",
|
||||
"types:check": "fumadocs-mdx && tsc --noEmit",
|
||||
"postinstall": "fumadocs-mdx"
|
||||
},
|
||||
"dependencies": {
|
||||
"fumadocs-core": "16.2.5",
|
||||
"fumadocs-mdx": "14.1.0",
|
||||
"fumadocs-ui": "16.2.5",
|
||||
"lucide-react": "0.561.0",
|
||||
"next": "16.0.10",
|
||||
"react": "19.2.3",
|
||||
"react-dom": "19.2.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/postcss": "4.1.18",
|
||||
"@types/mdx": "2.0.13",
|
||||
"@types/node": "25.0.1",
|
||||
"@types/react": "19.2.7",
|
||||
"@types/react-dom": "19.2.3",
|
||||
"postcss": "8.5.6",
|
||||
"tailwindcss": "4.1.18",
|
||||
"typescript": "5.9.3",
|
||||
"vite": "7.2.7"
|
||||
},
|
||||
"pnpm": {
|
||||
"onlyBuiltDependencies": [
|
||||
"esbuild",
|
||||
"sharp"
|
||||
]
|
||||
}
|
||||
}
|
||||
4399
fluxer_docs/pnpm-lock.yaml
generated
@@ -1,24 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2026 Fluxer Contributors
|
||||
*
|
||||
* This file is part of Fluxer.
|
||||
*
|
||||
* Fluxer is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Fluxer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Fluxer. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
export default {
|
||||
plugins: {
|
||||
'@tailwindcss/postcss': {},
|
||||
},
|
||||
};
|
||||
6
fluxer_docs/quickstart.mdx
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
title: 'Quickstart: ping-pong bot'
|
||||
description: 'Create a bot application, invite it to a guild, and reply "pong" to "ping".'
|
||||
---
|
||||
|
||||
TBD
|
||||
764
fluxer_docs/relay-api/openapi.json
Normal file
@@ -0,0 +1,764 @@
|
||||
{
|
||||
"openapi": "3.1.0",
|
||||
"info": {
|
||||
"title": "Fluxer Relay Directory API",
|
||||
"version": "1.0.0",
|
||||
"description": "API for discovering and managing Fluxer relay servers for federation. The relay directory service maintains a registry of available relay servers that clients can use to connect to Fluxer instances through encrypted tunnels.",
|
||||
"contact": {
|
||||
"name": "Fluxer Developers",
|
||||
"email": "developers@fluxer.app"
|
||||
},
|
||||
"license": {
|
||||
"name": "AGPL-3.0",
|
||||
"url": "https://www.gnu.org/licenses/agpl-3.0.html"
|
||||
}
|
||||
},
|
||||
"servers": [
|
||||
{
|
||||
"url": "https://relay.fluxer.app",
|
||||
"description": "Production relay directory"
|
||||
}
|
||||
],
|
||||
"paths": {
|
||||
"/_health": {
|
||||
"get": {
|
||||
"operationId": "getHealth",
|
||||
"summary": "Health check",
|
||||
"description": "Returns the health status of the relay directory service.",
|
||||
"tags": ["Health"],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Service is healthy",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/HealthCheckResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/v1/relays": {
|
||||
"get": {
|
||||
"operationId": "listRelays",
|
||||
"summary": "List available relays",
|
||||
"description": "Returns a list of available relay servers. Optionally, provide client coordinates to sort relays by proximity.",
|
||||
"tags": ["Relays"],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "lat",
|
||||
"in": "query",
|
||||
"description": "Client latitude for proximity-based sorting",
|
||||
"required": false,
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lon",
|
||||
"in": "query",
|
||||
"description": "Client longitude for proximity-based sorting",
|
||||
"required": false,
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "limit",
|
||||
"in": "query",
|
||||
"description": "Maximum number of relays to return",
|
||||
"required": false,
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "List of available relays",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/RelayListResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/v1/relays/register": {
|
||||
"post": {
|
||||
"operationId": "registerRelay",
|
||||
"summary": "Register a new relay",
|
||||
"description": "Registers a new relay server with the directory. The relay must provide its public key for E2E encryption.",
|
||||
"tags": ["Relays"],
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/RegisterRelayRequest"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"201": {
|
||||
"description": "Relay registered successfully",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/RelayInfoResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/v1/relays/{id}/status": {
|
||||
"get": {
|
||||
"operationId": "getRelayStatus",
|
||||
"summary": "Get relay status",
|
||||
"description": "Returns the current status of a specific relay server.",
|
||||
"tags": ["Relays"],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"description": "Relay UUID",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "uuid"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Relay status",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/RelayStatusResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "Relay not found",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/RelayNotFoundError"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/v1/relays/{id}/heartbeat": {
|
||||
"post": {
|
||||
"operationId": "sendHeartbeat",
|
||||
"summary": "Send relay heartbeat",
|
||||
"description": "Sends a heartbeat to indicate the relay is still alive. Relays should send heartbeats periodically to maintain their healthy status.",
|
||||
"tags": ["Relays"],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"description": "Relay UUID",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "uuid"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Heartbeat received",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/RelayHeartbeatResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "Relay not found",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/RelayNotFoundError"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/v1/relays/{id}": {
|
||||
"delete": {
|
||||
"operationId": "deleteRelay",
|
||||
"summary": "Unregister a relay",
|
||||
"description": "Removes a relay server from the directory.",
|
||||
"tags": ["Relays"],
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"description": "Relay UUID",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"format": "uuid"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Relay deleted",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/RelayDeletedResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "Relay not found",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/RelayNotFoundError"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"components": {
|
||||
"schemas": {
|
||||
"HealthCheckResponse": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": ["ok"],
|
||||
"description": "Health status"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "Current server timestamp"
|
||||
}
|
||||
},
|
||||
"required": ["status", "timestamp"]
|
||||
},
|
||||
"RelayInfoResponse": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"description": "Unique identifier for the relay"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Human-readable name of the relay"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Base URL of the relay service"
|
||||
},
|
||||
"latitude": {
|
||||
"type": "number",
|
||||
"description": "Geographic latitude of the relay"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number",
|
||||
"description": "Geographic longitude of the relay"
|
||||
},
|
||||
"region": {
|
||||
"type": "string",
|
||||
"description": "Region identifier (e.g., eu-west, us-east)"
|
||||
},
|
||||
"capacity": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 9007199254740991,
|
||||
"format": "int64",
|
||||
"description": "Maximum number of connections this relay can handle"
|
||||
},
|
||||
"current_connections": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 9007199254740991,
|
||||
"format": "int64",
|
||||
"description": "Current number of active connections"
|
||||
},
|
||||
"public_key": {
|
||||
"type": "string",
|
||||
"description": "Base64-encoded X25519 public key for E2E encryption"
|
||||
},
|
||||
"registered_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "ISO 8601 timestamp when the relay was registered"
|
||||
},
|
||||
"last_seen_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "ISO 8601 timestamp of the last health check or heartbeat"
|
||||
},
|
||||
"healthy": {
|
||||
"type": "boolean",
|
||||
"description": "Whether the relay is currently healthy"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"name",
|
||||
"url",
|
||||
"latitude",
|
||||
"longitude",
|
||||
"region",
|
||||
"capacity",
|
||||
"current_connections",
|
||||
"public_key",
|
||||
"registered_at",
|
||||
"last_seen_at",
|
||||
"healthy"
|
||||
]
|
||||
},
|
||||
"RelayWithDistanceResponse": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"description": "Unique identifier for the relay"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Human-readable name of the relay"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Base URL of the relay service"
|
||||
},
|
||||
"latitude": {
|
||||
"type": "number",
|
||||
"description": "Geographic latitude of the relay"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number",
|
||||
"description": "Geographic longitude of the relay"
|
||||
},
|
||||
"region": {
|
||||
"type": "string",
|
||||
"description": "Region identifier (e.g., eu-west, us-east)"
|
||||
},
|
||||
"capacity": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 9007199254740991,
|
||||
"format": "int64",
|
||||
"description": "Maximum number of connections this relay can handle"
|
||||
},
|
||||
"current_connections": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 9007199254740991,
|
||||
"format": "int64",
|
||||
"description": "Current number of active connections"
|
||||
},
|
||||
"public_key": {
|
||||
"type": "string",
|
||||
"description": "Base64-encoded X25519 public key for E2E encryption"
|
||||
},
|
||||
"registered_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "ISO 8601 timestamp when the relay was registered"
|
||||
},
|
||||
"last_seen_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "ISO 8601 timestamp of the last health check or heartbeat"
|
||||
},
|
||||
"healthy": {
|
||||
"type": "boolean",
|
||||
"description": "Whether the relay is currently healthy"
|
||||
},
|
||||
"distance_km": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Distance from client location in kilometres"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"name",
|
||||
"url",
|
||||
"latitude",
|
||||
"longitude",
|
||||
"region",
|
||||
"capacity",
|
||||
"current_connections",
|
||||
"public_key",
|
||||
"registered_at",
|
||||
"last_seen_at",
|
||||
"healthy",
|
||||
"distance_km"
|
||||
]
|
||||
},
|
||||
"RelayListResponse": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"relays": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"description": "Unique identifier for the relay"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Human-readable name of the relay"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Base URL of the relay service"
|
||||
},
|
||||
"latitude": {
|
||||
"type": "number",
|
||||
"description": "Geographic latitude of the relay"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number",
|
||||
"description": "Geographic longitude of the relay"
|
||||
},
|
||||
"region": {
|
||||
"type": "string",
|
||||
"description": "Region identifier (e.g., eu-west, us-east)"
|
||||
},
|
||||
"capacity": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 9007199254740991,
|
||||
"format": "int64",
|
||||
"description": "Maximum number of connections this relay can handle"
|
||||
},
|
||||
"current_connections": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 9007199254740991,
|
||||
"format": "int64",
|
||||
"description": "Current number of active connections"
|
||||
},
|
||||
"public_key": {
|
||||
"type": "string",
|
||||
"description": "Base64-encoded X25519 public key for E2E encryption"
|
||||
},
|
||||
"registered_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "ISO 8601 timestamp when the relay was registered"
|
||||
},
|
||||
"last_seen_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "ISO 8601 timestamp of the last health check or heartbeat"
|
||||
},
|
||||
"healthy": {
|
||||
"type": "boolean",
|
||||
"description": "Whether the relay is currently healthy"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"name",
|
||||
"url",
|
||||
"latitude",
|
||||
"longitude",
|
||||
"region",
|
||||
"capacity",
|
||||
"current_connections",
|
||||
"public_key",
|
||||
"registered_at",
|
||||
"last_seen_at",
|
||||
"healthy"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"description": "Unique identifier for the relay"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Human-readable name of the relay"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Base URL of the relay service"
|
||||
},
|
||||
"latitude": {
|
||||
"type": "number",
|
||||
"description": "Geographic latitude of the relay"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number",
|
||||
"description": "Geographic longitude of the relay"
|
||||
},
|
||||
"region": {
|
||||
"type": "string",
|
||||
"description": "Region identifier (e.g., eu-west, us-east)"
|
||||
},
|
||||
"capacity": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 9007199254740991,
|
||||
"format": "int64",
|
||||
"description": "Maximum number of connections this relay can handle"
|
||||
},
|
||||
"current_connections": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 9007199254740991,
|
||||
"format": "int64",
|
||||
"description": "Current number of active connections"
|
||||
},
|
||||
"public_key": {
|
||||
"type": "string",
|
||||
"description": "Base64-encoded X25519 public key for E2E encryption"
|
||||
},
|
||||
"registered_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "ISO 8601 timestamp when the relay was registered"
|
||||
},
|
||||
"last_seen_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "ISO 8601 timestamp of the last health check or heartbeat"
|
||||
},
|
||||
"healthy": {
|
||||
"type": "boolean",
|
||||
"description": "Whether the relay is currently healthy"
|
||||
},
|
||||
"distance_km": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"description": "Distance from client location in kilometres"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"name",
|
||||
"url",
|
||||
"latitude",
|
||||
"longitude",
|
||||
"region",
|
||||
"capacity",
|
||||
"current_connections",
|
||||
"public_key",
|
||||
"registered_at",
|
||||
"last_seen_at",
|
||||
"healthy",
|
||||
"distance_km"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"description": "List of available relays"
|
||||
},
|
||||
"count": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 9007199254740991,
|
||||
"format": "int64",
|
||||
"description": "Total number of relays returned"
|
||||
}
|
||||
},
|
||||
"required": ["relays", "count"]
|
||||
},
|
||||
"RelayStatusResponse": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"description": "Unique identifier for the relay"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Human-readable name of the relay"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Base URL of the relay service"
|
||||
},
|
||||
"region": {
|
||||
"type": "string",
|
||||
"description": "Region identifier"
|
||||
},
|
||||
"healthy": {
|
||||
"type": "boolean",
|
||||
"description": "Whether the relay is currently healthy"
|
||||
},
|
||||
"current_connections": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 9007199254740991,
|
||||
"format": "int64",
|
||||
"description": "Current number of active connections"
|
||||
},
|
||||
"capacity": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 9007199254740991,
|
||||
"format": "int64",
|
||||
"description": "Maximum connection capacity"
|
||||
},
|
||||
"last_seen_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "ISO 8601 timestamp of the last health check or heartbeat"
|
||||
}
|
||||
},
|
||||
"required": ["id", "name", "url", "region", "healthy", "current_connections", "capacity", "last_seen_at"]
|
||||
},
|
||||
"RelayHeartbeatResponse": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": ["ok"],
|
||||
"description": "Confirmation that heartbeat was received"
|
||||
}
|
||||
},
|
||||
"required": ["status"]
|
||||
},
|
||||
"RelayDeletedResponse": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": ["deleted"],
|
||||
"description": "Confirmation that relay was deleted"
|
||||
}
|
||||
},
|
||||
"required": ["status"]
|
||||
},
|
||||
"RegisterRelayRequest": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 100,
|
||||
"description": "Human-readable name of the relay"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Base URL of the relay service"
|
||||
},
|
||||
"latitude": {
|
||||
"type": "number",
|
||||
"minimum": -90,
|
||||
"maximum": 90,
|
||||
"description": "Geographic latitude of the relay"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "number",
|
||||
"minimum": -180,
|
||||
"maximum": 180,
|
||||
"description": "Geographic longitude of the relay"
|
||||
},
|
||||
"region": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 50,
|
||||
"description": "Region identifier"
|
||||
},
|
||||
"capacity": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 9007199254740991,
|
||||
"format": "int64",
|
||||
"description": "Maximum connection capacity"
|
||||
},
|
||||
"public_key": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"description": "Base64-encoded X25519 public key for E2E encryption"
|
||||
}
|
||||
},
|
||||
"required": ["name", "url", "latitude", "longitude", "public_key"]
|
||||
},
|
||||
"RelayIdParam": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"format": "uuid",
|
||||
"description": "Relay UUID"
|
||||
}
|
||||
},
|
||||
"required": ["id"]
|
||||
},
|
||||
"RelayListQuery": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"lat": {
|
||||
"type": "string",
|
||||
"description": "Client latitude for proximity sorting"
|
||||
},
|
||||
"lon": {
|
||||
"type": "string",
|
||||
"description": "Client longitude for proximity sorting"
|
||||
},
|
||||
"limit": {
|
||||
"type": "string",
|
||||
"description": "Maximum number of relays to return"
|
||||
}
|
||||
}
|
||||
},
|
||||
"RelayNotFoundError": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"error": {
|
||||
"type": "string",
|
||||
"description": "Error message"
|
||||
},
|
||||
"code": {
|
||||
"type": "string",
|
||||
"enum": ["RELAY_NOT_FOUND"],
|
||||
"description": "Error code"
|
||||
}
|
||||
},
|
||||
"required": ["error", "code"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
3095
fluxer_docs/resources/admin.mdx
Normal file
483
fluxer_docs/resources/auth.mdx
Normal file
@@ -0,0 +1,483 @@
|
||||
---
|
||||
title: 'Auth'
|
||||
description: 'Auth object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="authenticatortype"></a>
|
||||
|
||||
## AuthenticatorType
|
||||
|
||||
The type of authenticator
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `0` | Time-based one-time password authenticator |
|
||||
| `1` | SMS-based authenticator |
|
||||
| `2` | WebAuthn authenticator |
|
||||
|
||||
<a id="authloginresponse"></a>
|
||||
|
||||
## AuthLoginResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/email-revert`](/api-reference/auth/revert-email-change)
|
||||
- [`POST /auth/login`](/api-reference/auth/login-account)
|
||||
- [`POST /auth/reset`](/api-reference/auth/reset-password)
|
||||
|
||||
Type: [AuthTokenWithUserIdResponse](#authtokenwithuseridresponse) \| [AuthMfaRequiredResponse](#authmfarequiredresponse)
|
||||
|
||||
<a id="authmfarequiredresponse"></a>
|
||||
|
||||
## AuthMfaRequiredResponse
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| allowed_methods | string[] | List of allowed MFA methods |
|
||||
| mfa | enum<`true`> | Indicates MFA is required to complete authentication |
|
||||
| sms | boolean | Whether SMS MFA is available |
|
||||
| sms_phone_hint? | ?string | Masked phone number hint for SMS MFA |
|
||||
| ticket | string | MFA ticket to use when completing MFA verification |
|
||||
| totp | boolean | Whether TOTP authenticator MFA is available |
|
||||
| webauthn | boolean | Whether WebAuthn security key MFA is available |
|
||||
|
||||
<a id="authorizeiprequest"></a>
|
||||
|
||||
## AuthorizeIpRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/authorize-ip`](/api-reference/auth/authorize-ip-address)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| token | string | The IP authorization token from email |
|
||||
|
||||
<a id="authregisterresponse"></a>
|
||||
|
||||
## AuthRegisterResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/register`](/api-reference/auth/register-account)
|
||||
|
||||
Type: [AuthTokenWithUserIdResponse](#authtokenwithuseridresponse) \| [AuthMfaRequiredResponse](#authmfarequiredresponse)
|
||||
|
||||
<a id="authsessionclientinfo"></a>
|
||||
|
||||
## AuthSessionClientInfo
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| browser? | ?string | The browser reported by the client |
|
||||
| location? | ?[AuthSessionLocation](#authsessionlocation) | The geolocation data sent by the client |
|
||||
| os? | ?string | The operating system reported by the client |
|
||||
| platform? | ?string | The platform reported by the client |
|
||||
|
||||
<a id="authsessionlocation"></a>
|
||||
|
||||
## AuthSessionLocation
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| city? | ?string | The city name reported by the client |
|
||||
| country? | ?string | The country reported by the client |
|
||||
| region? | ?string | The region reported by the client |
|
||||
|
||||
<a id="authsessionresponse"></a>
|
||||
|
||||
## AuthSessionResponse
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| approx_last_used_at? | ?string (date-time) | Approximate timestamp of the last session activity |
|
||||
| client_info? | ?[AuthSessionClientInfo](#authsessionclientinfo) | Client metadata recorded for this session |
|
||||
| current | boolean | Whether this is the current session making the request |
|
||||
| id_hash | [SnowflakeType](#snowflaketype) | The base64url-encoded session id hash |
|
||||
|
||||
<a id="authsessionsresponse"></a>
|
||||
|
||||
## AuthSessionsResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /auth/sessions`](/api-reference/auth/list-auth-sessions)
|
||||
|
||||
Type: [AuthSessionResponse](#authsessionresponse)[]
|
||||
|
||||
<a id="authtokenwithuseridresponse"></a>
|
||||
|
||||
## AuthTokenWithUserIdResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/login/mfa/sms`](/api-reference/auth/login-with-sms-mfa)
|
||||
- [`POST /auth/login/mfa/totp`](/api-reference/auth/login-with-totp)
|
||||
- [`POST /auth/login/mfa/webauthn`](/api-reference/auth/login-with-webauthn-mfa)
|
||||
- [`POST /auth/webauthn/authenticate`](/api-reference/auth/authenticate-with-webauthn)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| token | string | Authentication token for API requests |
|
||||
| user_id | [SnowflakeType](#snowflaketype) | ID of the authenticated user |
|
||||
|
||||
<a id="emailrevertrequest"></a>
|
||||
|
||||
## EmailRevertRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/email-revert`](/api-reference/auth/revert-email-change)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| password | [PasswordType](#passwordtype) | |
|
||||
| token | string | Email revert token from email |
|
||||
|
||||
<a id="forgotpasswordrequest"></a>
|
||||
|
||||
## ForgotPasswordRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/forgot`](/api-reference/auth/forgot-password)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| email | [EmailType](#emailtype) | |
|
||||
|
||||
<a id="handoffcompleterequest"></a>
|
||||
|
||||
## HandoffCompleteRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/handoff/complete`](/api-reference/auth/complete-handoff)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| code | string | The handoff code from the initiating session |
|
||||
| token | string | The authentication token to transfer |
|
||||
| user_id | [SnowflakeType](#snowflaketype) | The user ID associated with the token |
|
||||
|
||||
<a id="handoffinitiateresponse"></a>
|
||||
|
||||
## HandoffInitiateResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/handoff/initiate`](/api-reference/auth/initiate-handoff)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| code | string | Handoff code to share with the receiving device |
|
||||
| expires_at | string (date-time) | ISO 8601 timestamp when the handoff code expires |
|
||||
|
||||
<a id="handoffstatusresponse"></a>
|
||||
|
||||
## HandoffStatusResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /auth/handoff/{code}/status`](/api-reference/auth/get-handoff-status)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| status | string | Current status of the handoff (pending, completed, expired) |
|
||||
| token? | ?string | Authentication token if handoff is complete |
|
||||
| user_id? | ?[SnowflakeType](#snowflaketype) | User ID if handoff is complete |
|
||||
|
||||
<a id="ipauthorizationpollresponse"></a>
|
||||
|
||||
## IpAuthorizationPollResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /auth/ip-authorization/poll`](/api-reference/auth/poll-ip-authorization)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| completed | boolean | Whether the IP authorization has been completed |
|
||||
| token? | ?string | Authentication token if authorization is complete |
|
||||
| user_id? | ?[SnowflakeType](#snowflaketype) | User ID if authorization is complete |
|
||||
|
||||
<a id="loginrequest"></a>
|
||||
|
||||
## LoginRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/login`](/api-reference/auth/login-account)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| email | [EmailType](#emailtype) | |
|
||||
| invite_code? | ?string | Guild invite code to join after login |
|
||||
| password | [PasswordType](#passwordtype) | |
|
||||
|
||||
<a id="logoutauthsessionsrequest"></a>
|
||||
|
||||
## LogoutAuthSessionsRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/sessions/logout`](/api-reference/auth/logout-all-sessions)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| password? | [PasswordType](#passwordtype) | |
|
||||
| session_id_hashes | [SnowflakeType](#snowflaketype)[] | Array of session ID hashes to log out (max 100) |
|
||||
|
||||
<a id="mfabackupcoderesponse"></a>
|
||||
|
||||
## MfaBackupCodeResponse
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| code | string | The backup code |
|
||||
| consumed | boolean | Whether the code has been used |
|
||||
|
||||
<a id="mfasmsrequest"></a>
|
||||
|
||||
## MfaSmsRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/login/mfa/sms`](/api-reference/auth/login-with-sms-mfa)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| code | string | The SMS verification code |
|
||||
| ticket | string | The MFA ticket from the login response |
|
||||
|
||||
<a id="mfaticketrequest"></a>
|
||||
|
||||
## MfaTicketRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/ip-authorization/resend`](/api-reference/auth/resend-ip-authorization)
|
||||
- [`POST /auth/login/mfa/sms/send`](/api-reference/auth/send-sms-mfa-code)
|
||||
- [`POST /auth/login/mfa/webauthn/authentication-options`](/api-reference/auth/get-webauthn-mfa-options)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| ticket | string | The MFA ticket from the login response |
|
||||
|
||||
<a id="mfatotprequest"></a>
|
||||
|
||||
## MfaTotpRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/login/mfa/totp`](/api-reference/auth/login-with-totp)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| code | string | The TOTP code from the authenticator app |
|
||||
| ticket | string | The MFA ticket from the login response |
|
||||
|
||||
<a id="registerrequest"></a>
|
||||
|
||||
## RegisterRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/register`](/api-reference/auth/register-account)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| consent | boolean | Whether user consents to terms of service |
|
||||
| date_of_birth | string | Date of birth in YYYY-MM-DD format |
|
||||
| email? | [EmailType](#emailtype) | |
|
||||
| global_name? | string | Display name shown to other users |
|
||||
| invite_code? | ?string | Guild invite code to join after registration |
|
||||
| password? | [PasswordType](#passwordtype) | |
|
||||
| username? | [UsernameType](#usernametype) | |
|
||||
|
||||
<a id="resetpasswordrequest"></a>
|
||||
|
||||
## ResetPasswordRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/reset`](/api-reference/auth/reset-password)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| password | [PasswordType](#passwordtype) | |
|
||||
| token | string | Password reset token from email |
|
||||
|
||||
<a id="ssocompleterequest"></a>
|
||||
|
||||
## SsoCompleteRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/sso/complete`](/api-reference/auth/complete-sso)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| code | string | Authorization code from the SSO provider |
|
||||
| state | string | State parameter for CSRF protection |
|
||||
|
||||
<a id="ssocompleteresponse"></a>
|
||||
|
||||
## SsoCompleteResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/sso/complete`](/api-reference/auth/complete-sso)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| redirect_to | string | URL to redirect the user to after completion |
|
||||
| token | string | Authentication token for the session |
|
||||
| user_id | [SnowflakeType](#snowflaketype) | ID of the authenticated user |
|
||||
|
||||
<a id="ssoconfigresponse"></a>
|
||||
|
||||
## SsoConfigResponse
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| allowed_domains | string[] | |
|
||||
| authorization_url | ?string | |
|
||||
| auto_provision | boolean | |
|
||||
| client_id | ?[SnowflakeType](#snowflaketype) | |
|
||||
| client_secret_set | boolean | |
|
||||
| display_name | ?string | |
|
||||
| enabled | boolean | |
|
||||
| issuer | ?string | |
|
||||
| jwks_url | ?string | |
|
||||
| redirect_uri | ?string | |
|
||||
| scope | ?string | |
|
||||
| token_url | ?string | |
|
||||
| userinfo_url | ?string | |
|
||||
|
||||
<a id="ssostartrequest"></a>
|
||||
|
||||
## SsoStartRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/sso/start`](/api-reference/auth/start-sso)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| redirect_to? | ?string | URL to redirect to after SSO completion |
|
||||
|
||||
<a id="ssostartresponse"></a>
|
||||
|
||||
## SsoStartResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/sso/start`](/api-reference/auth/start-sso)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| authorization_url | string | URL to redirect user to for SSO authentication |
|
||||
| redirect_uri | string | Redirect URI after SSO completion |
|
||||
| state | string | State parameter for CSRF protection |
|
||||
|
||||
<a id="ssostatusresponse"></a>
|
||||
|
||||
## SsoStatusResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /auth/sso/status`](/api-reference/auth/get-sso-status)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| display_name | ?string | Display name of the SSO provider |
|
||||
| enabled | boolean | Whether SSO is enabled for this instance |
|
||||
| enforced | boolean | Whether SSO is required for all users |
|
||||
| redirect_uri | string | OAuth redirect URI for SSO |
|
||||
|
||||
<a id="usernamesuggestionsrequest"></a>
|
||||
|
||||
## UsernameSuggestionsRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/username-suggestions`](/api-reference/auth/get-username-suggestions)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| global_name | string | Display name to generate username suggestions from |
|
||||
|
||||
<a id="usernamesuggestionsresponse"></a>
|
||||
|
||||
## UsernameSuggestionsResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/username-suggestions`](/api-reference/auth/get-username-suggestions)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| suggestions | string[] | List of suggested usernames |
|
||||
|
||||
<a id="verifyemailrequest"></a>
|
||||
|
||||
## VerifyEmailRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/verify`](/api-reference/auth/verify-email)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| token | string | Email verification token from email |
|
||||
|
||||
<a id="webauthnauthenticaterequest"></a>
|
||||
|
||||
## WebAuthnAuthenticateRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/webauthn/authenticate`](/api-reference/auth/authenticate-with-webauthn)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| challenge | string | The challenge string from authentication options |
|
||||
| response | JSON value | WebAuthn authentication response |
|
||||
|
||||
<a id="webauthnauthenticationoptionsresponse"></a>
|
||||
|
||||
## WebAuthnAuthenticationOptionsResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/login/mfa/webauthn/authentication-options`](/api-reference/auth/get-webauthn-mfa-options)
|
||||
- [`POST /auth/webauthn/authentication-options`](/api-reference/auth/get-webauthn-authentication-options)
|
||||
|
||||
Type: JSON value
|
||||
|
||||
<a id="webauthncredentialresponse"></a>
|
||||
|
||||
## WebAuthnCredentialResponse
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| created_at | string | When the credential was registered |
|
||||
| id | [SnowflakeType](#snowflaketype) | The credential ID |
|
||||
| last_used_at | ?string | When the credential was last used |
|
||||
| name | string | User-assigned name for the credential |
|
||||
|
||||
<a id="webauthnmfarequest"></a>
|
||||
|
||||
## WebAuthnMfaRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /auth/login/mfa/webauthn`](/api-reference/auth/login-with-webauthn-mfa)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| challenge | string | The challenge string from authentication options |
|
||||
| response | JSON value | WebAuthn authentication response |
|
||||
| ticket | string | The MFA ticket from the login response |
|
||||
|
||||
44
fluxer_docs/resources/billing.mdx
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: 'Billing'
|
||||
description: 'Billing object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="createcheckoutsessionrequest"></a>
|
||||
|
||||
## CreateCheckoutSessionRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /stripe/checkout/gift`](/api-reference/billing/create-gift-checkout-session)
|
||||
- [`POST /stripe/checkout/subscription`](/api-reference/billing/create-checkout-session)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| price_id | [SnowflakeType](#snowflaketype) | The Stripe price ID for the subscription plan |
|
||||
|
||||
<a id="urlresponse"></a>
|
||||
|
||||
## UrlResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /premium/customer-portal`](/api-reference/premium/create-customer-portal)
|
||||
- [`POST /stripe/checkout/gift`](/api-reference/billing/create-gift-checkout-session)
|
||||
- [`POST /stripe/checkout/subscription`](/api-reference/billing/create-checkout-session)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| url | string | The URL to redirect to |
|
||||
|
||||
<a id="webhookreceivedresponse"></a>
|
||||
|
||||
## WebhookReceivedResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /stripe/webhook`](/api-reference/billing/process-stripe-webhook)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| received | boolean | Whether the webhook was successfully received |
|
||||
|
||||
1108
fluxer_docs/resources/channels.mdx
Normal file
644
fluxer_docs/resources/common.mdx
Normal file
@@ -0,0 +1,644 @@
|
||||
---
|
||||
title: 'Common'
|
||||
description: 'Common object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="base64imagetype"></a>
|
||||
|
||||
## Base64ImageType
|
||||
|
||||
Base64-encoded image data
|
||||
|
||||
Type: string (byte)
|
||||
|
||||
<a id="blueskyauthorizerequest"></a>
|
||||
|
||||
## BlueskyAuthorizeRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /users/@me/connections/bluesky/authorize`](/api-reference/connections/start-bluesky-oauth-flow)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| handle | string | The Bluesky handle to connect (e.g. alice.bsky.social) |
|
||||
|
||||
<a id="blueskyauthorizeresponse"></a>
|
||||
|
||||
## BlueskyAuthorizeResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /users/@me/connections/bluesky/authorize`](/api-reference/connections/start-bluesky-oauth-flow)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| authorize_url | string | The URL to redirect the user to for Bluesky authorisation |
|
||||
|
||||
<a id="connectionlistresponse"></a>
|
||||
|
||||
## ConnectionListResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /users/@me/connections`](/api-reference/connections/list-user-connections)
|
||||
|
||||
Type: [ConnectionResponse](#connectionresponse)[]
|
||||
|
||||
<a id="connectionresponse"></a>
|
||||
|
||||
## ConnectionResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /users/@me/connections/{type}/{connection_id}/verify`](/api-reference/connections/verify-connection)
|
||||
- [`POST /users/@me/connections/verify`](/api-reference/connections/verify-and-create-connection)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier for this connection |
|
||||
| name | string | The display name of the connection (handle or domain) |
|
||||
| sort_order | integer (int32) | The display order of this connection |
|
||||
| type | enum<`bsky`, `domain`> | The type of connection |
|
||||
| verified | boolean | Whether the connection has been verified |
|
||||
| visibility_flags | integer (int32) | Bitfield controlling who can see this connection |
|
||||
|
||||
<a id="connectionverificationresponse"></a>
|
||||
|
||||
## ConnectionVerificationResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /users/@me/connections`](/api-reference/connections/initiate-connection)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| id | [SnowflakeType](#snowflaketype) | The connection identifier (handle or domain) |
|
||||
| initiation_token | string | Signed token the client sends back at verify time |
|
||||
| instructions | string | Human-readable instructions for completing verification |
|
||||
| token | string | The verification token to place in DNS or profile |
|
||||
| type | enum<`bsky`, `domain`> | The type of connection being verified |
|
||||
|
||||
<a id="createconnectionrequest"></a>
|
||||
|
||||
## CreateConnectionRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /users/@me/connections`](/api-reference/connections/initiate-connection)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| identifier | [SnowflakeType](#snowflaketype) | The connection identifier (handle or domain) |
|
||||
| type | enum<`bsky`, `domain`> | The type of connection to create |
|
||||
| visibility_flags? | [Int32Type](#int32type) | |
|
||||
|
||||
<a id="discoveryapplicationpatchrequest"></a>
|
||||
|
||||
## DiscoveryApplicationPatchRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`PATCH /guilds/{guild_id}/discovery`](/api-reference/discovery/edit-discovery-application)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| category_id? | integer (int32) | Updated discovery category ID |
|
||||
| description? | string | Updated description for discovery listing |
|
||||
|
||||
<a id="discoveryapplicationrequest"></a>
|
||||
|
||||
## DiscoveryApplicationRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /guilds/{guild_id}/discovery`](/api-reference/discovery/apply-for-guild-discovery)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| category_id | integer (int32) | Discovery category ID |
|
||||
| description | string | Description for discovery listing |
|
||||
|
||||
<a id="discoverycategorylistresponse"></a>
|
||||
|
||||
## DiscoveryCategoryListResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /discovery/categories`](/api-reference/discovery/list-discovery-categories)
|
||||
|
||||
Type: [DiscoveryCategoryResponse](#discoverycategoryresponse)[]
|
||||
|
||||
<a id="discoverycategoryresponse"></a>
|
||||
|
||||
## DiscoveryCategoryResponse
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| id | number | Category ID |
|
||||
| name | string | Category display name |
|
||||
|
||||
<a id="discoveryguildlistresponse"></a>
|
||||
|
||||
## DiscoveryGuildListResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /discovery/guilds`](/api-reference/discovery/search-discoverable-guilds)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| guilds | [DiscoveryGuildResponse](#discoveryguildresponse)[] | Discovery guild results |
|
||||
| total | number | Total number of matching guilds |
|
||||
|
||||
<a id="discoveryguildresponse"></a>
|
||||
|
||||
## DiscoveryGuildResponse
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| category_id | number | Discovery category ID |
|
||||
| description? | ?string | Discovery description |
|
||||
| features | string[] | Guild feature flags |
|
||||
| icon? | ?string | Guild icon hash |
|
||||
| id | [SnowflakeType](#snowflaketype) | Guild ID |
|
||||
| member_count | number | Approximate member count |
|
||||
| name | string | Guild name |
|
||||
| online_count | number | Approximate online member count |
|
||||
| verification_level | number | Verification level |
|
||||
|
||||
<a id="donationcheckoutrequest"></a>
|
||||
|
||||
## DonationCheckoutRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /donations/checkout`](/api-reference/donations/create-donation-checkout-session)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| amount_cents | integer (int32) | Donation amount in cents (500-100000) |
|
||||
| currency | [DonationCheckoutRequestCurrency](#donationcheckoutrequestcurrency) | Currency for the donation |
|
||||
| email | string (email) | Donor email address |
|
||||
| interval | ?[DonationCheckoutRequestInterval](#donationcheckoutrequestinterval) | Billing interval (null for one-time donation) |
|
||||
|
||||
<a id="donationcheckoutresponse"></a>
|
||||
|
||||
## DonationCheckoutResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /donations/checkout`](/api-reference/donations/create-donation-checkout-session)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| url | string (uri) | Stripe checkout URL to redirect the user to |
|
||||
|
||||
<a id="donationrequestlinkrequest"></a>
|
||||
|
||||
## DonationRequestLinkRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /donations/request-link`](/api-reference/donations/request-donation-management-link)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| email | string (email) | Email address to send the magic link to |
|
||||
|
||||
<a id="emailtype"></a>
|
||||
|
||||
## EmailType
|
||||
|
||||
Type: string (email)
|
||||
|
||||
<a id="int64stringtype"></a>
|
||||
|
||||
## Int64StringType
|
||||
|
||||
Type: string (int64)
|
||||
|
||||
<a id="int64type"></a>
|
||||
|
||||
## Int64Type
|
||||
|
||||
Type: string (int64)
|
||||
|
||||
<a id="ipbanlistentryschema"></a>
|
||||
|
||||
## IpBanListEntrySchema
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| ip | string | Banned IPv4/IPv6 address or CIDR range |
|
||||
| reverse_dns | ?string | Reverse DNS hostname for the IP, if available |
|
||||
|
||||
<a id="passwordtype"></a>
|
||||
|
||||
## PasswordType
|
||||
|
||||
Type: string
|
||||
|
||||
<a id="phonenumbertype"></a>
|
||||
|
||||
## PhoneNumberType
|
||||
|
||||
Type: string
|
||||
|
||||
<a id="renderspoilers"></a>
|
||||
|
||||
## RenderSpoilers
|
||||
|
||||
Spoiler rendering preference
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `0` | Always reveal spoiler content |
|
||||
| `1` | Reveal spoiler content on click |
|
||||
| `2` | Reveal spoiler content if moderator |
|
||||
|
||||
<a id="reorderconnectionsrequest"></a>
|
||||
|
||||
## ReorderConnectionsRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`PATCH /users/@me/connections/reorder`](/api-reference/connections/reorder-connections)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| connection_ids | [SnowflakeType](#snowflaketype)[] | Ordered list of connection IDs defining the new display order |
|
||||
|
||||
<a id="tenorcategorytagresponse"></a>
|
||||
|
||||
## TenorCategoryTagResponse
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| name | string | The category search term |
|
||||
| proxy_src | string | Proxied URL to the category preview image |
|
||||
| src | string | URL to the category preview image |
|
||||
|
||||
<a id="tenorfeaturedresponse"></a>
|
||||
|
||||
## TenorFeaturedResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /tenor/featured`](/api-reference/tenor/get-featured-tenor-gifs)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| categories | [TenorCategoryTagResponse](#tenorcategorytagresponse)[] | Array of GIF categories |
|
||||
| gifs | [TenorGifResponse](#tenorgifresponse)[] | Array of featured GIFs |
|
||||
|
||||
<a id="tenorgifresponse"></a>
|
||||
|
||||
## TenorGifResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /tenor/search`](/api-reference/tenor/search-tenor-gifs)
|
||||
- [`GET /tenor/trending-gifs`](/api-reference/tenor/get-trending-tenor-gifs)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| height | integer (int32) | Height of the GIF in pixels |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique Tenor result id |
|
||||
| proxy_src | string | Proxied URL to the GIF media file |
|
||||
| src | string | Direct URL to the GIF media file |
|
||||
| title | string | The title/description of the GIF |
|
||||
| url | string | The Tenor page URL for the GIF |
|
||||
| width | integer (int32) | Width of the GIF in pixels |
|
||||
|
||||
<a id="tenorregistersharerequest"></a>
|
||||
|
||||
## TenorRegisterShareRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /tenor/register-share`](/api-reference/tenor/register-tenor-gif-share)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| id | [SnowflakeType](#snowflaketype) | The Tenor result id |
|
||||
| locale? | [Locale](#locale) | |
|
||||
| q? | ?string | The search query used to find the GIF |
|
||||
|
||||
<a id="timeformattypes"></a>
|
||||
|
||||
## TimeFormatTypes
|
||||
|
||||
Time format preference
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `0` | Automatically detect time format based on locale |
|
||||
| `1` | Use 12-hour time format (AM/PM) |
|
||||
| `2` | Use 24-hour time format |
|
||||
|
||||
<a id="unsignedint64type"></a>
|
||||
|
||||
## UnsignedInt64Type
|
||||
|
||||
Type: string (int64)
|
||||
|
||||
<a id="updateconnectionrequest"></a>
|
||||
|
||||
## UpdateConnectionRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`PATCH /users/@me/connections/{type}/{connection_id}`](/api-reference/connections/update-connection)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| sort_order? | [Int32Type](#int32type) | |
|
||||
| visibility_flags? | [Int32Type](#int32type) | |
|
||||
|
||||
<a id="validationerrorcodeschema"></a>
|
||||
|
||||
## ValidationErrorCodeSchema
|
||||
|
||||
Error codes for field validation issues
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `ACCENT_COLOR_CHANGED_TOO_MANY_TIMES` | Accent colour has been changed too many times recently |
|
||||
| `ACCOUNT_ALREADY_VERIFIED` | Account is already verified |
|
||||
| `AFK_CHANNEL_MUST_BE_IN_GUILD` | AFK channel must be in the same guild |
|
||||
| `AFK_CHANNEL_MUST_BE_VOICE` | AFK channel must be a voice channel |
|
||||
| `ALL_CHANNELS_MUST_BELONG_TO_GUILD` | All channels must belong to the same guild |
|
||||
| `ANIMATED_AVATARS_REQUIRE_PREMIUM` | Animated avatars require premium |
|
||||
| `ANIMATED_GUILD_BANNER_REQUIRES_FEATURE` | Animated guild banners require the feature to be enabled |
|
||||
| `AT_LEAST_ONE_ENTRY_IS_REQUIRED` | At least one entry is required |
|
||||
| `AT_LEAST_ONE_RECIPIENT_REQUIRED` | At least one recipient is required |
|
||||
| `ATTACHMENT_FIELDS_REQUIRED` | Attachment fields are required |
|
||||
| `ATTACHMENT_ID_NOT_FOUND_IN_MESSAGE` | Attachment ID was not found in the message |
|
||||
| `ATTACHMENT_IDS_MUST_BE_VALID_INTEGERS` | Attachment IDs must be valid integers |
|
||||
| `ATTACHMENT_METADATA_WITHOUT_FILES` | Attachment metadata provided without files |
|
||||
| `ATTACHMENT_MUST_BE_IMAGE` | Attachment must be an image |
|
||||
| `ATTACHMENTS_METADATA_REQUIRED_WHEN_UPLOADING` | Attachments metadata is required when uploading files |
|
||||
| `ATTACHMENTS_NOT_ALLOWED_FOR_MESSAGE` | Attachments are not allowed for this message type |
|
||||
| `AVATAR_CHANGED_TOO_MANY_TIMES` | Avatar has been changed too many times recently |
|
||||
| `BANNER_CHANGED_TOO_MANY_TIMES` | Banner has been changed too many times recently |
|
||||
| `BANNERS_REQUIRE_PREMIUM` | Banners require premium |
|
||||
| `BASE64_LENGTH_INVALID` | Invalid base64 length |
|
||||
| `BIO_CHANGED_TOO_MANY_TIMES` | Bio has been changed too many times recently |
|
||||
| `BUCKET_IS_REQUIRED` | Bucket is required |
|
||||
| `CANNOT_ADD_YOURSELF_TO_GROUP_DM` | Cannot add yourself to a group DM |
|
||||
| `CANNOT_DELETE_MORE_THAN_100_MESSAGES` | Cannot delete more than 100 messages at once |
|
||||
| `CANNOT_DM_YOURSELF` | Cannot send a direct message to yourself |
|
||||
| `CANNOT_EDIT_ATTACHMENT_METADATA` | Users with MANAGE_MESSAGES can only edit attachment descriptions, not other metadata |
|
||||
| `CANNOT_LEAVE_GUILD_AS_OWNER` | Cannot leave guild as the owner |
|
||||
| `CANNOT_POSITION_CHANNEL_RELATIVE_TO_ITSELF` | Cannot position channel relative to itself |
|
||||
| `CANNOT_PRELOAD_MORE_THAN_100_CHANNELS` | Cannot preload more than 100 channels |
|
||||
| `CANNOT_REFERENCE_ATTACHMENTS_WITHOUT_ATTACHMENTS` | Cannot reference attachments without providing attachments |
|
||||
| `CANNOT_REORDER_EVERYONE_ROLE` | Cannot reorder the everyone role |
|
||||
| `CANNOT_REPLY_TO_SYSTEM_MESSAGE` | Cannot reply to a system message |
|
||||
| `CANNOT_SET_HOIST_FOR_EVERYONE_ROLE` | Cannot set hoist for the everyone role |
|
||||
| `CANNOT_SPECIFY_BOTH_BEFORE_AND_AFTER` | Cannot specify both before and after parameters |
|
||||
| `CANNOT_USE_SAME_ROLE_AS_PRECEDING` | Cannot use the same role as preceding |
|
||||
| `CATEGORIES_CANNOT_HAVE_PARENT_CHANNEL` | Categories cannot have a parent channel |
|
||||
| `CATEGORIES_CANNOT_HAVE_PARENTS` | Categories cannot have parents |
|
||||
| `CHANGING_DISCRIMINATOR_REQUIRES_PREMIUM` | Changing discriminator requires premium |
|
||||
| `CHANNEL_DOES_NOT_EXIST` | Channel does not exist |
|
||||
| `CHANNEL_ID_IS_REQUIRED` | Channel ID is required |
|
||||
| `CHANNEL_MUST_BE_DM_OR_GROUP_DM` | Channel must be a DM or group DM |
|
||||
| `CHANNEL_MUST_BE_VOICE` | Channel must be a voice channel |
|
||||
| `CHANNEL_NAME_EMPTY_AFTER_NORMALIZATION` | Channel name is empty after normalisation |
|
||||
| `CHANNEL_NOT_FOUND` | Channel was not found |
|
||||
| `COLOR_VALUE_TOO_HIGH` | Colour value is too high |
|
||||
| `COLOR_VALUE_TOO_LOW` | Colour value is too low |
|
||||
| `CONTENT_EXCEEDS_MAX_LENGTH` | Content exceeds maximum length |
|
||||
| `CONTEXT_CHANNEL_OR_GUILD_ID_REQUIRED` | Context channel or guild ID is required |
|
||||
| `CUSTOM_EMOJI_NOT_FOUND` | Custom emoji was not found |
|
||||
| `CUSTOM_EMOJIS_REQUIRE_PREMIUM_OUTSIDE_SOURCE` | Custom emojis require premium when used outside their source |
|
||||
| `CUSTOM_STICKER_NOT_FOUND` | Custom sticker was not found |
|
||||
| `CUSTOM_STICKERS_IN_DMS_REQUIRE_PREMIUM` | Custom stickers in DMs require premium |
|
||||
| `CUSTOM_STICKERS_REQUIRE_PREMIUM_OUTSIDE_SOURCE` | Custom stickers require premium when used outside their source |
|
||||
| `DISCRIMINATOR_INVALID_FORMAT` | Discriminator has an invalid format |
|
||||
| `DISCRIMINATOR_OUT_OF_RANGE` | Discriminator is out of valid range |
|
||||
| `DUPLICATE_ATTACHMENT_IDS_NOT_ALLOWED` | Duplicate attachment IDs are not allowed |
|
||||
| `DUPLICATE_FILE_INDEX` | Duplicate file index |
|
||||
| `DUPLICATE_RECIPIENTS_NOT_ALLOWED` | Duplicate recipients are not allowed |
|
||||
| `VOICE_MESSAGES_ATTACHMENT_MUST_BE_AUDIO` | Voice message attachment must be audio |
|
||||
| `VOICE_MESSAGES_ATTACHMENT_WAVEFORM_REQUIRED` | Voice message attachment waveform is required |
|
||||
| `VOICE_MESSAGES_ATTACHMENT_DURATION_REQUIRED` | Voice message attachment duration is required |
|
||||
| `VOICE_MESSAGES_CANNOT_HAVE_CONTENT` | Voice messages cannot have content |
|
||||
| `VOICE_MESSAGES_CANNOT_HAVE_EMBEDS` | Voice messages cannot have embeds |
|
||||
| `VOICE_MESSAGES_CANNOT_HAVE_FAVORITE_MEMES` | Voice messages cannot have favourite memes |
|
||||
| `VOICE_MESSAGES_CANNOT_HAVE_STICKERS` | Voice messages cannot have stickers |
|
||||
| `VOICE_MESSAGES_DURATION_EXCEEDS_LIMIT` | Voice message duration exceeds limit |
|
||||
| `VOICE_MESSAGES_REQUIRE_SINGLE_ATTACHMENT` | Voice messages require a single attachment |
|
||||
| `EMAIL_ALREADY_IN_USE` | Email address is already in use |
|
||||
| `EMAIL_IS_REQUIRED` | Email address is required |
|
||||
| `EMAIL_LENGTH_INVALID` | Email address length is invalid |
|
||||
| `EMAIL_MUST_BE_CHANGED_VIA_TOKEN` | Email must be changed via verification token |
|
||||
| `EMAIL_TOKEN_EXPIRED` | Email verification token has expired |
|
||||
| `EMBED_INDEX_OUT_OF_BOUNDS` | Embed index is out of bounds |
|
||||
| `EMBED_SPLASH_REQUIRES_FEATURE` | Embed splash requires the feature to be enabled |
|
||||
| `EMBEDS_EXCEED_MAX_CHARACTERS` | Embeds exceed maximum character count |
|
||||
| `EMOJI_REQUIRES_GUILD_OR_PACK_ACCESS` | Emoji requires guild or pack access |
|
||||
| `FAILED_TO_PARSE_MULTIPART_FORM_DATA` | Failed to parse multipart form data |
|
||||
| `FAILED_TO_PARSE_MULTIPART_PAYLOAD` | Failed to parse multipart payload |
|
||||
| `FAILED_TO_UPLOAD_IMAGE` | Failed to upload image |
|
||||
| `FAVORITE_MEME_NAME_REQUIRED` | Favourite meme name is required |
|
||||
| `FAVORITE_MEME_NOT_FOUND` | Favourite meme was not found |
|
||||
| `FILE_INDEX_EXCEEDS_MAXIMUM` | File index exceeds maximum |
|
||||
| `FILE_NOT_FOUND_FOR_SCANNING` | File not found for scanning |
|
||||
| `FILE_NOT_FOUND` | File was not found |
|
||||
| `FILENAME_EMPTY_AFTER_NORMALIZATION` | Filename is empty after normalisation |
|
||||
| `FILENAME_INVALID_CHARACTERS` | Filename contains invalid characters |
|
||||
| `FILENAME_LENGTH_INVALID` | Filename length is invalid |
|
||||
| `FILENAME_MISMATCH_FOR_ATTACHMENT` | Filename mismatch for attachment |
|
||||
| `FORWARD_MESSAGES_CANNOT_CONTAIN_CONTENT` | Forward messages cannot contain content |
|
||||
| `FORWARD_REFERENCE_REQUIRES_CHANNEL_AND_MESSAGE` | Forward reference requires channel and message |
|
||||
| `GLOBAL_NAME_CANNOT_CONTAIN_RESERVED_TERMS` | Display name cannot contain reserved terms |
|
||||
| `GLOBAL_NAME_LENGTH_INVALID` | Display name length is invalid |
|
||||
| `GLOBAL_NAME_RESERVED_VALUE` | Display name is a reserved value |
|
||||
| `GUILD_BANNER_REQUIRES_FEATURE` | Guild banner requires the feature to be enabled |
|
||||
| `GUILD_ID_MUST_MATCH_REFERENCED_MESSAGE` | Guild ID must match referenced message |
|
||||
| `IMAGE_SIZE_EXCEEDS_LIMIT` | Image size exceeds limit |
|
||||
| `INTEGER_OUT_OF_INT64_RANGE` | Integer is out of 64-bit range |
|
||||
| `SNOWFLAKE_OUT_OF_RANGE` | Snowflake is out of valid range |
|
||||
| `INVALID_AUDIT_LOG_REASON` | Invalid audit log reason |
|
||||
| `INVALID_BASE64_FORMAT` | Invalid base64 format |
|
||||
| `INVALID_CHANNEL_ID` | Invalid channel ID |
|
||||
| `INVALID_CHANNEL` | Invalid channel |
|
||||
| `INVALID_CODE` | Invalid code |
|
||||
| `INVALID_CURRENT_PASSWORD` | Invalid current password |
|
||||
| `INVALID_DATE_OF_BIRTH_FORMAT` | Invalid date of birth format |
|
||||
| `INVALID_DATETIME_FOR_SCHEDULED_SEND` | Invalid datetime for scheduled send |
|
||||
| `INVALID_EMAIL_ADDRESS` | Invalid email address |
|
||||
| `INVALID_EMAIL_FORMAT` | Invalid email format |
|
||||
| `INVALID_EMAIL_LOCAL_PART` | Invalid email local part |
|
||||
| `INVALID_EMAIL_OR_PASSWORD` | Invalid email or password |
|
||||
| `INVALID_EMAIL_TOKEN` | Invalid email verification token |
|
||||
| `INVALID_FILE_FIELD_NAME` | Invalid file field name |
|
||||
| `INVALID_FORMAT` | Invalid format |
|
||||
| `INVALID_IMAGE_DATA` | Invalid image data |
|
||||
| `INVALID_IMAGE_FORMAT` | Invalid image format |
|
||||
| `INVALID_INTEGER_FORMAT` | Invalid integer format |
|
||||
| `INVALID_SNOWFLAKE_FORMAT` | Invalid snowflake format |
|
||||
| `INVALID_ISO_TIMESTAMP` | Invalid ISO timestamp |
|
||||
| `INVALID_JOB_ID` | Invalid job ID |
|
||||
| `INVALID_JSON_IN_PAYLOAD_JSON` | Invalid JSON in payload_json field |
|
||||
| `INVALID_MESSAGE_DATA` | Invalid message data |
|
||||
| `INVALID_MFA_CODE` | Invalid MFA code |
|
||||
| `INVALID_OR_EXPIRED_AUTHORIZATION_TICKET` | Invalid or expired authorisation ticket |
|
||||
| `INVALID_OR_EXPIRED_AUTHORIZATION_TOKEN` | Invalid or expired authorisation token |
|
||||
| `INVALID_OR_EXPIRED_RESET_TOKEN` | Invalid or expired password reset token |
|
||||
| `INVALID_OR_EXPIRED_REVERT_TOKEN` | Invalid or expired revert token |
|
||||
| `INVALID_OR_EXPIRED_TICKET` | Invalid or expired ticket |
|
||||
| `INVALID_OR_EXPIRED_VERIFICATION_TOKEN` | Invalid or expired verification token |
|
||||
| `INVALID_OR_RESTRICTED_RTC_REGION` | Invalid or restricted RTC region |
|
||||
| `INVALID_PARENT_CHANNEL` | Invalid parent channel |
|
||||
| `INVALID_PASSWORD` | Invalid password |
|
||||
| `INVALID_PROOF_TOKEN` | Invalid proof token |
|
||||
| `INVALID_ROLE_ID` | Invalid role ID |
|
||||
| `INVALID_RTC_REGION` | Invalid RTC region |
|
||||
| `INVALID_SCHEDULED_MESSAGE_PAYLOAD` | Invalid scheduled message payload |
|
||||
| `INVALID_SNOWFLAKE` | Invalid snowflake |
|
||||
| `INVALID_TIMEOUT_VALUE` | Invalid timeout value |
|
||||
| `INVALID_TIMEZONE_IDENTIFIER` | Invalid timezone identifier |
|
||||
| `INVALID_URL_FORMAT` | Invalid URL format |
|
||||
| `INVALID_URL_OR_ATTACHMENT_FORMAT` | Invalid URL or attachment format |
|
||||
| `INVALID_VERIFICATION_CODE` | Invalid verification code |
|
||||
| `INVITE_SPLASH_REQUIRES_FEATURE` | Invite splash requires the feature to be enabled |
|
||||
| `JOB_ID_IS_REQUIRED` | Job ID is required |
|
||||
| `JOB_IS_ALREADY_PROCESSED` | Job has already been processed |
|
||||
| `JOB_NOT_FOUND` | Job was not found |
|
||||
| `MEDIA_ALREADY_IN_FAVORITE_MEMES` | Media is already in favourite memes |
|
||||
| `MESSAGE_HISTORY_CUTOFF_BEFORE_GUILD_CREATION` | Message history cutoff cannot be before the guild was created |
|
||||
| `MESSAGE_HISTORY_CUTOFF_IN_FUTURE` | Message history cutoff cannot be in the future |
|
||||
| `MESSAGE_IDS_CANNOT_BE_EMPTY` | Message IDs cannot be empty |
|
||||
| `MESSAGES_ARRAY_REQUIRED_AND_NOT_EMPTY` | Messages array is required and cannot be empty |
|
||||
| `MESSAGES_WITH_SNAPSHOTS_CANNOT_BE_EDITED` | Messages with snapshots cannot be edited |
|
||||
| `MESSAGE_TOTAL_ATTACHMENT_SIZE_TOO_LARGE` | Total attachment size exceeds the maximum allowed |
|
||||
| `MULTIPLE_FILES_FOR_INDEX_NOT_ALLOWED` | Multiple files for the same index are not allowed |
|
||||
| `MUST_AGREE_TO_TOS_AND_PRIVACY_POLICY` | Must agree to terms of service and privacy policy |
|
||||
| `MUST_BE_MINIMUM_AGE` | Must be minimum age to use this service |
|
||||
| `MUST_ENABLE_2FA_BEFORE_REQUIRING_FOR_MODS` | Must enable 2FA before requiring it for moderators |
|
||||
| `MUST_HAVE_EMAIL_TO_CHANGE_IT` | Must have an email to change it |
|
||||
| `MUST_START_SESSION_BEFORE_SENDING` | Must start session before sending |
|
||||
| `NAME_EMPTY_AFTER_NORMALIZATION` | Name is empty after normalisation |
|
||||
| `NEW_EMAIL_MUST_BE_DIFFERENT` | New email must be different from current email |
|
||||
| `NO_FILE_FOR_ATTACHMENT_METADATA` | No file provided for attachment metadata |
|
||||
| `NO_FILE_FOR_ATTACHMENT` | No file provided for attachment |
|
||||
| `NO_METADATA_FOR_FILE` | No metadata provided for file |
|
||||
| `NO_NEW_EMAIL_REQUESTED` | No new email has been requested |
|
||||
| `NO_ORIGINAL_EMAIL_ON_RECORD` | No original email on record |
|
||||
| `NO_VALID_MEDIA_IN_MESSAGE` | No valid media in message |
|
||||
| `NOT_A_VALID_UNICODE_EMOJI` | Not a valid Unicode emoji |
|
||||
| `ORIGINAL_EMAIL_ALREADY_VERIFIED` | Original email is already verified |
|
||||
| `ORIGINAL_EMAIL_MUST_BE_VERIFIED_FIRST` | Original email must be verified first |
|
||||
| `ORIGINAL_VERIFICATION_NOT_REQUIRED` | Original verification is not required |
|
||||
| `PARENT_CHANNEL_NOT_IN_GUILD` | Parent channel is not in the guild |
|
||||
| `PARENT_MUST_BE_CATEGORY` | Parent channel must be a category |
|
||||
| `PARSE_AND_USERS_OR_ROLES_CANNOT_BE_USED_TOGETHER` | Parse and users/roles cannot be used together |
|
||||
| `PASSWORD_IS_TOO_COMMON` | Password is too common |
|
||||
| `PASSWORD_LENGTH_INVALID` | Password length is invalid |
|
||||
| `PASSWORD_NOT_SET` | Password is not set |
|
||||
| `PAYLOAD_JSON_REQUIRED_FOR_MULTIPART` | payload_json is required for multipart requests |
|
||||
| `PHONE_NUMBER_INVALID_FORMAT` | Phone number has an invalid format |
|
||||
| `PRECEDING_CHANNEL_MUST_SHARE_PARENT` | Preceding channel must share the same parent |
|
||||
| `PRECEDING_CHANNEL_NOT_IN_GUILD` | Preceding channel is not in the guild |
|
||||
| `PRECEDING_ROLE_NOT_IN_GUILD` | Preceding role is not in the guild |
|
||||
| `PREMIUM_REQUIRED_FOR_CUSTOM_EMOJI` | Premium is required for custom emoji |
|
||||
| `PRONOUNS_CHANGED_TOO_MANY_TIMES` | Pronouns have been changed too many times recently |
|
||||
| `RECIPIENT_IDS_CANNOT_BE_EMPTY` | Recipient IDs cannot be empty |
|
||||
| `RECIPIENT_IDS_MUST_BE_STRINGS` | Recipient IDs must be strings |
|
||||
| `RECIPIENT_IDS_MUST_BE_VALID_SNOWFLAKES` | Recipient IDs must be valid snowflakes |
|
||||
| `REFERENCED_ATTACHMENT_NOT_FOUND` | Referenced attachment was not found |
|
||||
| `ROWS_IS_REQUIRED` | Rows field is required |
|
||||
| `SCHEDULED_MESSAGES_MAX_30_DAYS` | Scheduled messages must be within 30 days |
|
||||
| `SCHEDULED_TIME_MUST_BE_FUTURE` | Scheduled time must be in the future |
|
||||
| `SESSION_TIMEOUT` | Session has timed out |
|
||||
| `SIZE_BYTES_MUST_BE_VALID_INTEGER` | Size in bytes must be a valid integer |
|
||||
| `STRING_LENGTH_EXACT` | String must be exactly the required length |
|
||||
| `STRING_LENGTH_INVALID` | String length is invalid |
|
||||
| `SYSTEM_CHANNEL_MUST_BE_IN_GUILD` | System channel must be in the guild |
|
||||
| `SYSTEM_CHANNEL_MUST_BE_TEXT` | System channel must be a text channel |
|
||||
| `TAG_ALREADY_TAKEN` | Tag is already taken |
|
||||
| `THIS_VANITY_URL_IS_ALREADY_TAKEN` | This vanity URL is already taken |
|
||||
| `TICKET_ALREADY_COMPLETED` | Ticket has already been completed |
|
||||
| `TIMEOUT_CANNOT_EXCEED_365_DAYS` | Timeout cannot exceed 365 days |
|
||||
| `TOO_MANY_EMBEDS` | Too many embeds |
|
||||
| `TOO_MANY_FILES` | Too many files |
|
||||
| `TOO_MANY_USERS_WITH_THIS_USERNAME` | Too many users with this username |
|
||||
| `TOO_MANY_USERS_WITH_USERNAME_TRY_DIFFERENT` | Too many users with this username, try a different one |
|
||||
| `UNCLAIMED_ACCOUNTS_CAN_ONLY_SET_EMAIL_VIA_TOKEN` | Unclaimed accounts can only set email via verification token |
|
||||
| `UNKNOWN_IMAGE_FORMAT` | Unknown image format |
|
||||
| `UNRESOLVED_ATTACHMENT_URL` | Unresolved attachment URL |
|
||||
| `UPLOADED_ATTACHMENT_NOT_FOUND` | Uploaded attachment was not found |
|
||||
| `URL_LENGTH_INVALID` | URL length is invalid |
|
||||
| `USER_DOES_NOT_HAVE_AN_EMAIL_ADDRESS` | User does not have an email address |
|
||||
| `USER_IS_NOT_BANNED` | User is not banned |
|
||||
| `USER_MUST_BE_A_BOT_TO_BE_MARKED_AS_A_SYSTEM_USER` | User must be a bot to be marked as a system user |
|
||||
| `USER_NOT_IN_CHANNEL` | User is not in the channel |
|
||||
| `USERNAME_CANNOT_CONTAIN_RESERVED_TERMS` | Username cannot contain reserved terms |
|
||||
| `USERNAME_CHANGED_TOO_MANY_TIMES` | Username has been changed too many times recently |
|
||||
| `USERNAME_INVALID_CHARACTERS` | Username contains invalid characters |
|
||||
| `USERNAME_LENGTH_INVALID` | Username length is invalid |
|
||||
| `USERNAME_RESERVED_VALUE` | Username is a reserved value |
|
||||
| `VALUE_MUST_BE_INTEGER_IN_RANGE` | Value must be an integer in the valid range |
|
||||
| `VALUE_TOO_SMALL` | Value is too small |
|
||||
| `VANITY_URL_CODE_ALREADY_TAKEN` | Vanity URL code is already taken |
|
||||
| `VANITY_URL_CODE_CANNOT_CONTAIN_FLUXER` | Vanity URL code cannot contain fluxer |
|
||||
| `VANITY_URL_CODE_LENGTH_INVALID` | Vanity URL code length is invalid |
|
||||
| `VANITY_URL_INVALID_CHARACTERS` | Vanity URL contains invalid characters |
|
||||
| `VANITY_URL_REQUIRES_FEATURE` | Vanity URL requires the feature to be enabled |
|
||||
| `VERIFICATION_CODE_EXPIRED` | Verification code has expired |
|
||||
| `VERIFICATION_CODE_NOT_ISSUED` | Verification code was not issued |
|
||||
| `VISIONARY_REQUIRED_FOR_BOT_DISCRIMINATOR` | Visionary subscription required for bot discriminator |
|
||||
| `VISIONARY_REQUIRED_FOR_DISCRIMINATOR` | Visionary subscription required for discriminator |
|
||||
| `BOT_DISCRIMINATOR_CANNOT_BE_CHANGED` | Bot discriminator cannot be changed |
|
||||
| `VOICE_CHANNELS_CANNOT_BE_ABOVE_TEXT_CHANNELS` | Voice channels cannot be positioned above text channels |
|
||||
| `WEBHOOK_NAME_LENGTH_INVALID` | Webhook name length is invalid |
|
||||
|
||||
<a id="validationerroritem"></a>
|
||||
|
||||
## ValidationErrorItem
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| code? | [ValidationErrorCodeSchema](#validationerrorcodeschema) | |
|
||||
| message | string | A human-readable description of the validation issue |
|
||||
| path | string | The field path where the validation error occurred |
|
||||
|
||||
<a id="verifyandcreateconnectionrequest"></a>
|
||||
|
||||
## VerifyAndCreateConnectionRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /users/@me/connections/verify`](/api-reference/connections/verify-and-create-connection)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| initiation_token | string | The signed initiation token returned from the create endpoint |
|
||||
| visibility_flags? | [Int32Type](#int32type) | |
|
||||
|
||||
<a id="donationcheckoutrequestcurrency"></a>
|
||||
|
||||
## DonationCheckoutRequestCurrency
|
||||
|
||||
Currency for the donation
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `usd` | - |
|
||||
| `eur` | - |
|
||||
|
||||
<a id="donationcheckoutrequestinterval"></a>
|
||||
|
||||
## DonationCheckoutRequestInterval
|
||||
|
||||
Billing interval (null for one-time donation)
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `month` | - |
|
||||
| `year` | - |
|
||||
|
||||
44
fluxer_docs/resources/gateway.mdx
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: 'Gateway'
|
||||
description: 'Gateway object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="customstatusresponse"></a>
|
||||
|
||||
## CustomStatusResponse
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| emoji_animated | boolean | Whether the status emoji is animated |
|
||||
| emoji_id? | ?[SnowflakeType](#snowflaketype) | The ID of the custom emoji used in the status |
|
||||
| emoji_name? | ?string | The name of the emoji used in the status |
|
||||
| expires_at? | ?string (date-time) | ISO8601 timestamp of when the custom status expires |
|
||||
| text? | ?string | The custom status message text |
|
||||
|
||||
<a id="gatewaybotresponse"></a>
|
||||
|
||||
## GatewayBotResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /gateway/bot`](/api-reference/gateway/get-gateway-information)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| session_start_limit | [GatewayBotResponseSessionStartLimit](#gatewaybotresponsesessionstartlimit) | Session start rate limit information |
|
||||
| shards | integer (int53) | Recommended number of shards to use when connecting |
|
||||
| url | string | WebSocket URL to connect to the gateway |
|
||||
|
||||
<a id="gatewaybotresponsesessionstartlimit"></a>
|
||||
|
||||
## GatewayBotResponseSessionStartLimit
|
||||
|
||||
Session start rate limit information
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| max_concurrency | integer (int53) | Maximum number of concurrent IDENTIFY requests |
|
||||
| remaining | integer (int53) | Remaining number of session starts |
|
||||
| reset_after | integer (int53) | Milliseconds until the limit resets |
|
||||
| total | integer (int53) | Total number of session starts allowed |
|
||||
|
||||
20
fluxer_docs/resources/gifts.mdx
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
title: 'Gifts'
|
||||
description: 'Gifts object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="giftcoderesponse"></a>
|
||||
|
||||
## GiftCodeResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /gifts/{code}`](/api-reference/gifts/get-gift-code)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| code | string | The unique gift code string |
|
||||
| created_by? | ?[UserPartialResponse](#userpartialresponse) | The user who created the gift code |
|
||||
| duration_months | integer (int53) | Duration of the subscription gift in months |
|
||||
| redeemed | boolean | Whether the gift code has been redeemed |
|
||||
|
||||
1264
fluxer_docs/resources/guilds.mdx
Normal file
157
fluxer_docs/resources/instance.mdx
Normal file
@@ -0,0 +1,157 @@
|
||||
---
|
||||
title: 'Instance'
|
||||
description: 'Instance object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="wellknownfluxerresponse"></a>
|
||||
|
||||
## WellKnownFluxerResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /.well-known/fluxer`](/api-reference/instance/get-instance-discovery-document)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| api_code_version | integer (int53) | Version of the API server code |
|
||||
| app_public | [WellKnownFluxerResponseAppPublic](#wellknownfluxerresponseapppublic) | Public application configuration for client-side features |
|
||||
| captcha | [WellKnownFluxerResponseCaptcha](#wellknownfluxerresponsecaptcha) | Captcha configuration |
|
||||
| endpoints | [WellKnownFluxerResponseEndpoints](#wellknownfluxerresponseendpoints) | Endpoint URLs for various services |
|
||||
| features | [WellKnownFluxerResponseFeatures](#wellknownfluxerresponsefeatures) | Feature flags for this instance |
|
||||
| federation? | [WellKnownFluxerResponseFederation](#wellknownfluxerresponsefederation) | Federation configuration |
|
||||
| gif | [WellKnownFluxerResponseGif](#wellknownfluxerresponsegif) | GIF provider configuration for clients |
|
||||
| limits | [WellKnownFluxerResponseLimits](#wellknownfluxerresponselimits) | Limit configuration with rules and trait definitions |
|
||||
| oauth2? | [WellKnownFluxerResponseOauth2](#wellknownfluxerresponseoauth2) | OAuth2 endpoints for federation |
|
||||
| public_key? | [WellKnownFluxerResponsePublicKey](#wellknownfluxerresponsepublickey) | Public key for E2E encryption |
|
||||
| push | [WellKnownFluxerResponsePush](#wellknownfluxerresponsepush) | Push notification configuration |
|
||||
| sso | [SsoStatusResponse](#ssostatusresponse) | Single sign-on configuration |
|
||||
|
||||
<a id="wellknownfluxerresponseapppublic"></a>
|
||||
|
||||
## WellKnownFluxerResponseAppPublic
|
||||
|
||||
Public application configuration for client-side features
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| sentry_dsn | string | Sentry DSN for client-side error reporting |
|
||||
| sentry_project_id | [SnowflakeType](#snowflaketype) | Sentry project ID |
|
||||
| sentry_proxy_path | string | Proxy path for Sentry requests |
|
||||
| sentry_public_key | string | Sentry public key |
|
||||
| sentry_report_host | string | Host for Sentry error reports |
|
||||
|
||||
<a id="wellknownfluxerresponsecaptcha"></a>
|
||||
|
||||
## WellKnownFluxerResponseCaptcha
|
||||
|
||||
Captcha configuration
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| hcaptcha_site_key | ?string | hCaptcha site key if using hCaptcha |
|
||||
| provider | string | Captcha provider name (hcaptcha, turnstile, none) |
|
||||
| turnstile_site_key | ?string | Cloudflare Turnstile site key if using Turnstile |
|
||||
|
||||
<a id="wellknownfluxerresponseendpoints"></a>
|
||||
|
||||
## WellKnownFluxerResponseEndpoints
|
||||
|
||||
Endpoint URLs for various services
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| admin | string | Base URL for the admin panel |
|
||||
| api | string | Base URL for authenticated API requests |
|
||||
| api_client | string | Base URL for client API requests |
|
||||
| api_public | string | Base URL for public API requests |
|
||||
| gateway | string | WebSocket URL for the gateway |
|
||||
| gift | string | Base URL for gift links |
|
||||
| invite | string | Base URL for invite links |
|
||||
| marketing | string | Base URL for the marketing website |
|
||||
| media | string | Base URL for the media proxy |
|
||||
| static_cdn | string | Base URL for static assets (avatars, emojis, etc.) |
|
||||
| webapp | string | Base URL for the web application |
|
||||
|
||||
<a id="wellknownfluxerresponsefeatures"></a>
|
||||
|
||||
## WellKnownFluxerResponseFeatures
|
||||
|
||||
Feature flags for this instance
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| manual_review_enabled | boolean | Whether manual review mode is enabled for registrations |
|
||||
| self_hosted | boolean | Whether this is a self-hosted instance |
|
||||
| sms_mfa_enabled | boolean | Whether SMS-based MFA is available |
|
||||
| stripe_enabled | boolean | Whether Stripe payments are enabled |
|
||||
| voice_enabled | boolean | Whether voice/video calling is enabled |
|
||||
|
||||
<a id="wellknownfluxerresponsefederation"></a>
|
||||
|
||||
## WellKnownFluxerResponseFederation
|
||||
|
||||
Federation configuration
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| enabled | boolean | Whether federation is enabled on this instance |
|
||||
| version | integer (int53) | Federation protocol version |
|
||||
|
||||
<a id="wellknownfluxerresponsegif"></a>
|
||||
|
||||
## WellKnownFluxerResponseGif
|
||||
|
||||
GIF provider configuration for clients
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| provider | [WellKnownFluxerResponseGifProvider](#wellknownfluxerresponsegifprovider) | GIF provider used by the instance GIF picker |
|
||||
|
||||
<a id="wellknownfluxerresponselimits"></a>
|
||||
|
||||
## WellKnownFluxerResponseLimits
|
||||
|
||||
Limit configuration with rules and trait definitions
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| defaultsHash | string | Hash of the default limit values for cache invalidation |
|
||||
| rules | [LimitRuleResponse](#limitruleresponse)[] | Array of limit rules to evaluate |
|
||||
| traitDefinitions | string[] | Available trait definitions (e.g., "premium") |
|
||||
| version | enum<`2`> | Wire format version |
|
||||
|
||||
<a id="wellknownfluxerresponseoauth2"></a>
|
||||
|
||||
## WellKnownFluxerResponseOauth2
|
||||
|
||||
OAuth2 endpoints for federation
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| authorization_endpoint | string | OAuth2 authorization endpoint URL |
|
||||
| scopes_supported | string[] | Supported OAuth2 scopes |
|
||||
| token_endpoint | string | OAuth2 token endpoint URL |
|
||||
| userinfo_endpoint | string | OAuth2 userinfo endpoint URL |
|
||||
|
||||
<a id="wellknownfluxerresponsepublickey"></a>
|
||||
|
||||
## WellKnownFluxerResponsePublicKey
|
||||
|
||||
Public key for E2E encryption
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| algorithm | enum<`x25519`> | Key algorithm |
|
||||
| id | [SnowflakeType](#snowflaketype) | Key identifier |
|
||||
| public_key_base64 | string | Base64-encoded public key |
|
||||
|
||||
<a id="wellknownfluxerresponsepush"></a>
|
||||
|
||||
## WellKnownFluxerResponsePush
|
||||
|
||||
Push notification configuration
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| public_vapid_key | ?string | VAPID public key for web push notifications |
|
||||
|
||||
59
fluxer_docs/resources/invites.mdx
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: 'Invites'
|
||||
description: 'Invites object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="channelinvitecreaterequest"></a>
|
||||
|
||||
## ChannelInviteCreateRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /channels/{channel_id}/invites`](/api-reference/invites/create-channel-invite)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| max_age? | ?integer (int32) | Duration in seconds before the invite expires (0 for never) |
|
||||
| max_uses? | ?integer (int32) | Maximum number of times this invite can be used (0 for unlimited) |
|
||||
| temporary? | ?boolean | Whether members that joined via this invite should be kicked after disconnecting |
|
||||
| unique? | ?boolean | Whether to create a new unique invite or reuse an existing one |
|
||||
|
||||
<a id="invitemetadataresponseschema"></a>
|
||||
|
||||
## InviteMetadataResponseSchema
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /channels/{channel_id}/invites`](/api-reference/invites/list-channel-invites)
|
||||
- [`GET /guilds/{guild_id}/invites`](/api-reference/invites/list-guild-invites)
|
||||
- [`GET /packs/{pack_id}/invites`](/api-reference/invites/list-pack-invites)
|
||||
- [`POST /channels/{channel_id}/invites`](/api-reference/invites/create-channel-invite)
|
||||
- [`POST /packs/{pack_id}/invites`](/api-reference/invites/create-pack-invite)
|
||||
|
||||
Type: [GuildInviteMetadataResponse](#guildinvitemetadataresponse) \| [GroupDmInviteMetadataResponse](#groupdminvitemetadataresponse) \| [PackInviteMetadataResponse](#packinvitemetadataresponse)
|
||||
|
||||
<a id="inviteresponseschema"></a>
|
||||
|
||||
## InviteResponseSchema
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /invites/{invite_code}`](/api-reference/invites/get-invite-information)
|
||||
- [`POST /invites/{invite_code}`](/api-reference/invites/accept-invite)
|
||||
|
||||
Type: [GuildInviteResponse](#guildinviteresponse) \| [GroupDmInviteResponse](#groupdminviteresponse) \| [PackInviteResponse](#packinviteresponse)
|
||||
|
||||
<a id="packinvitecreaterequest"></a>
|
||||
|
||||
## PackInviteCreateRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /packs/{pack_id}/invites`](/api-reference/invites/create-pack-invite)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| max_age? | ?integer (int32) | Duration in seconds before the invite expires (0 for never) |
|
||||
| max_uses? | ?integer (int32) | Maximum number of times this invite can be used (0 for unlimited) |
|
||||
| unique? | ?boolean | Whether to create a new unique invite or reuse an existing one |
|
||||
|
||||
115
fluxer_docs/resources/klipy.mdx
Normal file
@@ -0,0 +1,115 @@
|
||||
---
|
||||
title: 'Klipy'
|
||||
description: 'Klipy object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="klipycategorytagresponse"></a>
|
||||
|
||||
## KlipyCategoryTagResponse
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| name | string | The category/tag name |
|
||||
| proxy_src | string | Proxied URL to the category preview image |
|
||||
| src | string | URL to the category preview image |
|
||||
|
||||
<a id="klipyfeaturedresponse"></a>
|
||||
|
||||
## KlipyFeaturedResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /klipy/featured`](/api-reference/klipy/get-featured-klipy-gifs)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| categories | [KlipyCategoryTagResponse](#klipycategorytagresponse)[] | Array of clip categories |
|
||||
| gifs | [KlipyGifResponse](#klipygifresponse)[] | Array of featured/trending clips |
|
||||
|
||||
<a id="klipygifresponse"></a>
|
||||
|
||||
## KlipyGifResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /klipy/search`](/api-reference/klipy/search-klipy-gifs)
|
||||
- [`GET /klipy/trending-gifs`](/api-reference/klipy/get-trending-klipy-gifs)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| height | integer (int32) | Height of the clip in pixels |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique Klipy clip slug |
|
||||
| proxy_src | string | Proxied URL to the clip media file |
|
||||
| src | string | Direct URL to the clip media file |
|
||||
| title | string | The title/description of the clip |
|
||||
| url | string | The Klipy page URL for the clip |
|
||||
| width | integer (int32) | Width of the clip in pixels |
|
||||
|
||||
<a id="klipyregistersharerequest"></a>
|
||||
|
||||
## KlipyRegisterShareRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /klipy/register-share`](/api-reference/klipy/register-klipy-gif-share)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| id | [SnowflakeType](#snowflaketype) | The Klipy clip slug |
|
||||
| locale? | [Locale](#locale) | |
|
||||
| q? | ?string | The search query used to find the clip |
|
||||
|
||||
<a id="locale"></a>
|
||||
|
||||
## Locale
|
||||
|
||||
The locale code for the user interface language
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /klipy/featured`](/api-reference/klipy/get-featured-klipy-gifs)
|
||||
- [`GET /klipy/search`](/api-reference/klipy/search-klipy-gifs)
|
||||
- [`GET /klipy/suggest`](/api-reference/klipy/get-klipy-search-suggestions)
|
||||
- [`GET /klipy/trending-gifs`](/api-reference/klipy/get-trending-klipy-gifs)
|
||||
- [`GET /tenor/featured`](/api-reference/tenor/get-featured-tenor-gifs)
|
||||
- [`GET /tenor/search`](/api-reference/tenor/search-tenor-gifs)
|
||||
- [`GET /tenor/suggest`](/api-reference/tenor/get-tenor-search-suggestions)
|
||||
- [`GET /tenor/trending-gifs`](/api-reference/tenor/get-trending-tenor-gifs)
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `ar` | Arabic |
|
||||
| `bg` | Bulgarian |
|
||||
| `cs` | Czech |
|
||||
| `da` | Danish |
|
||||
| `de` | German |
|
||||
| `el` | Greek |
|
||||
| `en-GB` | English (United Kingdom) |
|
||||
| `en-US` | English (United States) |
|
||||
| `es-ES` | Spanish (Spain) |
|
||||
| `es-419` | Spanish (Latin America) |
|
||||
| `fi` | Finnish |
|
||||
| `fr` | French |
|
||||
| `he` | Hebrew |
|
||||
| `hi` | Hindi |
|
||||
| `hr` | Croatian |
|
||||
| `hu` | Hungarian |
|
||||
| `id` | Indonesian |
|
||||
| `it` | Italian |
|
||||
| `ja` | Japanese |
|
||||
| `ko` | Korean |
|
||||
| `lt` | Lithuanian |
|
||||
| `nl` | Dutch |
|
||||
| `no` | Norwegian |
|
||||
| `pl` | Polish |
|
||||
| `pt-BR` | Portuguese (Brazil) |
|
||||
| `ro` | Romanian |
|
||||
| `ru` | Russian |
|
||||
| `sv-SE` | Swedish |
|
||||
| `th` | Thai |
|
||||
| `tr` | Turkish |
|
||||
| `uk` | Ukrainian |
|
||||
| `vi` | Vietnamese |
|
||||
| `zh-CN` | Chinese (Simplified) |
|
||||
| `zh-TW` | Chinese (Traditional) |
|
||||
|
||||
342
fluxer_docs/resources/media_proxy.mdx
Normal file
@@ -0,0 +1,342 @@
|
||||
---
|
||||
title: 'Media proxy'
|
||||
description: 'Object schemas used by the Fluxer media proxy.'
|
||||
---
|
||||
|
||||
The media proxy serves all user-generated content for Fluxer, including avatars, icons, attachments, emojis, stickers, and external media. All public routes are served from `https://fluxerusercontent.com`.
|
||||
|
||||
See the [Media Proxy API reference](/media-proxy-api) for the full list of available endpoints.
|
||||
|
||||
## Field notation
|
||||
|
||||
Resource tables use a compact notation:
|
||||
|
||||
| Notation | Meaning |
|
||||
|----------|----------|
|
||||
| `field` | Required field |
|
||||
| `field?` | Optional field (may be omitted) |
|
||||
| `?type` | Nullable (value can be `null`) |
|
||||
|
||||
## Enums
|
||||
|
||||
<a id="imagesizeenum"></a>
|
||||
|
||||
### ImageSizeEnum
|
||||
|
||||
Allowed image sizes in pixels.
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /avatars/{id}/{filename}`](/media-proxy-api/images/get-user-or-guild-avatar)
|
||||
- [`GET /icons/{id}/{filename}`](/media-proxy-api/images/get-guild-icon)
|
||||
- [`GET /banners/{id}/{filename}`](/media-proxy-api/images/get-user-or-guild-banner)
|
||||
- [`GET /emojis/{id}`](/media-proxy-api/content/get-custom-emoji)
|
||||
- [`GET /stickers/{id}`](/media-proxy-api/content/get-sticker)
|
||||
- [`GET /attachments/{channel_id}/{attachment_id}/{filename}`](/media-proxy-api/content/get-message-attachment)
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `16` | 16 pixels |
|
||||
| `20` | 20 pixels |
|
||||
| `22` | 22 pixels |
|
||||
| `24` | 24 pixels |
|
||||
| `28` | 28 pixels |
|
||||
| `32` | 32 pixels |
|
||||
| `40` | 40 pixels |
|
||||
| `44` | 44 pixels |
|
||||
| `48` | 48 pixels |
|
||||
| `56` | 56 pixels |
|
||||
| `60` | 60 pixels |
|
||||
| `64` | 64 pixels |
|
||||
| `80` | 80 pixels |
|
||||
| `96` | 96 pixels |
|
||||
| `100` | 100 pixels |
|
||||
| `128` | 128 pixels |
|
||||
| `160` | 160 pixels |
|
||||
| `240` | 240 pixels |
|
||||
| `256` | 256 pixels |
|
||||
| `300` | 300 pixels |
|
||||
| `320` | 320 pixels |
|
||||
| `480` | 480 pixels |
|
||||
| `512` | 512 pixels |
|
||||
| `600` | 600 pixels |
|
||||
| `640` | 640 pixels |
|
||||
| `1024` | 1024 pixels |
|
||||
| `1280` | 1280 pixels |
|
||||
| `1536` | 1536 pixels |
|
||||
| `2048` | 2048 pixels |
|
||||
| `3072` | 3072 pixels |
|
||||
| `4096` | 4096 pixels |
|
||||
|
||||
<a id="imageformatenum"></a>
|
||||
|
||||
### ImageFormatEnum
|
||||
|
||||
Allowed image output formats.
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /avatars/{id}/{filename}`](/media-proxy-api/images/get-user-or-guild-avatar)
|
||||
- [`GET /external/{signature}/{timestamp}/{url}`](/media-proxy-api/external/proxy-external-media)
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `png` | PNG format |
|
||||
| `jpg` | JPEG format |
|
||||
| `jpeg` | JPEG format (alias) |
|
||||
| `webp` | WebP format (default, recommended) |
|
||||
| `gif` | GIF format (for animated images) |
|
||||
|
||||
<a id="imagequalityenum"></a>
|
||||
|
||||
### ImageQualityEnum
|
||||
|
||||
Image quality levels.
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /avatars/{id}/{filename}`](/media-proxy-api/images/get-user-or-guild-avatar)
|
||||
- [`GET /external/{signature}/{timestamp}/{url}`](/media-proxy-api/external/proxy-external-media)
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `high` | High quality compression, good balance of size and fidelity (default for most images) |
|
||||
| `low` | Lower quality for smaller file sizes, suitable for thumbnails |
|
||||
| `lossless` | No quality loss, largest file sizes (default for external media) |
|
||||
|
||||
---
|
||||
|
||||
## Query parameter schemas
|
||||
|
||||
<a id="imagequeryparams"></a>
|
||||
|
||||
## ImageQueryParams
|
||||
|
||||
Standard query parameters for image routes.
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /avatars/{id}/{filename}`](/media-proxy-api/images/get-user-or-guild-avatar)
|
||||
- [`GET /icons/{id}/{filename}`](/media-proxy-api/images/get-guild-icon)
|
||||
- [`GET /emojis/{id}`](/media-proxy-api/content/get-custom-emoji)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| size? | [ImageSizeEnum](#imagesizeenum) | Target image size in pixels. Default: `128` |
|
||||
| format? | [ImageFormatEnum](#imageformatenum) | Output image format. Default: `webp` |
|
||||
| quality? | [ImageQualityEnum](#imagequalityenum) | Image quality level. Default: `high` |
|
||||
| animated? | boolean | Whether to return animated images (GIF, APNG) if available. Default: `false` |
|
||||
|
||||
<a id="externalmediaqueryparams"></a>
|
||||
|
||||
## ExternalMediaQueryParams
|
||||
|
||||
Query parameters for the external media proxy.
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /external/{signature}/{timestamp}/{url}`](/media-proxy-api/external/proxy-external-media)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| width? | integer | Target width in pixels (1-4096). If only width is specified, height is calculated to maintain aspect ratio. |
|
||||
| height? | integer | Target height in pixels (1-4096). If only height is specified, width is calculated to maintain aspect ratio. |
|
||||
| format? | [ImageFormatEnum](#imageformatenum) | Output image format. If not specified, the original format is preserved. |
|
||||
| quality? | [ImageQualityEnum](#imagequalityenum) | Image quality level. Default: `lossless` |
|
||||
| animated? | boolean | Whether to preserve animation for GIF images. Default: `false` |
|
||||
|
||||
---
|
||||
|
||||
## Response schemas
|
||||
|
||||
<a id="metadataresponse"></a>
|
||||
|
||||
## MetadataResponse
|
||||
|
||||
Response from metadata extraction.
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /_metadata`](/media-proxy-api/internal/extract-media-metadata)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| format | string | Detected media format (e.g., `png`, `jpeg`, `gif`, `mp4`) |
|
||||
| content_type | string | MIME content type |
|
||||
| content_hash | string | SHA-256 hash of the content |
|
||||
| size | integer | File size in bytes |
|
||||
| width? | integer | Image or video width in pixels |
|
||||
| height? | integer | Image or video height in pixels |
|
||||
| duration? | number | Video or audio duration in seconds |
|
||||
| placeholder? | string | BlurHash placeholder string for progressive loading |
|
||||
| base64? | string | Base64-encoded content (if `with_base64` was requested) |
|
||||
| animated? | boolean | Whether the image is animated (GIF, APNG) |
|
||||
| nsfw | boolean | Whether the content was flagged as NSFW |
|
||||
| nsfw_probability? | number | NSFW probability score (0-1) |
|
||||
| nsfw_predictions? | map<string, number> | Per-category NSFW predictions |
|
||||
|
||||
<a id="thumbnailresponse"></a>
|
||||
|
||||
## ThumbnailResponse
|
||||
|
||||
Response from thumbnail generation.
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /_thumbnail`](/media-proxy-api/internal/generate-video-thumbnail)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| thumbnail | string | Base64-encoded thumbnail image (JPEG) |
|
||||
| mime_type | string | MIME type of the thumbnail (always `image/jpeg`) |
|
||||
|
||||
<a id="frameresponse"></a>
|
||||
|
||||
## FrameResponse
|
||||
|
||||
Response from frame extraction.
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /_frames`](/media-proxy-api/internal/extract-video-frames)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| frames | [ExtractedFrame](#extractedframe)[] | Extracted video frames |
|
||||
|
||||
<a id="extractedframe"></a>
|
||||
|
||||
## ExtractedFrame
|
||||
|
||||
Single extracted video frame.
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| timestamp | number | Frame timestamp in seconds |
|
||||
| mime_type | string | MIME type of the frame image |
|
||||
| base64 | string | Base64-encoded frame image |
|
||||
|
||||
---
|
||||
|
||||
## Request schemas
|
||||
|
||||
<a id="metadatarequest"></a>
|
||||
|
||||
### MetadataRequest
|
||||
|
||||
Discriminated union for metadata extraction requests. The `type` field determines which variant is used.
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /_metadata`](/media-proxy-api/internal/extract-media-metadata)
|
||||
|
||||
| Type | Description |
|
||||
|------|-------------|
|
||||
| [MetadataRequestExternal](#metadatarequestexternal) | Fetch metadata from an external URL |
|
||||
| [MetadataRequestUpload](#metadatarequestupload) | Get metadata from an uploaded file |
|
||||
| [MetadataRequestBase64](#metadatarequestbase64) | Get metadata from base64-encoded data |
|
||||
| [MetadataRequestS3](#metadatarequests3) | Get metadata from an S3 object |
|
||||
|
||||
<a id="metadatarequestexternal"></a>
|
||||
|
||||
## MetadataRequestExternal
|
||||
|
||||
Metadata request for external URLs.
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| type | string | Must be `"external"` |
|
||||
| url | string | External URL to fetch |
|
||||
| with_base64? | boolean | Include base64-encoded content in response |
|
||||
| isNSFWAllowed | boolean | Whether NSFW content is permitted |
|
||||
|
||||
<a id="metadatarequestupload"></a>
|
||||
|
||||
## MetadataRequestUpload
|
||||
|
||||
Metadata request for uploaded files.
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| type | string | Must be `"upload"` |
|
||||
| upload_filename | string | Filename in the uploads bucket |
|
||||
| isNSFWAllowed | boolean | Whether NSFW content is permitted |
|
||||
|
||||
<a id="metadatarequestbase64"></a>
|
||||
|
||||
## MetadataRequestBase64
|
||||
|
||||
Metadata request for base64-encoded data.
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| type | string | Must be `"base64"` |
|
||||
| base64 | string | Base64-encoded media data |
|
||||
| isNSFWAllowed | boolean | Whether NSFW content is permitted |
|
||||
|
||||
<a id="metadatarequests3"></a>
|
||||
|
||||
## MetadataRequestS3
|
||||
|
||||
Metadata request for S3 objects.
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| type | string | Must be `"s3"` |
|
||||
| bucket | string | S3 bucket name |
|
||||
| key | string | S3 object key |
|
||||
| with_base64? | boolean | Include base64-encoded content in response |
|
||||
| isNSFWAllowed | boolean | Whether NSFW content is permitted |
|
||||
|
||||
<a id="framerequest"></a>
|
||||
|
||||
### FrameRequest
|
||||
|
||||
Discriminated union for frame extraction requests. The `type` field determines which variant is used.
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /_frames`](/media-proxy-api/internal/extract-video-frames)
|
||||
|
||||
| Type | Description |
|
||||
|------|-------------|
|
||||
| [FrameRequestUpload](#framerequestupload) | Extract frames from an uploaded file |
|
||||
| [FrameRequestS3](#framerequests3) | Extract frames from an S3 object |
|
||||
|
||||
<a id="framerequestupload"></a>
|
||||
|
||||
## FrameRequestUpload
|
||||
|
||||
Frame extraction request for uploaded files.
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| type | string | Must be `"upload"` |
|
||||
| upload_filename | string | Filename in the uploads bucket |
|
||||
|
||||
<a id="framerequests3"></a>
|
||||
|
||||
## FrameRequestS3
|
||||
|
||||
Frame extraction request for S3 objects.
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| type | string | Must be `"s3"` |
|
||||
| bucket | string | S3 bucket name |
|
||||
| key | string | S3 object key |
|
||||
|
||||
<a id="thumbnailrequestbody"></a>
|
||||
|
||||
## ThumbnailRequestBody
|
||||
|
||||
Request body for thumbnail generation.
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /_thumbnail`](/media-proxy-api/internal/generate-video-thumbnail)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| upload_filename | string | Filename of the uploaded video in the uploads bucket |
|
||||
|
||||
447
fluxer_docs/resources/oauth2.mdx
Normal file
@@ -0,0 +1,447 @@
|
||||
---
|
||||
title: 'OAuth2'
|
||||
description: 'OAuth2 object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="applicationbotresponse"></a>
|
||||
|
||||
## ApplicationBotResponse
|
||||
|
||||
Detailed bot user metadata
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| authenticator_types? | [AuthenticatorType](#authenticatortype)[] | The types of authenticators enabled |
|
||||
| avatar? | ?string | The avatar hash of the bot |
|
||||
| banner? | ?string | The banner hash of the bot |
|
||||
| bio | ?string | The bio or description of the bot |
|
||||
| discriminator | string | The discriminator of the bot |
|
||||
| flags | [BotFlags](#botflags) | |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier of the bot user |
|
||||
| mfa_enabled? | boolean | Whether the bot has MFA enabled |
|
||||
| token? | string | The bot token for authentication |
|
||||
| username | string | The username of the bot |
|
||||
|
||||
<a id="applicationcreaterequest"></a>
|
||||
|
||||
## ApplicationCreateRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /oauth2/applications`](/api-reference/oauth2/create-oauth2-application)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| bot_public? | boolean | Whether the bot can be invited by anyone |
|
||||
| bot_require_code_grant? | boolean | Whether the bot requires OAuth2 code grant |
|
||||
| name | string | The name of the application |
|
||||
| redirect_uris? | ?[OAuth2RedirectURICreateType](#oauth2redirecturicreatetype)[] | The redirect URIs for OAuth2 flows |
|
||||
|
||||
<a id="applicationflags"></a>
|
||||
|
||||
## ApplicationFlags
|
||||
|
||||
The application flags
|
||||
|
||||
Type: integer (int32)
|
||||
|
||||
<a id="applicationlistresponse"></a>
|
||||
|
||||
## ApplicationListResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /oauth2/applications/@me`](/api-reference/oauth2/list-user-applications)
|
||||
- [`GET /users/@me/applications`](/api-reference/oauth2/list-user-applications)
|
||||
|
||||
Type: [ApplicationResponse](#applicationresponse)[]
|
||||
|
||||
<a id="applicationpublicresponse"></a>
|
||||
|
||||
## ApplicationPublicResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /oauth2/applications/{id}/public`](/api-reference/oauth2/get-public-application)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| bot | ?[ApplicationBotResponse](#applicationbotresponse) | The bot user associated with the application |
|
||||
| bot_public | boolean | Whether the bot can be invited by anyone |
|
||||
| description | null | The description of the application |
|
||||
| icon | ?string | The icon hash of the application |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier of the application |
|
||||
| name | string | The name of the application |
|
||||
| redirect_uris | string[] | The registered redirect URIs for OAuth2 |
|
||||
| scopes | string[] | The available OAuth2 scopes |
|
||||
|
||||
<a id="applicationresponse"></a>
|
||||
|
||||
## ApplicationResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /oauth2/applications/{id}`](/api-reference/oauth2/get-application)
|
||||
- [`POST /oauth2/applications`](/api-reference/oauth2/create-oauth2-application)
|
||||
- [`POST /oauth2/applications/{id}/client-secret/reset`](/api-reference/oauth2/reset-client-secret)
|
||||
- [`PATCH /oauth2/applications/{id}`](/api-reference/oauth2/update-application)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| bot? | [ApplicationBotResponse](#applicationbotresponse) | |
|
||||
| bot_public | boolean | Whether the bot can be invited by anyone |
|
||||
| bot_require_code_grant | boolean | Whether the bot requires OAuth2 code grant |
|
||||
| client_secret? | string | The client secret for OAuth2 authentication |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier of the application |
|
||||
| name | string | The name of the application |
|
||||
| redirect_uris | string[] | The registered redirect URIs for OAuth2 |
|
||||
|
||||
<a id="applicationsmeresponse"></a>
|
||||
|
||||
## ApplicationsMeResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /applications/@me`](/api-reference/oauth2/list-current-user-applications)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| bot? | [ApplicationBotResponse](#applicationbotresponse) | |
|
||||
| bot_public | boolean | Whether the bot can be invited by anyone |
|
||||
| bot_require_code_grant | boolean | Whether the bot requires OAuth2 code grant |
|
||||
| description | null | The description of the application |
|
||||
| flags | [ApplicationFlags](#applicationflags) | |
|
||||
| icon | null | The icon hash of the application |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier of the application |
|
||||
| name | string | The name of the application |
|
||||
|
||||
<a id="applicationupdaterequest"></a>
|
||||
|
||||
## ApplicationUpdateRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`PATCH /oauth2/applications/{id}`](/api-reference/oauth2/update-application)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| bot_public? | boolean | Whether the bot can be invited by anyone |
|
||||
| bot_require_code_grant? | boolean | Whether the bot requires OAuth2 code grant |
|
||||
| name? | string | The name of the application |
|
||||
| redirect_uris? | ?[OAuth2RedirectURIUpdateType](#oauth2redirecturiupdatetype)[] | The redirect URIs for OAuth2 flows |
|
||||
|
||||
<a id="authorizeconsentrequest"></a>
|
||||
|
||||
## AuthorizeConsentRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /oauth2/authorize/consent`](/api-reference/oauth2/grant-oauth2-consent)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| client_id | [SnowflakeType](#snowflaketype) | |
|
||||
| guild_id? | [SnowflakeType](#snowflaketype) | |
|
||||
| permissions? | string | The bot permissions to request |
|
||||
| redirect_uri? | string | The URI to redirect to after authorization |
|
||||
| response_type? | string | The OAuth2 response type |
|
||||
| scope | string | The space-separated list of requested scopes |
|
||||
| state? | string | A random string for CSRF protection |
|
||||
|
||||
<a id="botflags"></a>
|
||||
|
||||
## BotFlags
|
||||
|
||||
The bot user flags
|
||||
|
||||
Type: Bitflags32
|
||||
|
||||
| Flag | Value | Description |
|
||||
|------|-------|-------------|
|
||||
| FRIENDLY_BOT | `16` | Bot accepts friend requests from users |
|
||||
| FRIENDLY_BOT_MANUAL_APPROVAL | `32` | Bot requires manual approval for friend requests |
|
||||
|
||||
<a id="botprofileresponse"></a>
|
||||
|
||||
## BotProfileResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`PATCH /oauth2/applications/{id}/bot`](/api-reference/oauth2/update-bot-profile)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| avatar | ?string | The avatar hash of the bot |
|
||||
| banner | ?string | The banner hash of the bot |
|
||||
| bio | ?string | The bio or description of the bot |
|
||||
| discriminator | string | The discriminator of the bot |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier of the bot user |
|
||||
| username | string | The username of the bot |
|
||||
|
||||
<a id="botprofileupdaterequest"></a>
|
||||
|
||||
## BotProfileUpdateRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`PATCH /oauth2/applications/{id}/bot`](/api-reference/oauth2/update-bot-profile)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| avatar? | ?[Base64ImageType](#base64imagetype) | The avatar image as base64 |
|
||||
| banner? | ?[Base64ImageType](#base64imagetype) | The banner image as base64 |
|
||||
| bio? | ?string | The bio or description of the bot |
|
||||
| bot_flags? | [BotFlags](#botflags) | |
|
||||
| discriminator? | string | The discriminator of the bot |
|
||||
| username? | [UsernameType](#usernametype) | |
|
||||
|
||||
<a id="bottokenresetresponse"></a>
|
||||
|
||||
## BotTokenResetResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /oauth2/applications/{id}/bot/reset-token`](/api-reference/oauth2/reset-bot-token)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| bot | [ApplicationBotResponse](#applicationbotresponse) | |
|
||||
| token | string | The new bot token |
|
||||
|
||||
<a id="introspectrequestform"></a>
|
||||
|
||||
## IntrospectRequestForm
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /oauth2/introspect`](/api-reference/oauth2/introspect-oauth2-token)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| client_id? | [SnowflakeType](#snowflaketype) | |
|
||||
| client_secret? | string | The application client secret |
|
||||
| token | string | The token to introspect |
|
||||
|
||||
<a id="oauth2authorizationresponse"></a>
|
||||
|
||||
## OAuth2AuthorizationResponse
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| application | [OAuth2AuthorizationResponseApplication](#oauth2authorizationresponseapplication) | The application that was authorized |
|
||||
| authorized_at | string | The timestamp when the authorization was granted |
|
||||
| scopes | string[] | The list of granted OAuth2 scopes |
|
||||
|
||||
<a id="oauth2authorizationslistresponse"></a>
|
||||
|
||||
## OAuth2AuthorizationsListResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /oauth2/@me/authorizations`](/api-reference/oauth2/list-user-oauth2-authorizations)
|
||||
|
||||
Type: [OAuth2AuthorizationResponse](#oauth2authorizationresponse)[]
|
||||
|
||||
<a id="oauth2consentresponse"></a>
|
||||
|
||||
## OAuth2ConsentResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /oauth2/authorize/consent`](/api-reference/oauth2/grant-oauth2-consent)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| redirect_to | string | The URL to redirect the user to after consent |
|
||||
|
||||
<a id="oauth2introspectresponse"></a>
|
||||
|
||||
## OAuth2IntrospectResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /oauth2/introspect`](/api-reference/oauth2/introspect-oauth2-token)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| active | boolean | Whether the token is currently active |
|
||||
| client_id? | [SnowflakeType](#snowflaketype) | |
|
||||
| exp? | [Int32Type](#int32type) | |
|
||||
| iat? | [Int32Type](#int32type) | |
|
||||
| scope? | string | The space-separated list of scopes |
|
||||
| sub? | [SnowflakeType](#snowflaketype) | |
|
||||
| token_type? | string | The type of token |
|
||||
| username? | string | The username of the token owner |
|
||||
|
||||
<a id="oauth2meresponse"></a>
|
||||
|
||||
## OAuth2MeResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /oauth2/@me`](/api-reference/oauth2/get-current-oauth2-user)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| application | [OAuth2MeResponseApplication](#oauth2meresponseapplication) | The application associated with the token |
|
||||
| expires | string | The expiration timestamp of the token |
|
||||
| scopes | string[] | The list of granted OAuth2 scopes |
|
||||
| user? | [OAuth2MeResponseUser](#oauth2meresponseuser) | The user associated with the token |
|
||||
|
||||
<a id="oauth2redirecturicreatetype"></a>
|
||||
|
||||
## OAuth2RedirectURICreateType
|
||||
|
||||
Type: string
|
||||
|
||||
<a id="oauth2redirecturiupdatetype"></a>
|
||||
|
||||
## OAuth2RedirectURIUpdateType
|
||||
|
||||
Type: string
|
||||
|
||||
<a id="oauth2tokenresponse"></a>
|
||||
|
||||
## OAuth2TokenResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /oauth2/token`](/api-reference/oauth2/exchange-oauth2-token)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| access_token | string | The access token for API authorization |
|
||||
| expires_in | integer (int32) | The number of seconds until the access token expires |
|
||||
| refresh_token | string | The refresh token for obtaining new access tokens |
|
||||
| scope | string | The space-separated list of granted scopes |
|
||||
| token_type | string | The type of token, typically "Bearer" |
|
||||
|
||||
<a id="oauth2userinforesponse"></a>
|
||||
|
||||
## OAuth2UserInfoResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /oauth2/userinfo`](/api-reference/oauth2/get-oauth2-user-information)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| avatar | ?string | The avatar hash of the user |
|
||||
| discriminator | string | The discriminator of the user |
|
||||
| email? | ?string | The email address of the user |
|
||||
| flags? | [PublicUserFlags](#publicuserflags) | |
|
||||
| global_name | ?string | The global display name of the user |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier of the user |
|
||||
| sub | [SnowflakeType](#snowflaketype) | The subject identifier of the user |
|
||||
| username | string | The username of the user |
|
||||
| verified? | ?boolean | Whether the user has verified their email |
|
||||
|
||||
<a id="revokerequestform"></a>
|
||||
|
||||
## RevokeRequestForm
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /oauth2/token/revoke`](/api-reference/oauth2/revoke-oauth2-token)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| client_id? | [SnowflakeType](#snowflaketype) | |
|
||||
| client_secret? | string | The application client secret |
|
||||
| token | string | The token to revoke |
|
||||
| token_type_hint? | [RevokeRequestFormTokenTypeHint](#revokerequestformtokentypehint) | A hint about the type of token being revoked |
|
||||
|
||||
<a id="tokenrequest"></a>
|
||||
|
||||
## TokenRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /oauth2/token`](/api-reference/oauth2/exchange-oauth2-token)
|
||||
|
||||
Type: [TokenRequestOneOf0](#tokenrequestoneof0) \| [TokenRequestOneOf1](#tokenrequestoneof1)
|
||||
|
||||
<a id="revokerequestformtokentypehint"></a>
|
||||
|
||||
## RevokeRequestFormTokenTypeHint
|
||||
|
||||
A hint about the type of token being revoked
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `access_token` | An OAuth2 access token |
|
||||
| `refresh_token` | An OAuth2 refresh token |
|
||||
|
||||
<a id="oauth2authorizationresponseapplication"></a>
|
||||
|
||||
## OAuth2AuthorizationResponseApplication
|
||||
|
||||
The application that was authorized
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| bot_public | boolean | Whether the bot can be invited by anyone |
|
||||
| description | null | The description of the application |
|
||||
| icon | ?string | The icon hash of the application |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier of the application |
|
||||
| name | string | The name of the application |
|
||||
|
||||
<a id="oauth2meresponseapplication"></a>
|
||||
|
||||
## OAuth2MeResponseApplication
|
||||
|
||||
The application associated with the token
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| bot_public | boolean | Whether the bot can be invited by anyone |
|
||||
| bot_require_code_grant | boolean | Whether the bot requires OAuth2 code grant |
|
||||
| description | null | The description of the application |
|
||||
| flags | [ApplicationFlags](#applicationflags) | |
|
||||
| icon | null | The icon hash of the application |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier of the application |
|
||||
| name | string | The name of the application |
|
||||
|
||||
<a id="oauth2meresponseuser"></a>
|
||||
|
||||
## OAuth2MeResponseUser
|
||||
|
||||
The user associated with the token
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| avatar | ?string | The avatar hash of the user |
|
||||
| avatar_color | ?[Int32Type](#int32type) | The default avatar color of the user |
|
||||
| bot? | boolean | Whether the user is a bot |
|
||||
| discriminator | string | The discriminator of the user |
|
||||
| email? | ?string | The email address of the user |
|
||||
| flags | [PublicUserFlags](#publicuserflags) | |
|
||||
| global_name | ?string | The global display name of the user |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier of the user |
|
||||
| system? | boolean | Whether the user is a system user |
|
||||
| username | string | The username of the user |
|
||||
| verified? | ?boolean | Whether the user has verified their email |
|
||||
|
||||
<a id="tokenrequestoneof0"></a>
|
||||
|
||||
## TokenRequestOneOf0
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| client_id? | [SnowflakeType](#snowflaketype) | |
|
||||
| client_secret? | string | The application client secret |
|
||||
| code | string | The authorization code received from the authorize endpoint |
|
||||
| grant_type | enum<`authorization_code`> | The grant type for exchanging an authorization code |
|
||||
| redirect_uri | string | The redirect URI used in the authorization request |
|
||||
|
||||
<a id="tokenrequestoneof1"></a>
|
||||
|
||||
## TokenRequestOneOf1
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| client_id? | [SnowflakeType](#snowflaketype) | |
|
||||
| client_secret? | string | The application client secret |
|
||||
| grant_type | enum<`refresh_token`> | The grant type for refreshing an access token |
|
||||
| refresh_token | string | The refresh token to exchange for a new access token |
|
||||
|
||||
603
fluxer_docs/resources/overview.mdx
Normal file
@@ -0,0 +1,603 @@
|
||||
---
|
||||
title: 'Overview'
|
||||
description: 'Object schemas extracted from the OpenAPI schema.'
|
||||
---
|
||||
|
||||
This section contains all resource schemas (data types) used by the Fluxer API.
|
||||
|
||||
## Field notation
|
||||
|
||||
Resource tables use a compact notation:
|
||||
|
||||
| Notation | Meaning |
|
||||
|----------|----------|
|
||||
| `field` | Required field |
|
||||
| `field?` | Optional field (may be omitted) |
|
||||
| `?type` | Nullable (value can be `null`) |
|
||||
| `field?` with `?type` | Optional and nullable |
|
||||
|
||||
## Resources by domain
|
||||
|
||||
- [Admin](/resources/admin) (169 schemas)
|
||||
- [Auth](/resources/auth) (37 schemas)
|
||||
- [Billing](/resources/billing) (3 schemas)
|
||||
- [Channels](/resources/channels) (66 schemas)
|
||||
- [Common](/resources/common) (34 schemas)
|
||||
- [Gateway](/resources/gateway) (2 schemas)
|
||||
- [Gifts](/resources/gifts) (1 schemas)
|
||||
- [Guilds](/resources/guilds) (63 schemas)
|
||||
- [Instance](/resources/instance) (1 schemas)
|
||||
- [Invites](/resources/invites) (4 schemas)
|
||||
- [Klipy](/resources/klipy) (5 schemas)
|
||||
- [Oauth2](/resources/oauth2) (25 schemas)
|
||||
- [Packs](/resources/packs) (7 schemas)
|
||||
- [Premium](/resources/premium) (2 schemas)
|
||||
- [Read states](/resources/read_states) (1 schemas)
|
||||
- [Reports](/resources/reports) (14 schemas)
|
||||
- [Saved media](/resources/saved_media) (5 schemas)
|
||||
- [Search](/resources/search) (2 schemas)
|
||||
- [Themes](/resources/themes) (2 schemas)
|
||||
- [Users](/resources/users) (81 schemas)
|
||||
- [Webhooks](/resources/webhooks) (9 schemas)
|
||||
|
||||
## All schemas
|
||||
|
||||
- [AddSnowflakeReservationRequest](/resources/admin#addsnowflakereservationrequest)
|
||||
- [AdminArchiveResponseSchema](/resources/admin#adminarchiveresponseschema)
|
||||
- [AdminAuditLogResponseSchema](/resources/common#adminauditlogresponseschema)
|
||||
- [AdminUserDmChannelSchema](/resources/common#adminuserdmchannelschema)
|
||||
- [AdminUsersMeResponse](/resources/admin#adminusersmeresponse)
|
||||
- [APIErrorCode](/resources/common#apierrorcode)
|
||||
- [ApplicationBotResponse](/resources/common#applicationbotresponse)
|
||||
- [ApplicationCreateRequest](/resources/oauth2#applicationcreaterequest)
|
||||
- [ApplicationFlags](/resources/common#applicationflags)
|
||||
- [ApplicationListResponse](/resources/oauth2#applicationlistresponse)
|
||||
- [ApplicationPublicResponse](/resources/oauth2#applicationpublicresponse)
|
||||
- [ApplicationResponse](/resources/oauth2#applicationresponse)
|
||||
- [ApplicationsMeResponse](/resources/oauth2#applicationsmeresponse)
|
||||
- [ApplicationUpdateRequest](/resources/oauth2#applicationupdaterequest)
|
||||
- [AuditLogActionType](/resources/guilds#auditlogactiontype)
|
||||
- [AuditLogChangeSchema](/resources/common#auditlogchangeschema)
|
||||
- [AuditLogsListResponseSchema](/resources/admin#auditlogslistresponseschema)
|
||||
- [AuditLogWebhookResponse](/resources/common#auditlogwebhookresponse)
|
||||
- [AuthenticatorType](/resources/common#authenticatortype)
|
||||
- [AuthLoginResponse](/resources/auth#authloginresponse)
|
||||
- [AuthMfaRequiredResponse](/resources/common#authmfarequiredresponse)
|
||||
- [AuthorizeConsentRequest](/resources/oauth2#authorizeconsentrequest)
|
||||
- [AuthorizeIpRequest](/resources/auth#authorizeiprequest)
|
||||
- [AuthRegisterResponse](/resources/auth#authregisterresponse)
|
||||
- [AuthSessionClientInfo](/resources/common#authsessionclientinfo)
|
||||
- [AuthSessionLocation](/resources/common#authsessionlocation)
|
||||
- [AuthSessionResponse](/resources/common#authsessionresponse)
|
||||
- [AuthSessionsResponse](/resources/auth#authsessionsresponse)
|
||||
- [AuthTokenWithUserIdResponse](/resources/auth#authtokenwithuseridresponse)
|
||||
- [BanCheckResponseSchema](/resources/admin#bancheckresponseschema)
|
||||
- [BanEmailRequest](/resources/admin#banemailrequest)
|
||||
- [BanGuildMemberRequest](/resources/admin#banguildmemberrequest)
|
||||
- [BanIpRequest](/resources/admin#baniprequest)
|
||||
- [BanPhoneRequest](/resources/admin#banphonerequest)
|
||||
- [Base64ImageType](/resources/common#base64imagetype)
|
||||
- [BlueskyAuthorizeRequest](/resources/common#blueskyauthorizerequest)
|
||||
- [BlueskyAuthorizeResponse](/resources/common#blueskyauthorizeresponse)
|
||||
- [BotFlags](/resources/common#botflags)
|
||||
- [BotProfileResponse](/resources/oauth2#botprofileresponse)
|
||||
- [BotProfileUpdateRequest](/resources/oauth2#botprofileupdaterequest)
|
||||
- [BotTokenResetResponse](/resources/oauth2#bottokenresetresponse)
|
||||
- [BulkAddGuildMembersRequest](/resources/admin#bulkaddguildmembersrequest)
|
||||
- [BulkDeleteMessagesRequest](/resources/channels#bulkdeletemessagesrequest)
|
||||
- [BulkOperationFailedResponse](/resources/common#bulkoperationfailedresponse)
|
||||
- [BulkOperationResponse](/resources/admin#bulkoperationresponse)
|
||||
- [BulkScheduleUserDeletionRequest](/resources/admin#bulkscheduleuserdeletionrequest)
|
||||
- [BulkUpdateGuildFeaturesRequest](/resources/admin#bulkupdateguildfeaturesrequest)
|
||||
- [BulkUpdateUserFlagsRequest](/resources/admin#bulkupdateuserflagsrequest)
|
||||
- [CallEligibilityResponse](/resources/channels#calleligibilityresponse)
|
||||
- [CallRingBodySchema](/resources/channels#callringbodyschema)
|
||||
- [CallUpdateBodySchema](/resources/channels#callupdatebodyschema)
|
||||
- [CancelBulkMessageDeletionRequest](/resources/admin#cancelbulkmessagedeletionrequest)
|
||||
- [ChangeDobRequest](/resources/admin#changedobrequest)
|
||||
- [ChangeEmailRequest](/resources/admin#changeemailrequest)
|
||||
- [ChangeUsernameRequest](/resources/admin#changeusernamerequest)
|
||||
- [ChannelCreateCategoryRequest](/resources/common#channelcreatecategoryrequest)
|
||||
- [ChannelCreateLinkRequest](/resources/common#channelcreatelinkrequest)
|
||||
- [ChannelCreateRequest](/resources/guilds#channelcreaterequest)
|
||||
- [ChannelCreateTextRequest](/resources/common#channelcreatetextrequest)
|
||||
- [ChannelCreateVoiceRequest](/resources/common#channelcreatevoicerequest)
|
||||
- [ChannelInviteCreateRequest](/resources/invites#channelinvitecreaterequest)
|
||||
- [ChannelNicknameOverrides](/resources/common#channelnicknameoverrides)
|
||||
- [ChannelOverwriteRequest](/resources/common#channeloverwriterequest)
|
||||
- [ChannelOverwriteResponse](/resources/common#channeloverwriteresponse)
|
||||
- [ChannelPartialRecipientResponse](/resources/common#channelpartialrecipientresponse)
|
||||
- [ChannelPartialResponse](/resources/common#channelpartialresponse)
|
||||
- [ChannelPinMessageResponse](/resources/common#channelpinmessageresponse)
|
||||
- [ChannelPinResponse](/resources/common#channelpinresponse)
|
||||
- [ChannelPinsResponse](/resources/channels#channelpinsresponse)
|
||||
- [ChannelPositionUpdateRequest](/resources/guilds#channelpositionupdaterequest)
|
||||
- [ChannelResponse](/resources/channels#channelresponse)
|
||||
- [ChannelUpdateCategoryRequest](/resources/common#channelupdatecategoryrequest)
|
||||
- [ChannelUpdateGroupDmRequest](/resources/common#channelupdategroupdmrequest)
|
||||
- [ChannelUpdateLinkRequest](/resources/common#channelupdatelinkrequest)
|
||||
- [ChannelUpdateRequest](/resources/channels#channelupdaterequest)
|
||||
- [ChannelUpdateTextRequest](/resources/common#channelupdatetextrequest)
|
||||
- [ChannelUpdateVoiceRequest](/resources/common#channelupdatevoicerequest)
|
||||
- [ClearGuildFieldsRequest](/resources/admin#clearguildfieldsrequest)
|
||||
- [ClearUserFieldsRequest](/resources/admin#clearuserfieldsrequest)
|
||||
- [CodesResponse](/resources/admin#codesresponse)
|
||||
- [ConnectionListResponse](/resources/common#connectionlistresponse)
|
||||
- [ConnectionResponse](/resources/common#connectionresponse)
|
||||
- [ConnectionVerificationResponse](/resources/common#connectionverificationresponse)
|
||||
- [CreateAdminApiKeyRequest](/resources/admin#createadminapikeyrequest)
|
||||
- [CreateAdminApiKeyResponse](/resources/admin#createadminapikeyresponse)
|
||||
- [CreateCheckoutSessionRequest](/resources/billing#createcheckoutsessionrequest)
|
||||
- [CreateConnectionRequest](/resources/common#createconnectionrequest)
|
||||
- [CreateFavoriteMemeBodySchema](/resources/saved_media#createfavoritememebodyschema)
|
||||
- [CreateFavoriteMemeFromUrlBodySchema](/resources/saved_media#createfavoritememefromurlbodyschema)
|
||||
- [CreatePrivateChannelRequest](/resources/users#createprivatechannelrequest)
|
||||
- [CreateSystemDmJobRequest](/resources/admin#createsystemdmjobrequest)
|
||||
- [CreateVoiceRegionRequest](/resources/admin#createvoiceregionrequest)
|
||||
- [CreateVoiceRegionResponse](/resources/admin#createvoiceregionresponse)
|
||||
- [CreateVoiceServerRequest](/resources/admin#createvoiceserverrequest)
|
||||
- [CreateVoiceServerResponse](/resources/admin#createvoiceserverresponse)
|
||||
- [CustomStatusPayload](/resources/common#customstatuspayload)
|
||||
- [CustomStatusResponse](/resources/common#customstatusresponse)
|
||||
- [DefaultMessageNotifications](/resources/common#defaultmessagenotifications)
|
||||
- [DeleteAllUserMessagesRequest](/resources/admin#deleteallusermessagesrequest)
|
||||
- [DeleteAllUserMessagesResponse](/resources/admin#deleteallusermessagesresponse)
|
||||
- [DeleteApiKeyResponse](/resources/admin#deleteapikeyresponse)
|
||||
- [DeleteGuildRequest](/resources/admin#deleteguildrequest)
|
||||
- [DeleteMessageRequest](/resources/admin#deletemessagerequest)
|
||||
- [DeleteMessageResponse](/resources/admin#deletemessageresponse)
|
||||
- [DeleteSnowflakeReservationRequest](/resources/admin#deletesnowflakereservationrequest)
|
||||
- [DeleteVoiceRegionRequest](/resources/admin#deletevoiceregionrequest)
|
||||
- [DeleteVoiceResponse](/resources/admin#deletevoiceresponse)
|
||||
- [DeleteVoiceServerRequest](/resources/admin#deletevoiceserverrequest)
|
||||
- [DisableForSuspiciousActivityRequest](/resources/admin#disableforsuspiciousactivityrequest)
|
||||
- [DisableMfaRequest](/resources/admin#disablemfarequest)
|
||||
- [DisableTotpRequest](/resources/users#disabletotprequest)
|
||||
- [DiscoveryAdminRejectRequest](/resources/admin#discoveryadminrejectrequest)
|
||||
- [DiscoveryAdminRemoveRequest](/resources/admin#discoveryadminremoverequest)
|
||||
- [DiscoveryAdminReviewRequest](/resources/admin#discoveryadminreviewrequest)
|
||||
- [DiscoveryApplicationPatchRequest](/resources/common#discoveryapplicationpatchrequest)
|
||||
- [DiscoveryApplicationRequest](/resources/common#discoveryapplicationrequest)
|
||||
- [DiscoveryApplicationResponse](/resources/admin#discoveryapplicationresponse)
|
||||
- [DiscoveryCategoryListResponse](/resources/common#discoverycategorylistresponse)
|
||||
- [DiscoveryCategoryResponse](/resources/common#discoverycategoryresponse)
|
||||
- [DiscoveryGuildListResponse](/resources/common#discoveryguildlistresponse)
|
||||
- [DiscoveryGuildResponse](/resources/common#discoveryguildresponse)
|
||||
- [DonationCheckoutRequest](/resources/common#donationcheckoutrequest)
|
||||
- [DonationCheckoutResponse](/resources/common#donationcheckoutresponse)
|
||||
- [DonationRequestLinkRequest](/resources/common#donationrequestlinkrequest)
|
||||
- [DownloadUrlResponseSchema](/resources/admin#downloadurlresponseschema)
|
||||
- [DsaReportEmailSendRequest](/resources/reports#dsareportemailsendrequest)
|
||||
- [DsaReportEmailVerifyRequest](/resources/reports#dsareportemailverifyrequest)
|
||||
- [DsaReportGuildRequest](/resources/common#dsareportguildrequest)
|
||||
- [DsaReportMessageRequest](/resources/common#dsareportmessagerequest)
|
||||
- [DsaReportRequest](/resources/reports#dsareportrequest)
|
||||
- [DsaReportUserRequest](/resources/common#dsareportuserrequest)
|
||||
- [EmailChangeBouncedRequestNewRequest](/resources/users#emailchangebouncedrequestnewrequest)
|
||||
- [EmailChangeBouncedVerifyNewRequest](/resources/users#emailchangebouncedverifynewrequest)
|
||||
- [EmailChangeRequestNewRequest](/resources/users#emailchangerequestnewrequest)
|
||||
- [EmailChangeRequestNewResponse](/resources/users#emailchangerequestnewresponse)
|
||||
- [EmailChangeStartResponse](/resources/users#emailchangestartresponse)
|
||||
- [EmailChangeTicketRequest](/resources/users#emailchangeticketrequest)
|
||||
- [EmailChangeVerifyNewRequest](/resources/users#emailchangeverifynewrequest)
|
||||
- [EmailChangeVerifyOriginalRequest](/resources/users#emailchangeverifyoriginalrequest)
|
||||
- [EmailChangeVerifyOriginalResponse](/resources/users#emailchangeverifyoriginalresponse)
|
||||
- [EmailRevertRequest](/resources/auth#emailrevertrequest)
|
||||
- [EmailTokenResponse](/resources/users#emailtokenresponse)
|
||||
- [EmailType](/resources/common#emailtype)
|
||||
- [EmbedAuthorResponse](/resources/common#embedauthorresponse)
|
||||
- [EmbedFieldResponse](/resources/common#embedfieldresponse)
|
||||
- [EmbedFooterResponse](/resources/common#embedfooterresponse)
|
||||
- [EmbedMediaFlags](/resources/common#embedmediaflags)
|
||||
- [EmbedMediaResponse](/resources/common#embedmediaresponse)
|
||||
- [EmptyBodyRequest](/resources/users#emptybodyrequest)
|
||||
- [EnabledToggleRequest](/resources/guilds#enabledtogglerequest)
|
||||
- [EnableMfaTotpRequest](/resources/users#enablemfatotprequest)
|
||||
- [Error](/resources/admin#error)
|
||||
- [ExpandVisionarySlotsRequest](/resources/admin#expandvisionaryslotsrequest)
|
||||
- [FavoriteMemeListResponse](/resources/saved_media#favoritememelistresponse)
|
||||
- [FavoriteMemeResponse](/resources/saved_media#favoritememeresponse)
|
||||
- [ForceAddUserToGuildRequest](/resources/admin#forceaddusertoguildrequest)
|
||||
- [ForgotPasswordRequest](/resources/auth#forgotpasswordrequest)
|
||||
- [FriendRequestByTagRequest](/resources/users#friendrequestbytagrequest)
|
||||
- [FriendSourceFlags](/resources/common#friendsourceflags)
|
||||
- [GatewayBotResponse](/resources/gateway#gatewaybotresponse)
|
||||
- [GenerateGiftCodesRequest](/resources/admin#generategiftcodesrequest)
|
||||
- [GetArchiveResponseSchema](/resources/admin#getarchiveresponseschema)
|
||||
- [GetIndexRefreshStatusRequest](/resources/admin#getindexrefreshstatusrequest)
|
||||
- [GetProcessMemoryStatsRequest](/resources/admin#getprocessmemorystatsrequest)
|
||||
- [GetVoiceRegionRequest](/resources/admin#getvoiceregionrequest)
|
||||
- [GetVoiceRegionResponse](/resources/admin#getvoiceregionresponse)
|
||||
- [GetVoiceServerRequest](/resources/admin#getvoiceserverrequest)
|
||||
- [GetVoiceServerResponse](/resources/admin#getvoiceserverresponse)
|
||||
- [GiftCodeMetadataResponse](/resources/users#giftcodemetadataresponse)
|
||||
- [GiftCodeResponse](/resources/gifts#giftcoderesponse)
|
||||
- [GitHubWebhook](/resources/webhooks#githubwebhook)
|
||||
- [GlobalSearchMessagesRequest](/resources/search#globalsearchmessagesrequest)
|
||||
- [GroupDmAddPermissionFlags](/resources/common#groupdmaddpermissionflags)
|
||||
- [GroupDmInviteMetadataResponse](/resources/common#groupdminvitemetadataresponse)
|
||||
- [GroupDmInviteResponse](/resources/common#groupdminviteresponse)
|
||||
- [GuildAdminResponse](/resources/common#guildadminresponse)
|
||||
- [GuildAssetItemSchema](/resources/common#guildassetitemschema)
|
||||
- [GuildAuditLogEntryResponse](/resources/common#guildauditlogentryresponse)
|
||||
- [GuildAuditLogListResponse](/resources/guilds#guildauditloglistresponse)
|
||||
- [GuildBanCreateRequest](/resources/guilds#guildbancreaterequest)
|
||||
- [GuildBanResponse](/resources/guilds#guildbanresponse)
|
||||
- [GuildCreateRequest](/resources/guilds#guildcreaterequest)
|
||||
- [GuildDeleteRequest](/resources/guilds#guilddeleterequest)
|
||||
- [GuildEmojiBulkCreateRequest](/resources/guilds#guildemojibulkcreaterequest)
|
||||
- [GuildEmojiBulkCreateResponse](/resources/guilds#guildemojibulkcreateresponse)
|
||||
- [GuildEmojiCreateRequest](/resources/guilds#guildemojicreaterequest)
|
||||
- [GuildEmojiResponse](/resources/guilds#guildemojiresponse)
|
||||
- [GuildEmojiUpdateRequest](/resources/guilds#guildemojiupdaterequest)
|
||||
- [GuildEmojiWithUserListResponse](/resources/guilds#guildemojiwithuserlistresponse)
|
||||
- [GuildEmojiWithUserResponse](/resources/common#guildemojiwithuserresponse)
|
||||
- [GuildExplicitContentFilter](/resources/common#guildexplicitcontentfilter)
|
||||
- [GuildFeatureSchema](/resources/common#guildfeatureschema)
|
||||
- [GuildFolderFlags](/resources/common#guildfolderflags)
|
||||
- [GuildInviteMetadataResponse](/resources/common#guildinvitemetadataresponse)
|
||||
- [GuildInviteResponse](/resources/common#guildinviteresponse)
|
||||
- [GuildMemberProfileFlags](/resources/common#guildmemberprofileflags)
|
||||
- [GuildMemberResponse](/resources/guilds#guildmemberresponse)
|
||||
- [GuildMemberSearchRequest](/resources/guilds#guildmembersearchrequest)
|
||||
- [GuildMemberSearchResponse](/resources/guilds#guildmembersearchresponse)
|
||||
- [GuildMemberSearchResult](/resources/common#guildmembersearchresult)
|
||||
- [GuildMemberUpdateRequest](/resources/guilds#guildmemberupdaterequest)
|
||||
- [GuildMemoryStatsResponse](/resources/admin#guildmemorystatsresponse)
|
||||
- [GuildMFALevel](/resources/common#guildmfalevel)
|
||||
- [GuildOperations](/resources/common#guildoperations)
|
||||
- [GuildReportCategoryEnum](/resources/common#guildreportcategoryenum)
|
||||
- [GuildResponse](/resources/guilds#guildresponse)
|
||||
- [GuildRoleCreateRequest](/resources/guilds#guildrolecreaterequest)
|
||||
- [GuildRoleHoistPositionItem](/resources/common#guildrolehoistpositionitem)
|
||||
- [GuildRoleHoistPositionsRequest](/resources/guilds#guildrolehoistpositionsrequest)
|
||||
- [GuildRolePositionItem](/resources/common#guildrolepositionitem)
|
||||
- [GuildRolePositionsRequest](/resources/guilds#guildrolepositionsrequest)
|
||||
- [GuildRoleResponse](/resources/guilds#guildroleresponse)
|
||||
- [GuildRoleUpdateRequest](/resources/guilds#guildroleupdaterequest)
|
||||
- [GuildStickerBulkCreateRequest](/resources/guilds#guildstickerbulkcreaterequest)
|
||||
- [GuildStickerBulkCreateResponse](/resources/guilds#guildstickerbulkcreateresponse)
|
||||
- [GuildStickerCreateRequest](/resources/guilds#guildstickercreaterequest)
|
||||
- [GuildStickerResponse](/resources/guilds#guildstickerresponse)
|
||||
- [GuildStickerUpdateRequest](/resources/guilds#guildstickerupdaterequest)
|
||||
- [GuildStickerWithUserListResponse](/resources/guilds#guildstickerwithuserlistresponse)
|
||||
- [GuildStickerWithUserResponse](/resources/common#guildstickerwithuserresponse)
|
||||
- [GuildTransferOwnershipRequest](/resources/guilds#guildtransferownershiprequest)
|
||||
- [GuildUpdateRequest](/resources/guilds#guildupdaterequest)
|
||||
- [GuildUpdateResponse](/resources/admin#guildupdateresponse)
|
||||
- [GuildVanityURLResponse](/resources/guilds#guildvanityurlresponse)
|
||||
- [GuildVanityURLUpdateRequest](/resources/guilds#guildvanityurlupdaterequest)
|
||||
- [GuildVanityURLUpdateResponse](/resources/guilds#guildvanityurlupdateresponse)
|
||||
- [GuildVerificationLevel](/resources/common#guildverificationlevel)
|
||||
- [HandoffCompleteRequest](/resources/auth#handoffcompleterequest)
|
||||
- [HandoffInitiateResponse](/resources/auth#handoffinitiateresponse)
|
||||
- [HandoffStatusResponse](/resources/auth#handoffstatusresponse)
|
||||
- [HarvestCreationResponseSchema](/resources/users#harvestcreationresponseschema)
|
||||
- [HarvestDownloadUrlResponse](/resources/users#harvestdownloadurlresponse)
|
||||
- [HarvestStatusEnum](/resources/common#harveststatusenum)
|
||||
- [HarvestStatusResponseSchema](/resources/users#harveststatusresponseschema)
|
||||
- [HarvestStatusResponseSchemaNullable](/resources/users#harveststatusresponseschemanullable)
|
||||
- [IncomingCallFlags](/resources/common#incomingcallflags)
|
||||
- [IndexRefreshStatusResponse](/resources/admin#indexrefreshstatusresponse)
|
||||
- [InstanceConfigResponse](/resources/admin#instanceconfigresponse)
|
||||
- [InstanceConfigUpdateRequest](/resources/admin#instanceconfigupdaterequest)
|
||||
- [Int32Type](/resources/guilds#int32type)
|
||||
- [Int64StringType](/resources/common#int64stringtype)
|
||||
- [Int64Type](/resources/common#int64type)
|
||||
- [IntrospectRequestForm](/resources/oauth2#introspectrequestform)
|
||||
- [InviteMetadataResponseSchema](/resources/invites#invitemetadataresponseschema)
|
||||
- [InviteResponseSchema](/resources/invites#inviteresponseschema)
|
||||
- [IpAuthorizationPollResponse](/resources/auth#ipauthorizationpollresponse)
|
||||
- [IpBanListEntrySchema](/resources/common#ipbanlistentryschema)
|
||||
- [JoinSourceType](/resources/common#joinsourcetype)
|
||||
- [KickGuildMemberRequest](/resources/admin#kickguildmemberrequest)
|
||||
- [KlipyCategoryTagResponse](/resources/common#klipycategorytagresponse)
|
||||
- [KlipyFeaturedResponse](/resources/klipy#klipyfeaturedresponse)
|
||||
- [KlipyGifResponse](/resources/klipy#klipygifresponse)
|
||||
- [KlipyRegisterShareRequest](/resources/klipy#klipyregistersharerequest)
|
||||
- [LegalHoldRequest](/resources/admin#legalholdrequest)
|
||||
- [LegalHoldResponse](/resources/admin#legalholdresponse)
|
||||
- [LimitConfigGetResponse](/resources/admin#limitconfiggetresponse)
|
||||
- [LimitConfigUpdateRequest](/resources/admin#limitconfigupdaterequest)
|
||||
- [LimitFilterResponse](/resources/common#limitfilterresponse)
|
||||
- [LimitRuleResponse](/resources/common#limitruleresponse)
|
||||
- [ListAdminApiKeyResponse](/resources/admin#listadminapikeyresponse)
|
||||
- [ListArchivesRequest](/resources/admin#listarchivesrequest)
|
||||
- [ListArchivesResponseSchema](/resources/admin#listarchivesresponseschema)
|
||||
- [ListAuditLogsRequest](/resources/admin#listauditlogsrequest)
|
||||
- [ListBansRequest](/resources/admin#listbansrequest)
|
||||
- [ListEmailBansResponseSchema](/resources/admin#listemailbansresponseschema)
|
||||
- [ListGuildEmojisResponse](/resources/admin#listguildemojisresponse)
|
||||
- [ListGuildMembersRequest](/resources/admin#listguildmembersrequest)
|
||||
- [ListGuildMembersResponse](/resources/admin#listguildmembersresponse)
|
||||
- [ListGuildStickersResponse](/resources/admin#listguildstickersresponse)
|
||||
- [ListIpBansResponseSchema](/resources/admin#listipbansresponseschema)
|
||||
- [ListPhoneBansResponseSchema](/resources/admin#listphonebansresponseschema)
|
||||
- [ListReportsRequest](/resources/admin#listreportsrequest)
|
||||
- [ListReportsResponse](/resources/admin#listreportsresponse)
|
||||
- [ListSnowflakeReservationsResponse](/resources/admin#listsnowflakereservationsresponse)
|
||||
- [ListSystemDmJobsResponse](/resources/admin#listsystemdmjobsresponse)
|
||||
- [ListUserChangeLogRequest](/resources/admin#listuserchangelogrequest)
|
||||
- [ListUserChangeLogResponseSchema](/resources/admin#listuserchangelogresponseschema)
|
||||
- [ListUserDmChannelsRequest](/resources/admin#listuserdmchannelsrequest)
|
||||
- [ListUserDmChannelsResponse](/resources/admin#listuserdmchannelsresponse)
|
||||
- [ListUserGuildsRequest](/resources/admin#listuserguildsrequest)
|
||||
- [ListUserGuildsResponse](/resources/admin#listuserguildsresponse)
|
||||
- [ListUserSessionsRequest](/resources/admin#listusersessionsrequest)
|
||||
- [ListUserSessionsResponse](/resources/admin#listusersessionsresponse)
|
||||
- [ListVisionarySlotsResponse](/resources/admin#listvisionaryslotsresponse)
|
||||
- [ListVoiceRegionsRequest](/resources/admin#listvoiceregionsrequest)
|
||||
- [ListVoiceRegionsResponse](/resources/admin#listvoiceregionsresponse)
|
||||
- [ListVoiceServersRequest](/resources/admin#listvoiceserversrequest)
|
||||
- [ListVoiceServersResponse](/resources/admin#listvoiceserversresponse)
|
||||
- [Locale](/resources/klipy#locale)
|
||||
- [LoginRequest](/resources/auth#loginrequest)
|
||||
- [LogoutAuthSessionsRequest](/resources/auth#logoutauthsessionsrequest)
|
||||
- [LookupGuildRequest](/resources/admin#lookupguildrequest)
|
||||
- [LookupGuildResponse](/resources/admin#lookupguildresponse)
|
||||
- [LookupMessageByAttachmentRequest](/resources/admin#lookupmessagebyattachmentrequest)
|
||||
- [LookupMessageRequest](/resources/admin#lookupmessagerequest)
|
||||
- [LookupMessageResponse](/resources/admin#lookupmessageresponse)
|
||||
- [LookupUserByIdsRequest](/resources/common#lookupuserbyidsrequest)
|
||||
- [LookupUserByQueryRequest](/resources/common#lookupuserbyqueryrequest)
|
||||
- [LookupUserRequest](/resources/admin#lookupuserrequest)
|
||||
- [LookupUserResponse](/resources/admin#lookupuserresponse)
|
||||
- [MessageAckRequest](/resources/channels#messageackrequest)
|
||||
- [MessageAttachmentFlags](/resources/common#messageattachmentflags)
|
||||
- [MessageAttachmentResponse](/resources/common#messageattachmentresponse)
|
||||
- [MessageAuthorType](/resources/common#messageauthortype)
|
||||
- [MessageBaseResponseSchema](/resources/common#messagebaseresponseschema)
|
||||
- [MessageCallResponse](/resources/common#messagecallresponse)
|
||||
- [MessageContentType](/resources/common#messagecontenttype)
|
||||
- [MessageEmbedChildResponse](/resources/common#messageembedchildresponse)
|
||||
- [MessageEmbedResponse](/resources/common#messageembedresponse)
|
||||
- [MessageEmbedType](/resources/common#messageembedtype)
|
||||
- [MessageFlags](/resources/common#messageflags)
|
||||
- [MessageListResponse](/resources/users#messagelistresponse)
|
||||
- [MessageReactionResponse](/resources/common#messagereactionresponse)
|
||||
- [MessageReferenceResponse](/resources/common#messagereferenceresponse)
|
||||
- [MessageReferenceType](/resources/common#messagereferencetype)
|
||||
- [MessageReportCategoryEnum](/resources/common#messagereportcategoryenum)
|
||||
- [MessageResponseSchema](/resources/channels#messageresponseschema)
|
||||
- [MessageSearchIndexingResponse](/resources/common#messagesearchindexingresponse)
|
||||
- [MessageSearchResponse](/resources/search#messagesearchresponse)
|
||||
- [MessageSearchResultsResponse](/resources/common#messagesearchresultsresponse)
|
||||
- [MessageSearchScope](/resources/common#messagesearchscope)
|
||||
- [MessageShredRequest](/resources/admin#messageshredrequest)
|
||||
- [MessageShredResponse](/resources/admin#messageshredresponse)
|
||||
- [MessageShredStatusNotFoundResponse](/resources/common#messageshredstatusnotfoundresponse)
|
||||
- [MessageShredStatusProgressResponse](/resources/common#messageshredstatusprogressresponse)
|
||||
- [MessageShredStatusRequest](/resources/admin#messageshredstatusrequest)
|
||||
- [MessageShredStatusResponse](/resources/admin#messageshredstatusresponse)
|
||||
- [MessageSnapshotResponse](/resources/common#messagesnapshotresponse)
|
||||
- [MessageSortField](/resources/common#messagesortfield)
|
||||
- [MessageSortOrder](/resources/common#messagesortorder)
|
||||
- [MessageStickerResponse](/resources/common#messagestickerresponse)
|
||||
- [MfaBackupCodeResponse](/resources/common#mfabackupcoderesponse)
|
||||
- [MfaBackupCodesRequest](/resources/users#mfabackupcodesrequest)
|
||||
- [MfaBackupCodesResponse](/resources/users#mfabackupcodesresponse)
|
||||
- [MfaSmsRequest](/resources/auth#mfasmsrequest)
|
||||
- [MfaTicketRequest](/resources/auth#mfaticketrequest)
|
||||
- [MfaTotpRequest](/resources/auth#mfatotprequest)
|
||||
- [MutualGuildResponse](/resources/common#mutualguildresponse)
|
||||
- [MyGuildMemberUpdateRequest](/resources/guilds#myguildmemberupdaterequest)
|
||||
- [NcmecSubmissionStatusResponse](/resources/admin#ncmecsubmissionstatusresponse)
|
||||
- [NcmecSubmitResultResponse](/resources/admin#ncmecsubmitresultresponse)
|
||||
- [NodeStatsResponse](/resources/admin#nodestatsresponse)
|
||||
- [NSFWLevel](/resources/common#nsfwlevel)
|
||||
- [OAuth2AuthorizationResponse](/resources/common#oauth2authorizationresponse)
|
||||
- [OAuth2AuthorizationsListResponse](/resources/oauth2#oauth2authorizationslistresponse)
|
||||
- [OAuth2ConsentResponse](/resources/oauth2#oauth2consentresponse)
|
||||
- [OAuth2IntrospectResponse](/resources/oauth2#oauth2introspectresponse)
|
||||
- [OAuth2MeResponse](/resources/oauth2#oauth2meresponse)
|
||||
- [OAuth2RedirectURICreateType](/resources/common#oauth2redirecturicreatetype)
|
||||
- [OAuth2RedirectURIUpdateType](/resources/common#oauth2redirecturiupdatetype)
|
||||
- [OAuth2TokenResponse](/resources/oauth2#oauth2tokenresponse)
|
||||
- [OAuth2UserInfoResponse](/resources/oauth2#oauth2userinforesponse)
|
||||
- [OkResponse](/resources/reports#okresponse)
|
||||
- [PackCreateRequest](/resources/packs#packcreaterequest)
|
||||
- [PackDashboardResponse](/resources/packs#packdashboardresponse)
|
||||
- [PackInviteCreateRequest](/resources/invites#packinvitecreaterequest)
|
||||
- [PackInviteMetadataResponse](/resources/common#packinvitemetadataresponse)
|
||||
- [PackInviteResponse](/resources/common#packinviteresponse)
|
||||
- [PackSummaryResponse](/resources/packs#packsummaryresponse)
|
||||
- [PackUpdateRequest](/resources/packs#packupdaterequest)
|
||||
- [PasswordChangeCompleteRequest](/resources/users#passwordchangecompleterequest)
|
||||
- [PasswordChangeStartResponse](/resources/users#passwordchangestartresponse)
|
||||
- [PasswordChangeTicketRequest](/resources/users#passwordchangeticketrequest)
|
||||
- [PasswordChangeVerifyRequest](/resources/users#passwordchangeverifyrequest)
|
||||
- [PasswordChangeVerifyResponse](/resources/users#passwordchangeverifyresponse)
|
||||
- [PasswordType](/resources/common#passwordtype)
|
||||
- [PermissionOverwriteCreateRequest](/resources/channels#permissionoverwritecreaterequest)
|
||||
- [PhoneAddRequest](/resources/users#phoneaddrequest)
|
||||
- [PhoneNumberType](/resources/common#phonenumbertype)
|
||||
- [PhoneSendVerificationRequest](/resources/users#phonesendverificationrequest)
|
||||
- [PhoneVerifyRequest](/resources/users#phoneverifyrequest)
|
||||
- [PhoneVerifyResponse](/resources/users#phoneverifyresponse)
|
||||
- [PreloadMessagesRequest](/resources/users#preloadmessagesrequest)
|
||||
- [PreloadMessagesResponse](/resources/users#preloadmessagesresponse)
|
||||
- [PriceIdsResponse](/resources/premium#priceidsresponse)
|
||||
- [PublicUserFlags](/resources/common#publicuserflags)
|
||||
- [PurgeGuildAssetErrorSchema](/resources/common#purgeguildasseterrorschema)
|
||||
- [PurgeGuildAssetResultSchema](/resources/common#purgeguildassetresultschema)
|
||||
- [PurgeGuildAssetsRequest](/resources/admin#purgeguildassetsrequest)
|
||||
- [PurgeGuildAssetsResponseSchema](/resources/admin#purgeguildassetsresponseschema)
|
||||
- [PushSubscribeRequest](/resources/users#pushsubscriberequest)
|
||||
- [PushSubscribeResponse](/resources/users#pushsubscriberesponse)
|
||||
- [PushSubscriptionItemResponse](/resources/common#pushsubscriptionitemresponse)
|
||||
- [PushSubscriptionsListResponse](/resources/users#pushsubscriptionslistresponse)
|
||||
- [ReactionUsersListResponse](/resources/channels#reactionuserslistresponse)
|
||||
- [ReadStateAckBulkRequest](/resources/read_states#readstateackbulkrequest)
|
||||
- [RefreshSearchIndexRequest](/resources/admin#refreshsearchindexrequest)
|
||||
- [RefreshSearchIndexResponse](/resources/admin#refreshsearchindexresponse)
|
||||
- [RegisterRequest](/resources/auth#registerrequest)
|
||||
- [RelationshipNicknameUpdateRequest](/resources/users#relationshipnicknameupdaterequest)
|
||||
- [RelationshipResponse](/resources/users#relationshipresponse)
|
||||
- [RelationshipTypePutRequest](/resources/users#relationshiptypeputrequest)
|
||||
- [RelationshipTypes](/resources/common#relationshiptypes)
|
||||
- [ReloadAllGuildsResponse](/resources/admin#reloadallguildsresponse)
|
||||
- [ReloadGuildRequest](/resources/admin#reloadguildrequest)
|
||||
- [ReloadGuildsRequest](/resources/admin#reloadguildsrequest)
|
||||
- [RenderSpoilers](/resources/common#renderspoilers)
|
||||
- [ReorderConnectionsRequest](/resources/common#reorderconnectionsrequest)
|
||||
- [ReportAdminResponseSchema](/resources/admin#reportadminresponseschema)
|
||||
- [ReportGuildRequest](/resources/reports#reportguildrequest)
|
||||
- [ReportMessageRequest](/resources/reports#reportmessagerequest)
|
||||
- [ReportResponse](/resources/reports#reportresponse)
|
||||
- [ReportStatus](/resources/common#reportstatus)
|
||||
- [ReportType](/resources/common#reporttype)
|
||||
- [ReportUserRequest](/resources/reports#reportuserrequest)
|
||||
- [ReserveVisionarySlotRequest](/resources/admin#reservevisionaryslotrequest)
|
||||
- [ResetPasswordRequest](/resources/auth#resetpasswordrequest)
|
||||
- [ResolveReportRequest](/resources/admin#resolvereportrequest)
|
||||
- [ResolveReportResponse](/resources/admin#resolvereportresponse)
|
||||
- [RevokeRequestForm](/resources/oauth2#revokerequestform)
|
||||
- [RtcRegionResponse](/resources/channels#rtcregionresponse)
|
||||
- [SavedMessageEntryListResponse](/resources/users#savedmessageentrylistresponse)
|
||||
- [SavedMessageEntryResponse](/resources/common#savedmessageentryresponse)
|
||||
- [SaveMessageRequest](/resources/users#savemessagerequest)
|
||||
- [ScheduleAccountDeletionRequest](/resources/admin#scheduleaccountdeletionrequest)
|
||||
- [ScheduledMessageAllowedMentionsSchema](/resources/common#scheduledmessageallowedmentionsschema)
|
||||
- [ScheduledMessageReferenceSchema](/resources/common#scheduledmessagereferenceschema)
|
||||
- [ScheduledMessageResponseSchema](/resources/users#scheduledmessageresponseschema)
|
||||
- [SearchAuditLogsRequest](/resources/admin#searchauditlogsrequest)
|
||||
- [SearchGuildsRequest](/resources/admin#searchguildsrequest)
|
||||
- [SearchGuildsResponse](/resources/admin#searchguildsresponse)
|
||||
- [SearchReportsRequest](/resources/admin#searchreportsrequest)
|
||||
- [SearchReportsResponse](/resources/admin#searchreportsresponse)
|
||||
- [SearchUsersRequest](/resources/admin#searchusersrequest)
|
||||
- [SearchUsersResponse](/resources/admin#searchusersresponse)
|
||||
- [SendPasswordResetRequest](/resources/admin#sendpasswordresetrequest)
|
||||
- [SentryWebhook](/resources/webhooks#sentrywebhook)
|
||||
- [SetUserAclsRequest](/resources/admin#setuseraclsrequest)
|
||||
- [SetUserBotStatusRequest](/resources/admin#setuserbotstatusrequest)
|
||||
- [SetUserSystemStatusRequest](/resources/admin#setusersystemstatusrequest)
|
||||
- [SetUserTraitsRequest](/resources/admin#setusertraitsrequest)
|
||||
- [ShrinkVisionarySlotsRequest](/resources/admin#shrinkvisionaryslotsrequest)
|
||||
- [ShutdownGuildRequest](/resources/admin#shutdownguildrequest)
|
||||
- [SlackWebhookRequest](/resources/webhooks#slackwebhookrequest)
|
||||
- [SnowflakeReservationEntry](/resources/common#snowflakereservationentry)
|
||||
- [SnowflakeType](/resources/guilds#snowflaketype)
|
||||
- [SsoCompleteRequest](/resources/auth#ssocompleterequest)
|
||||
- [SsoCompleteResponse](/resources/auth#ssocompleteresponse)
|
||||
- [SsoConfigResponse](/resources/common#ssoconfigresponse)
|
||||
- [SsoStartRequest](/resources/auth#ssostartrequest)
|
||||
- [SsoStartResponse](/resources/auth#ssostartresponse)
|
||||
- [SsoStatusResponse](/resources/auth#ssostatusresponse)
|
||||
- [StickerAnimationOptions](/resources/common#stickeranimationoptions)
|
||||
- [StreamPreviewUploadBodySchema](/resources/channels#streampreviewuploadbodyschema)
|
||||
- [StreamUpdateBodySchema](/resources/channels#streamupdatebodyschema)
|
||||
- [SuccessResponse](/resources/admin#successresponse)
|
||||
- [SudoMfaMethodsResponse](/resources/users#sudomfamethodsresponse)
|
||||
- [SudoVerificationSchema](/resources/users#sudoverificationschema)
|
||||
- [SuspiciousActivityFlags](/resources/common#suspiciousactivityflags)
|
||||
- [SwapVisionarySlotsRequest](/resources/admin#swapvisionaryslotsrequest)
|
||||
- [SystemChannelFlags](/resources/common#systemchannelflags)
|
||||
- [SystemDmJobResponse](/resources/admin#systemdmjobresponse)
|
||||
- [TempBanUserRequest](/resources/admin#tempbanuserrequest)
|
||||
- [TenorCategoryTagResponse](/resources/common#tenorcategorytagresponse)
|
||||
- [TenorFeaturedResponse](/resources/common#tenorfeaturedresponse)
|
||||
- [TenorGifResponse](/resources/common#tenorgifresponse)
|
||||
- [TenorRegisterShareRequest](/resources/common#tenorregistersharerequest)
|
||||
- [TerminateSessionsRequest](/resources/admin#terminatesessionsrequest)
|
||||
- [TerminateSessionsResponse](/resources/admin#terminatesessionsresponse)
|
||||
- [ThemeCreateRequest](/resources/themes#themecreaterequest)
|
||||
- [ThemeCreateResponse](/resources/themes#themecreateresponse)
|
||||
- [TicketResponse](/resources/reports#ticketresponse)
|
||||
- [TimeFormatTypes](/resources/common#timeformattypes)
|
||||
- [TokenRequest](/resources/oauth2#tokenrequest)
|
||||
- [TransferGuildOwnershipRequest](/resources/admin#transferguildownershiprequest)
|
||||
- [TriggerGuildArchiveRequest](/resources/admin#triggerguildarchiverequest)
|
||||
- [TriggerUserArchiveRequest](/resources/admin#triggeruserarchiverequest)
|
||||
- [UnlinkPhoneRequest](/resources/admin#unlinkphonerequest)
|
||||
- [UnsignedInt64Type](/resources/common#unsignedint64type)
|
||||
- [UpdateConnectionRequest](/resources/common#updateconnectionrequest)
|
||||
- [UpdateFavoriteMemeBodySchema](/resources/saved_media#updatefavoritememebodyschema)
|
||||
- [UpdateGuildFeaturesRequest](/resources/admin#updateguildfeaturesrequest)
|
||||
- [UpdateGuildNameRequest](/resources/admin#updateguildnamerequest)
|
||||
- [UpdateGuildSettingsRequest](/resources/admin#updateguildsettingsrequest)
|
||||
- [UpdateGuildVanityRequest](/resources/admin#updateguildvanityrequest)
|
||||
- [UpdateSuspiciousActivityFlagsRequest](/resources/admin#updatesuspiciousactivityflagsrequest)
|
||||
- [UpdateUserFlagsRequest](/resources/admin#updateuserflagsrequest)
|
||||
- [UpdateVoiceRegionRequest](/resources/admin#updatevoiceregionrequest)
|
||||
- [UpdateVoiceRegionResponse](/resources/admin#updatevoiceregionresponse)
|
||||
- [UpdateVoiceServerRequest](/resources/admin#updatevoiceserverrequest)
|
||||
- [UpdateVoiceServerResponse](/resources/admin#updatevoiceserverresponse)
|
||||
- [UrlResponse](/resources/billing#urlresponse)
|
||||
- [UserAdminResponseSchema](/resources/common#useradminresponseschema)
|
||||
- [UserAuthenticatorTypes](/resources/common#userauthenticatortypes)
|
||||
- [UserContactChangeLogEntrySchema](/resources/common#usercontactchangelogentryschema)
|
||||
- [UserFlags](/resources/common#userflags)
|
||||
- [UserGuildSettingsResponse](/resources/users#userguildsettingsresponse)
|
||||
- [UserGuildSettingsUpdateRequest](/resources/users#userguildsettingsupdaterequest)
|
||||
- [UserMutationResponse](/resources/admin#usermutationresponse)
|
||||
- [UsernameSuggestionsRequest](/resources/auth#usernamesuggestionsrequest)
|
||||
- [UsernameSuggestionsResponse](/resources/auth#usernamesuggestionsresponse)
|
||||
- [UsernameType](/resources/users#usernametype)
|
||||
- [UserNoteResponse](/resources/users#usernoteresponse)
|
||||
- [UserNotesRecordResponse](/resources/users#usernotesrecordresponse)
|
||||
- [UserNoteUpdateRequest](/resources/users#usernoteupdaterequest)
|
||||
- [UserNotificationSettings](/resources/common#usernotificationsettings)
|
||||
- [UserPartialResponse](/resources/users#userpartialresponse)
|
||||
- [UserPremiumTypes](/resources/common#userpremiumtypes)
|
||||
- [UserPrivateResponse](/resources/users#userprivateresponse)
|
||||
- [UserProfileFullResponse](/resources/users#userprofilefullresponse)
|
||||
- [UserReportCategoryEnum](/resources/common#userreportcategoryenum)
|
||||
- [UserSessionResponse](/resources/common#usersessionresponse)
|
||||
- [UserSettingsResponse](/resources/users#usersettingsresponse)
|
||||
- [UserSettingsUpdateRequest](/resources/users#usersettingsupdaterequest)
|
||||
- [UserStatusType](/resources/common#userstatustype)
|
||||
- [UserTagCheckResponse](/resources/users#usertagcheckresponse)
|
||||
- [UserThemeType](/resources/common#userthemetype)
|
||||
- [UserUpdateWithVerificationRequest](/resources/users#userupdatewithverificationrequest)
|
||||
- [ValidationErrorCodeSchema](/resources/common#validationerrorcodeschema)
|
||||
- [ValidationErrorItem](/resources/common#validationerroritem)
|
||||
- [VerifyAndCreateConnectionRequest](/resources/common#verifyandcreateconnectionrequest)
|
||||
- [VerifyEmailRequest](/resources/auth#verifyemailrequest)
|
||||
- [VerifyUserEmailRequest](/resources/admin#verifyuseremailrequest)
|
||||
- [VisionarySlotOperationResponse](/resources/admin#visionaryslotoperationresponse)
|
||||
- [VisionarySlotSchema](/resources/common#visionaryslotschema)
|
||||
- [VoiceRegionAdminResponse](/resources/common#voiceregionadminresponse)
|
||||
- [VoiceRegionWithServersResponse](/resources/common#voiceregionwithserversresponse)
|
||||
- [VoiceServerAdminResponse](/resources/common#voiceserveradminresponse)
|
||||
- [WebAuthnAuthenticateRequest](/resources/auth#webauthnauthenticaterequest)
|
||||
- [WebAuthnAuthenticationOptionsResponse](/resources/auth#webauthnauthenticationoptionsresponse)
|
||||
- [WebAuthnChallengeResponse](/resources/users#webauthnchallengeresponse)
|
||||
- [WebAuthnCredentialListResponse](/resources/users#webauthncredentiallistresponse)
|
||||
- [WebAuthnCredentialResponse](/resources/common#webauthncredentialresponse)
|
||||
- [WebAuthnCredentialUpdateRequest](/resources/users#webauthncredentialupdaterequest)
|
||||
- [WebAuthnMfaRequest](/resources/auth#webauthnmfarequest)
|
||||
- [WebAuthnRegisterRequest](/resources/users#webauthnregisterrequest)
|
||||
- [WebhookCreateRequest](/resources/webhooks#webhookcreaterequest)
|
||||
- [WebhookReceivedResponse](/resources/billing#webhookreceivedresponse)
|
||||
- [WebhookResponse](/resources/webhooks#webhookresponse)
|
||||
- [WebhookTokenResponse](/resources/webhooks#webhooktokenresponse)
|
||||
- [WebhookTokenUpdateRequest](/resources/webhooks#webhooktokenupdaterequest)
|
||||
- [WebhookType](/resources/common#webhooktype)
|
||||
- [WebhookUpdateRequest](/resources/webhooks#webhookupdaterequest)
|
||||
- [WellKnownFluxerResponse](/resources/instance#wellknownfluxerresponse)
|
||||
- [AdminArchiveResponseSchemaSubjectType](#adminarchiveresponseschemasubjecttype)
|
||||
- [ListArchivesRequestSubjectType](#listarchivesrequestsubjecttype)
|
||||
- [PurgeGuildAssetResultSchemaAssetType](#purgeguildassetresultschemaassettype)
|
||||
- [SearchAuditLogsRequestSortBy](#searchauditlogsrequestsortby)
|
||||
- [SearchAuditLogsRequestSortOrder](#searchauditlogsrequestsortorder)
|
||||
- [MessageShredStatusProgressResponseStatus](#messageshredstatusprogressresponsestatus)
|
||||
- [SearchReportsRequestSortBy](#searchreportsrequestsortby)
|
||||
- [NcmecSubmissionStatusResponseStatus](#ncmecsubmissionstatusresponsestatus)
|
||||
- [RefreshSearchIndexRequestIndexType](#refreshsearchindexrequestindextype)
|
||||
- [SystemDmJobResponseStatus](#systemdmjobresponsestatus)
|
||||
- [ChannelUpdateTextRequestType](#channelupdatetextrequesttype)
|
||||
- [ChannelOverwriteRequestType](#channeloverwriterequesttype)
|
||||
- [ChannelUpdateVoiceRequestType](#channelupdatevoicerequesttype)
|
||||
- [ChannelUpdateCategoryRequestType](#channelupdatecategoryrequesttype)
|
||||
- [ChannelUpdateLinkRequestType](#channelupdatelinkrequesttype)
|
||||
- [ChannelUpdateGroupDmRequestType](#channelupdategroupdmrequesttype)
|
||||
- [MessageResponseSchemaType](#messageresponseschematype)
|
||||
- [DonationCheckoutRequestCurrency](#donationcheckoutrequestcurrency)
|
||||
- [DonationCheckoutRequestInterval](#donationcheckoutrequestinterval)
|
||||
- [GuildUpdateRequestSplashCardAlignment](#guildupdaterequestsplashcardalignment)
|
||||
- [GuildUpdateRequestMfaMethod](#guildupdaterequestmfamethod)
|
||||
- [GuildMemberSearchRequestSortBy](#guildmembersearchrequestsortby)
|
||||
- [RevokeRequestFormTokenTypeHint](#revokerequestformtokentypehint)
|
||||
- [PriceIdsResponseCurrency](#priceidsresponsecurrency)
|
||||
|
||||
135
fluxer_docs/resources/packs.mdx
Normal file
@@ -0,0 +1,135 @@
|
||||
---
|
||||
title: 'Packs'
|
||||
description: 'Packs object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="packcreaterequest"></a>
|
||||
|
||||
## PackCreateRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /packs/{pack_type}`](/api-reference/packs/create-pack)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| description? | ?string | The description of the pack |
|
||||
| name | string | The name of the pack |
|
||||
|
||||
<a id="packdashboardresponse"></a>
|
||||
|
||||
## PackDashboardResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /packs`](/api-reference/packs/list-user-packs)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| emoji | [PackDashboardResponseEmoji](#packdashboardresponseemoji) | Dashboard section for emoji packs |
|
||||
| sticker | [PackDashboardResponseEmoji](#packdashboardresponseemoji) | Dashboard section for sticker packs |
|
||||
|
||||
<a id="packinvitemetadataresponse"></a>
|
||||
|
||||
## PackInviteMetadataResponse
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| code | string | The unique invite code |
|
||||
| created_at | string (date-time) | ISO8601 timestamp of when the invite was created |
|
||||
| expires_at? | ?string (date-time) | ISO8601 timestamp of when the invite expires |
|
||||
| inviter? | ?[UserPartialResponse](#userpartialresponse) | The user who created the invite |
|
||||
| max_uses | integer (int32) | The maximum number of times this invite can be used |
|
||||
| pack | [PackInviteMetadataResponsePack](#packinvitemetadataresponsepack) | The pack this invite is for |
|
||||
| temporary | boolean | Whether the invite grants temporary access |
|
||||
| type | enum<`2`, `3`> | The type of pack invite (emoji or sticker pack) |
|
||||
| uses | integer (int32) | The number of times this invite has been used |
|
||||
|
||||
<a id="packinviteresponse"></a>
|
||||
|
||||
## PackInviteResponse
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| code | string | The unique invite code |
|
||||
| expires_at? | ?string (date-time) | ISO8601 timestamp of when the invite expires |
|
||||
| inviter? | ?[UserPartialResponse](#userpartialresponse) | The user who created the invite |
|
||||
| pack | [PackInviteMetadataResponsePack](#packinvitemetadataresponsepack) | The pack this invite is for |
|
||||
| temporary | boolean | Whether the invite grants temporary access |
|
||||
| type | enum<`2`, `3`> | The type of pack invite (emoji or sticker pack) |
|
||||
|
||||
<a id="packsummaryresponse"></a>
|
||||
|
||||
## PackSummaryResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /packs/{pack_type}`](/api-reference/packs/create-pack)
|
||||
- [`PATCH /packs/{pack_id}`](/api-reference/packs/update-pack)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| created_at | string (date-time) | ISO8601 timestamp of when the pack was created |
|
||||
| creator_id | [SnowflakeType](#snowflaketype) | The ID of the user who created the pack |
|
||||
| description | ?string | The description of the pack |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier (snowflake) for the pack |
|
||||
| installed_at? | string (date-time) | ISO8601 timestamp of when the pack was installed by the user |
|
||||
| name | string | The display name of the pack |
|
||||
| type | enum<`emoji`, `sticker`> | The type of expression pack (emoji or sticker) |
|
||||
| updated_at | string (date-time) | ISO8601 timestamp of when the pack was last updated |
|
||||
|
||||
<a id="packupdaterequest"></a>
|
||||
|
||||
## PackUpdateRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`PATCH /packs/{pack_id}`](/api-reference/packs/update-pack)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| description? | ?string | The new description of the pack |
|
||||
| name? | string | The new name of the pack |
|
||||
|
||||
<a id="stickeranimationoptions"></a>
|
||||
|
||||
## StickerAnimationOptions
|
||||
|
||||
Sticker animation preference
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `0` | Always animate stickers |
|
||||
| `1` | Animate stickers on hover/interaction |
|
||||
| `2` | Never animate stickers |
|
||||
|
||||
<a id="packdashboardresponseemoji"></a>
|
||||
|
||||
## PackDashboardResponseEmoji
|
||||
|
||||
Dashboard section for emoji packs
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| created | [PackSummaryResponse](#packsummaryresponse)[] | List of packs the user has created |
|
||||
| created_limit | integer (int32) | Maximum number of packs the user can create |
|
||||
| installed | [PackSummaryResponse](#packsummaryresponse)[] | List of packs the user has installed |
|
||||
| installed_limit | integer (int32) | Maximum number of packs the user can install |
|
||||
|
||||
<a id="packinvitemetadataresponsepack"></a>
|
||||
|
||||
## PackInviteMetadataResponsePack
|
||||
|
||||
The pack this invite is for
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| created_at | string (date-time) | ISO8601 timestamp of when the pack was created |
|
||||
| creator | [UserPartialResponse](#userpartialresponse) | |
|
||||
| creator_id | [SnowflakeType](#snowflaketype) | The ID of the user who created the pack |
|
||||
| description? | ?string | The description of the pack |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier for the pack |
|
||||
| name | string | The display name of the pack |
|
||||
| type | enum<`emoji`, `sticker`> | The type of pack (emoji or sticker) |
|
||||
| updated_at | string (date-time) | ISO8601 timestamp of when the pack was last updated |
|
||||
|
||||
41
fluxer_docs/resources/premium.mdx
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: 'Premium'
|
||||
description: 'Premium object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="priceidsresponse"></a>
|
||||
|
||||
## PriceIdsResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /premium/price-ids`](/api-reference/premium/get-stripe-price-ids)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| currency | [PriceIdsResponseCurrency](#priceidsresponsecurrency) | Currency for the prices |
|
||||
| gift_1_month? | ?[SnowflakeType](#snowflaketype) | Stripe price ID for the 1 month gift |
|
||||
| gift_1_year? | ?[SnowflakeType](#snowflaketype) | Stripe price ID for the 1 year gift |
|
||||
| monthly? | ?[SnowflakeType](#snowflaketype) | Stripe price ID for the monthly subscription |
|
||||
| yearly? | ?[SnowflakeType](#snowflaketype) | Stripe price ID for the yearly subscription |
|
||||
|
||||
<a id="visionaryslotschema"></a>
|
||||
|
||||
## VisionarySlotSchema
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| slot_index | integer (int32) | The slot index |
|
||||
| user_id | ?[SnowflakeType](#snowflaketype) \| enum<`-1`> | User ID that reserved this slot, or null if unreserved (special value -1 is also valid) |
|
||||
|
||||
<a id="priceidsresponsecurrency"></a>
|
||||
|
||||
## PriceIdsResponseCurrency
|
||||
|
||||
Currency for the prices
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `USD` | - |
|
||||
| `EUR` | - |
|
||||
|
||||
17
fluxer_docs/resources/read_states.mdx
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: 'Read states'
|
||||
description: 'Read states object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="readstateackbulkrequest"></a>
|
||||
|
||||
## ReadStateAckBulkRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /read-states/ack-bulk`](/api-reference/read-states/mark-channels-as-read)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| read_states | [DeleteMessageRequest](#deletemessagerequest)[] | Array of channel/message pairs to acknowledge |
|
||||
|
||||
196
fluxer_docs/resources/reports.mdx
Normal file
@@ -0,0 +1,196 @@
|
||||
---
|
||||
title: 'Reports'
|
||||
description: 'Reports object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="dsareportemailsendrequest"></a>
|
||||
|
||||
## DsaReportEmailSendRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /reports/dsa/email/send`](/api-reference/reports/send-dsa-report-email)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| email | [EmailType](#emailtype) | |
|
||||
|
||||
<a id="dsareportemailverifyrequest"></a>
|
||||
|
||||
## DsaReportEmailVerifyRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /reports/dsa/email/verify`](/api-reference/reports/verify-dsa-report-email)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| code | string | Verification code received via email |
|
||||
| email | [EmailType](#emailtype) | |
|
||||
|
||||
<a id="dsareportguildrequest"></a>
|
||||
|
||||
## DsaReportGuildRequest
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| additional_info? | string | Additional context or details about the report |
|
||||
| category | [GuildReportCategoryEnum](#guildreportcategoryenum) | |
|
||||
| guild_id | [SnowflakeType](#snowflaketype) | |
|
||||
| invite_code? | string | Invite code used to access the guild |
|
||||
| report_type | enum<`guild`> | Type of report |
|
||||
| reporter_country_of_residence | enum<`AT`, `BE`, `BG`, `HR`, `CY`, `CZ`, `DK`, `EE`, `FI`, `FR`, `DE`, `GR`, `HU`, `IE`, `IT`, `LV`, `LT`, `LU`, `MT`, `NL`, `PL`, `PT`, `RO`, `SK`, `SI`, `ES`, `SE`> | EU country code of the reporter residence |
|
||||
| reporter_fluxer_tag? | string | Fluxer tag of the reporter if they have an account |
|
||||
| reporter_full_legal_name | string | Full legal name of the person filing the report |
|
||||
| ticket | string | Verification ticket obtained from email verification |
|
||||
|
||||
<a id="dsareportmessagerequest"></a>
|
||||
|
||||
## DsaReportMessageRequest
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| additional_info? | string | Additional context or details about the report |
|
||||
| category | [MessageReportCategoryEnum](#messagereportcategoryenum) | |
|
||||
| message_link | string | Link to the message being reported |
|
||||
| report_type | enum<`message`> | Type of report |
|
||||
| reported_user_tag? | string | Fluxer tag of the user who sent the message |
|
||||
| reporter_country_of_residence | enum<`AT`, `BE`, `BG`, `HR`, `CY`, `CZ`, `DK`, `EE`, `FI`, `FR`, `DE`, `GR`, `HU`, `IE`, `IT`, `LV`, `LT`, `LU`, `MT`, `NL`, `PL`, `PT`, `RO`, `SK`, `SI`, `ES`, `SE`> | EU country code of the reporter residence |
|
||||
| reporter_fluxer_tag? | string | Fluxer tag of the reporter if they have an account |
|
||||
| reporter_full_legal_name | string | Full legal name of the person filing the report |
|
||||
| ticket | string | Verification ticket obtained from email verification |
|
||||
|
||||
<a id="dsareportrequest"></a>
|
||||
|
||||
## DsaReportRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /reports/dsa`](/api-reference/reports/create-dsa-report)
|
||||
|
||||
Type: [DsaReportMessageRequest](#dsareportmessagerequest) \| [DsaReportUserRequest](#dsareportuserrequest) \| [DsaReportGuildRequest](#dsareportguildrequest)
|
||||
|
||||
<a id="dsareportuserrequest"></a>
|
||||
|
||||
## DsaReportUserRequest
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| additional_info? | string | Additional context or details about the report |
|
||||
| category | [UserReportCategoryEnum](#userreportcategoryenum) | |
|
||||
| report_type | enum<`user`> | Type of report |
|
||||
| reporter_country_of_residence | enum<`AT`, `BE`, `BG`, `HR`, `CY`, `CZ`, `DK`, `EE`, `FI`, `FR`, `DE`, `GR`, `HU`, `IE`, `IT`, `LV`, `LT`, `LU`, `MT`, `NL`, `PL`, `PT`, `RO`, `SK`, `SI`, `ES`, `SE`> | EU country code of the reporter residence |
|
||||
| reporter_fluxer_tag? | string | Fluxer tag of the reporter if they have an account |
|
||||
| reporter_full_legal_name | string | Full legal name of the person filing the report |
|
||||
| ticket | string | Verification ticket obtained from email verification |
|
||||
| user_id? | [SnowflakeType](#snowflaketype) | |
|
||||
| user_tag? | string | Fluxer tag of the user being reported |
|
||||
|
||||
<a id="okresponse"></a>
|
||||
|
||||
## OkResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /reports/dsa/email/send`](/api-reference/reports/send-dsa-report-email)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| ok | boolean | Whether the operation was successful |
|
||||
|
||||
<a id="reportguildrequest"></a>
|
||||
|
||||
## ReportGuildRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /reports/guild`](/api-reference/reports/report-guild)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| additional_info? | string | Additional context or details about the report |
|
||||
| category | [GuildReportCategoryEnum](#guildreportcategoryenum) | |
|
||||
| guild_id | [SnowflakeType](#snowflaketype) | |
|
||||
|
||||
<a id="reportmessagerequest"></a>
|
||||
|
||||
## ReportMessageRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /reports/message`](/api-reference/reports/report-message)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| additional_info? | string | Additional context or details about the report |
|
||||
| category | [MessageReportCategoryEnum](#messagereportcategoryenum) | |
|
||||
| channel_id | [SnowflakeType](#snowflaketype) | |
|
||||
| message_id | [SnowflakeType](#snowflaketype) | |
|
||||
|
||||
<a id="reportresponse"></a>
|
||||
|
||||
## ReportResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /reports/dsa`](/api-reference/reports/create-dsa-report)
|
||||
- [`POST /reports/guild`](/api-reference/reports/report-guild)
|
||||
- [`POST /reports/message`](/api-reference/reports/report-message)
|
||||
- [`POST /reports/user`](/api-reference/reports/report-user)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| report_id | [SnowflakeType](#snowflaketype) | The unique identifier for this report |
|
||||
| reported_at | string | ISO 8601 timestamp when the report was submitted |
|
||||
| status | string | Current status of the report (pending, reviewed, resolved) |
|
||||
|
||||
<a id="reportstatus"></a>
|
||||
|
||||
## ReportStatus
|
||||
|
||||
The status of the report
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `0` | Report is pending review |
|
||||
| `1` | Report has been resolved |
|
||||
|
||||
<a id="reporttype"></a>
|
||||
|
||||
## ReportType
|
||||
|
||||
The type of entity being reported
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `0` | Report of a message |
|
||||
| `1` | Report of a user |
|
||||
| `2` | Report of a guild |
|
||||
|
||||
<a id="reportuserrequest"></a>
|
||||
|
||||
## ReportUserRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /reports/user`](/api-reference/reports/report-user)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| additional_info? | string | Additional context or details about the report |
|
||||
| category | [UserReportCategoryEnum](#userreportcategoryenum) | |
|
||||
| guild_id? | [SnowflakeType](#snowflaketype) | |
|
||||
| user_id | [SnowflakeType](#snowflaketype) | |
|
||||
|
||||
<a id="ticketresponse"></a>
|
||||
|
||||
## TicketResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /reports/dsa/email/verify`](/api-reference/reports/verify-dsa-report-email)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| ticket | string | A temporary ticket token for subsequent operations |
|
||||
|
||||
93
fluxer_docs/resources/saved_media.mdx
Normal file
@@ -0,0 +1,93 @@
|
||||
---
|
||||
title: 'Saved media'
|
||||
description: 'Saved media object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="createfavoritememebodyschema"></a>
|
||||
|
||||
## CreateFavoriteMemeBodySchema
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /channels/{channel_id}/messages/{message_id}/memes`](/api-reference/saved-media/create-meme-from-message)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| alt_text? | ?string | Alternative text description for accessibility |
|
||||
| attachment_id? | ?[SnowflakeType](#snowflaketype) | ID of the message attachment to save as a meme |
|
||||
| embed_index? | ?integer (int64) | Index of the message embed to save as a meme |
|
||||
| name | string | Display name for the meme |
|
||||
| tags? | ?string[] | Tags for categorizing and searching the meme |
|
||||
|
||||
<a id="createfavoritememefromurlbodyschema"></a>
|
||||
|
||||
## CreateFavoriteMemeFromUrlBodySchema
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /users/@me/memes`](/api-reference/saved-media/create-meme-from-url)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| alt_text? | ?string | Alternative text description for accessibility |
|
||||
| klipy_slug? | ?string | Klipy clip slug if the URL is from Klipy |
|
||||
| name? | ?string | Display name for the meme |
|
||||
| tags? | ?string[] | Tags for categorizing and searching the meme |
|
||||
| tenor_slug_id? | ?[SnowflakeType](#snowflaketype) | Tenor view/<slug>-<id> identifier if the URL is from Tenor |
|
||||
| url | string (uri) | URL of the image or video to save as a favorite meme |
|
||||
|
||||
<a id="favoritememelistresponse"></a>
|
||||
|
||||
## FavoriteMemeListResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /users/@me/memes`](/api-reference/saved-media/list-favorite-memes)
|
||||
|
||||
Type: [FavoriteMemeResponse](#favoritememeresponse)[]
|
||||
|
||||
<a id="favoritememeresponse"></a>
|
||||
|
||||
## FavoriteMemeResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /users/@me/memes/{meme_id}`](/api-reference/saved-media/get-favorite-meme)
|
||||
- [`POST /channels/{channel_id}/messages/{message_id}/memes`](/api-reference/saved-media/create-meme-from-message)
|
||||
- [`POST /users/@me/memes`](/api-reference/saved-media/create-meme-from-url)
|
||||
- [`PATCH /users/@me/memes/{meme_id}`](/api-reference/saved-media/update-favorite-meme)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| alt_text? | ?string | Alternative text description for accessibility |
|
||||
| attachment_id | [SnowflakeType](#snowflaketype) | ID of the attachment storing the meme |
|
||||
| content_hash? | ?string | Hash of the file content for deduplication |
|
||||
| content_type | string | MIME type of the meme file |
|
||||
| duration? | ?number | Duration of the video in seconds |
|
||||
| filename | string | Original filename of the meme |
|
||||
| height? | ?integer (int53) | Height of the image or video in pixels |
|
||||
| id | [SnowflakeType](#snowflaketype) | Unique identifier for the favorite meme |
|
||||
| is_gifv? | boolean | Whether the meme is a video converted from GIF |
|
||||
| klipy_slug? | ?string | Klipy clip slug if the meme was sourced from Klipy |
|
||||
| name | string | Display name of the meme |
|
||||
| size | number | File size in bytes |
|
||||
| tags | string[] | Tags for categorizing and searching the meme |
|
||||
| tenor_slug_id? | ?[SnowflakeType](#snowflaketype) | Tenor view/<slug>-<id> identifier if the meme was sourced from Tenor |
|
||||
| url | string | CDN URL to access the meme |
|
||||
| user_id | [SnowflakeType](#snowflaketype) | ID of the user who owns this favorite meme |
|
||||
| width? | ?integer (int53) | Width of the image or video in pixels |
|
||||
|
||||
<a id="updatefavoritememebodyschema"></a>
|
||||
|
||||
## UpdateFavoriteMemeBodySchema
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`PATCH /users/@me/memes/{meme_id}`](/api-reference/saved-media/update-favorite-meme)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| alt_text? | ?string | Alternative text description for accessibility |
|
||||
| name? | string | Display name for the meme |
|
||||
| tags? | ?string[] | New tags for categorizing and searching the meme |
|
||||
|
||||
62
fluxer_docs/resources/search.mdx
Normal file
@@ -0,0 +1,62 @@
|
||||
---
|
||||
title: 'Search'
|
||||
description: 'Search object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="globalsearchmessagesrequest"></a>
|
||||
|
||||
## GlobalSearchMessagesRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /search/messages`](/api-reference/search/search-messages)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| attachment_extension? | string[] | File extensions to filter by |
|
||||
| attachment_filename? | string[] | Attachment filenames to filter by |
|
||||
| author_id? | [SnowflakeType](#snowflaketype)[] | Author user IDs to filter by |
|
||||
| author_type? | [MessageAuthorType](#messageauthortype)[] | Author types to filter by |
|
||||
| channel_id? | [SnowflakeType](#snowflaketype)[] | Channel IDs to search in |
|
||||
| channel_ids? | [SnowflakeType](#snowflaketype)[] | Specific channel IDs to search in |
|
||||
| content? | string | Text content to search for |
|
||||
| contents? | string[] | Multiple content queries to search for |
|
||||
| context_channel_id? | [SnowflakeType](#snowflaketype) | |
|
||||
| context_guild_id? | [SnowflakeType](#snowflaketype) | |
|
||||
| embed_provider? | string[] | Embed providers to filter by |
|
||||
| embed_type? | [MessageEmbedType](#messageembedtype)[] | Embed types to filter by |
|
||||
| exact_phrases? | string[] | Exact phrases that must appear contiguously in message content |
|
||||
| exclude_attachment_extension? | string[] | File extensions to exclude |
|
||||
| exclude_attachment_filename? | string[] | Attachment filenames to exclude |
|
||||
| exclude_author_id? | [SnowflakeType](#snowflaketype)[] | Author user IDs to exclude |
|
||||
| exclude_author_type? | [MessageAuthorType](#messageauthortype)[] | Author types to exclude |
|
||||
| exclude_channel_id? | [SnowflakeType](#snowflaketype)[] | Channel IDs to exclude from search |
|
||||
| exclude_embed_provider? | string[] | Embed providers to exclude |
|
||||
| exclude_embed_type? | [MessageEmbedType](#messageembedtype)[] | Embed types to exclude |
|
||||
| exclude_has? | [MessageContentType](#messagecontenttype)[] | Content types the message must not have |
|
||||
| exclude_link_hostname? | string[] | Link hostnames to exclude |
|
||||
| exclude_mentions? | [SnowflakeType](#snowflaketype)[] | User IDs that must not be mentioned |
|
||||
| has? | [MessageContentType](#messagecontenttype)[] | Content types the message must have |
|
||||
| hits_per_page? | integer (int32) | Number of results per page (1-25) |
|
||||
| include_nsfw? | boolean | Whether to include NSFW channel results |
|
||||
| link_hostname? | string[] | Link hostnames to filter by |
|
||||
| max_id? | [SnowflakeType](#snowflaketype) | |
|
||||
| mention_everyone? | boolean | Filter by whether message mentions everyone |
|
||||
| mentions? | [SnowflakeType](#snowflaketype)[] | User IDs that must be mentioned |
|
||||
| min_id? | [SnowflakeType](#snowflaketype) | |
|
||||
| page? | integer (int64) | Page number for pagination |
|
||||
| pinned? | boolean | Filter by pinned status |
|
||||
| scope? | [MessageSearchScope](#messagesearchscope) | |
|
||||
| sort_by? | [MessageSortField](#messagesortfield) | |
|
||||
| sort_order? | [MessageSortOrder](#messagesortorder) | |
|
||||
|
||||
<a id="messagesearchresponse"></a>
|
||||
|
||||
## MessageSearchResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /search/messages`](/api-reference/search/search-messages)
|
||||
|
||||
Type: [MessageSearchResultsResponse](#messagesearchresultsresponse) \| [MessageSearchIndexingResponse](#messagesearchindexingresponse)
|
||||
|
||||
29
fluxer_docs/resources/themes.mdx
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
title: 'Themes'
|
||||
description: 'Themes object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="themecreaterequest"></a>
|
||||
|
||||
## ThemeCreateRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /users/@me/themes`](/api-reference/themes/create-theme)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| css | string | CSS text to store and share |
|
||||
|
||||
<a id="themecreateresponse"></a>
|
||||
|
||||
## ThemeCreateResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /users/@me/themes`](/api-reference/themes/create-theme)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier for the created theme |
|
||||
|
||||
1468
fluxer_docs/resources/users.mdx
Normal file
325
fluxer_docs/resources/webhooks.mdx
Normal file
@@ -0,0 +1,325 @@
|
||||
---
|
||||
title: 'Webhooks'
|
||||
description: 'Webhooks object schemas from the Fluxer API.'
|
||||
---
|
||||
|
||||
<a id="githubwebhook"></a>
|
||||
|
||||
## GitHubWebhook
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /webhooks/{webhook_id}/{token}/github`](/api-reference/webhooks/execute-github-webhook)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| action? | ?string | |
|
||||
| answer? | ?[GitHubWebhookAnswer](#githubwebhookanswer) | |
|
||||
| check_run? | ?[GitHubWebhookCheckRun](#githubwebhookcheckrun) | |
|
||||
| check_suite? | ?[GitHubWebhookCheckSuite](#githubwebhookchecksuite) | |
|
||||
| comment? | ?[GitHubWebhookAnswer](#githubwebhookanswer) | |
|
||||
| commits? | ?[GitHubWebhookCommitsItem](#githubwebhookcommitsitem)[] | |
|
||||
| compare? | ?string | |
|
||||
| discussion? | ?[GitHubWebhookDiscussion](#githubwebhookdiscussion) | |
|
||||
| forced? | ?boolean | |
|
||||
| forkee? | ?[GitHubWebhookForkee](#githubwebhookforkee) | |
|
||||
| head_commit? | ?[GitHubWebhookCommitsItem](#githubwebhookcommitsitem) | |
|
||||
| issue? | ?[GitHubWebhookIssue](#githubwebhookissue) | |
|
||||
| member? | ?[GitHubWebhookMember](#githubwebhookmember) | |
|
||||
| pull_request? | ?[GitHubWebhookIssue](#githubwebhookissue) | |
|
||||
| ref? | ?string | |
|
||||
| ref_type? | ?string | |
|
||||
| release? | ?[GitHubWebhookRelease](#githubwebhookrelease) | |
|
||||
| repository? | ?[GitHubWebhookForkee](#githubwebhookforkee) | |
|
||||
| review? | ?[GitHubWebhookReview](#githubwebhookreview) | |
|
||||
| sender | [GitHubWebhookMember](#githubwebhookmember) | |
|
||||
|
||||
<a id="sentrywebhook"></a>
|
||||
|
||||
## SentryWebhook
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /webhooks/{webhook_id}/{token}/sentry`](/api-reference/webhooks/execute-sentry-webhook)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| action? | ?string | |
|
||||
| actor? | ?[SentryWebhookActor](#sentrywebhookactor) | |
|
||||
| data? | ?[SentryWebhookData](#sentrywebhookdata) | |
|
||||
| installation? | ?[SentryWebhookInstallation](#sentrywebhookinstallation) | |
|
||||
|
||||
<a id="slackwebhookrequest"></a>
|
||||
|
||||
## SlackWebhookRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /webhooks/{webhook_id}/{token}/slack`](/api-reference/webhooks/execute-slack-webhook)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| attachments? | [SlackWebhookRequestAttachmentsItem](#slackwebhookrequestattachmentsitem)[] | Array of attachment objects |
|
||||
| icon_url? | string | Override the default icon of the webhook |
|
||||
| text? | string | Main text content of the message |
|
||||
| username? | string | Override the default username of the webhook |
|
||||
|
||||
<a id="webhookcreaterequest"></a>
|
||||
|
||||
## WebhookCreateRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`POST /channels/{channel_id}/webhooks`](/api-reference/webhooks/create-webhook)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| avatar? | ?[Base64ImageType](#base64imagetype) | The avatar image as a base64-encoded data URI |
|
||||
| name | string | The name of the webhook |
|
||||
|
||||
<a id="webhookresponse"></a>
|
||||
|
||||
## WebhookResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /channels/{channel_id}/webhooks`](/api-reference/webhooks/list-channel-webhooks)
|
||||
- [`GET /guilds/{guild_id}/webhooks`](/api-reference/webhooks/list-guild-webhooks)
|
||||
- [`GET /webhooks/{webhook_id}`](/api-reference/webhooks/get-webhook)
|
||||
- [`POST /channels/{channel_id}/webhooks`](/api-reference/webhooks/create-webhook)
|
||||
- [`PATCH /webhooks/{webhook_id}`](/api-reference/webhooks/update-webhook)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| avatar? | ?string | The hash of the webhook avatar image |
|
||||
| channel_id | [SnowflakeType](#snowflaketype) | The ID of the channel this webhook posts to |
|
||||
| guild_id | [SnowflakeType](#snowflaketype) | The ID of the guild this webhook belongs to |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier (snowflake) for the webhook |
|
||||
| name | string | The display name of the webhook |
|
||||
| token | string | The secure token used to execute the webhook |
|
||||
| user | [UserPartialResponse](#userpartialresponse) | |
|
||||
|
||||
<a id="webhooktokenresponse"></a>
|
||||
|
||||
## WebhookTokenResponse
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`GET /webhooks/{webhook_id}/{token}`](/api-reference/webhooks/get-webhook-with-token)
|
||||
- [`PATCH /webhooks/{webhook_id}/{token}`](/api-reference/webhooks/update-webhook-with-token)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| avatar? | ?string | The hash of the webhook avatar image |
|
||||
| channel_id | [SnowflakeType](#snowflaketype) | The ID of the channel this webhook posts to |
|
||||
| guild_id | [SnowflakeType](#snowflaketype) | The ID of the guild this webhook belongs to |
|
||||
| id | [SnowflakeType](#snowflaketype) | The unique identifier (snowflake) for the webhook |
|
||||
| name | string | The display name of the webhook |
|
||||
| token | string | The secure token used to execute the webhook |
|
||||
|
||||
<a id="webhooktokenupdaterequest"></a>
|
||||
|
||||
## WebhookTokenUpdateRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`PATCH /webhooks/{webhook_id}/{token}`](/api-reference/webhooks/update-webhook-with-token)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| avatar? | ?[Base64ImageType](#base64imagetype) | The new avatar image as a base64-encoded data URI |
|
||||
| name? | string | The new name of the webhook |
|
||||
|
||||
<a id="webhooktype"></a>
|
||||
|
||||
## WebhookType
|
||||
|
||||
The type of webhook
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| `1` | Incoming webhook |
|
||||
| `2` | Channel follower webhook |
|
||||
|
||||
<a id="webhookupdaterequest"></a>
|
||||
|
||||
## WebhookUpdateRequest
|
||||
|
||||
**Related endpoints**
|
||||
|
||||
- [`PATCH /webhooks/{webhook_id}`](/api-reference/webhooks/update-webhook)
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| avatar? | ?[Base64ImageType](#base64imagetype) | The new avatar image as a base64-encoded data URI |
|
||||
| channel_id? | [SnowflakeType](#snowflaketype) | |
|
||||
| name? | string | The new name of the webhook |
|
||||
|
||||
<a id="githubwebhookanswer"></a>
|
||||
|
||||
## GitHubWebhookAnswer
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| body | string | |
|
||||
| commit_id? | ?[SnowflakeType](#snowflaketype) | |
|
||||
| html_url | string | |
|
||||
| id | [Int64Type](#int64type) | |
|
||||
| user | [GitHubWebhookMember](#githubwebhookmember) | |
|
||||
|
||||
<a id="githubwebhookcheckrun"></a>
|
||||
|
||||
## GitHubWebhookCheckRun
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| check_suite | [GitHubWebhookCheckSuite](#githubwebhookchecksuite) | |
|
||||
| conclusion? | ?string | |
|
||||
| details_url? | ?string | |
|
||||
| html_url | string | |
|
||||
| name | string | |
|
||||
| output? | ?[GitHubWebhookCheckRunOutput](#githubwebhookcheckrunoutput) | |
|
||||
| pull_requests? | ?[GitHubWebhookCheckRunPullRequestsItem](#githubwebhookcheckrunpullrequestsitem)[] | |
|
||||
|
||||
<a id="githubwebhookchecksuite"></a>
|
||||
|
||||
## GitHubWebhookCheckSuite
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| app | [GuildEmojiUpdateRequest](#guildemojiupdaterequest) | |
|
||||
| conclusion? | ?string | |
|
||||
| head_branch? | ?string | |
|
||||
| head_sha | string | |
|
||||
| pull_requests? | ?[GitHubWebhookCheckRunPullRequestsItem](#githubwebhookcheckrunpullrequestsitem)[] | |
|
||||
|
||||
<a id="githubwebhookcommitsitem"></a>
|
||||
|
||||
## GitHubWebhookCommitsItem
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| author | [GitHubWebhookCommitsItemAuthor](#githubwebhookcommitsitemauthor) | |
|
||||
| id | [SnowflakeType](#snowflaketype) | |
|
||||
| message | string | |
|
||||
| url | string | |
|
||||
|
||||
<a id="githubwebhookdiscussion"></a>
|
||||
|
||||
## GitHubWebhookDiscussion
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| answer_html_url? | ?string | |
|
||||
| body? | ?string | |
|
||||
| html_url | string | |
|
||||
| number | [Int32Type](#int32type) | |
|
||||
| title | string | |
|
||||
| user | [GitHubWebhookMember](#githubwebhookmember) | |
|
||||
|
||||
<a id="githubwebhookforkee"></a>
|
||||
|
||||
## GitHubWebhookForkee
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| full_name | string | |
|
||||
| html_url | string | |
|
||||
| id | [Int32Type](#int32type) | |
|
||||
| name | string | |
|
||||
|
||||
<a id="githubwebhookissue"></a>
|
||||
|
||||
## GitHubWebhookIssue
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| body? | ?string | |
|
||||
| html_url | string | |
|
||||
| id | [Int64Type](#int64type) | |
|
||||
| number | [Int32Type](#int32type) | |
|
||||
| title | string | |
|
||||
| user | [GitHubWebhookMember](#githubwebhookmember) | |
|
||||
|
||||
<a id="githubwebhookmember"></a>
|
||||
|
||||
## GitHubWebhookMember
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| avatar_url | string | |
|
||||
| html_url | string | |
|
||||
| id | [Int32Type](#int32type) | |
|
||||
| login | string | |
|
||||
|
||||
<a id="githubwebhookrelease"></a>
|
||||
|
||||
## GitHubWebhookRelease
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| body? | ?string | |
|
||||
| html_url | string | |
|
||||
| id | [Int32Type](#int32type) | |
|
||||
| tag_name | string | |
|
||||
|
||||
<a id="githubwebhookreview"></a>
|
||||
|
||||
## GitHubWebhookReview
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| body? | ?string | |
|
||||
| html_url | string | |
|
||||
| state | string | |
|
||||
| user | [GitHubWebhookMember](#githubwebhookmember) | |
|
||||
|
||||
<a id="sentrywebhookactor"></a>
|
||||
|
||||
## SentryWebhookActor
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| id | [SnowflakeType](#snowflaketype) | |
|
||||
| name | string | |
|
||||
| type | string | |
|
||||
|
||||
<a id="sentrywebhookdata"></a>
|
||||
|
||||
## SentryWebhookData
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| issue | [SentryWebhookDataIssue](#sentrywebhookdataissue) | |
|
||||
|
||||
<a id="sentrywebhookinstallation"></a>
|
||||
|
||||
## SentryWebhookInstallation
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| uuid | string | |
|
||||
|
||||
<a id="slackwebhookrequestattachmentsitem"></a>
|
||||
|
||||
## SlackWebhookRequestAttachmentsItem
|
||||
|
||||
Array of attachment objects
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| author_icon? | string | URL for the author icon image |
|
||||
| author_link? | string | URL to link from the author name |
|
||||
| author_name? | string | Name of the author |
|
||||
| color? | string | Colour of the attachment sidebar (hex code or preset) |
|
||||
| fallback? | string | Fallback text for notifications |
|
||||
| fields? | [SlackWebhookRequestAttachmentsItemFieldsItem](#slackwebhookrequestattachmentsitemfieldsitem)[] | Array of field objects |
|
||||
| footer? | string | Footer text displayed at the bottom |
|
||||
| image_url? | string | URL of the main image to display |
|
||||
| pretext? | string | Text that appears above the attachment block |
|
||||
| text? | string | Main text content of the attachment |
|
||||
| thumb_url? | string | URL of a thumbnail image |
|
||||
| title? | string | Title of the attachment |
|
||||
| title_link? | string | URL to link from the title |
|
||||
| ts? | integer (int64) | Unix timestamp for the attachment footer |
|
||||
|
||||
25
fluxer_docs/schemas/events/AUTH_SESSION_CHANGE.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"name": "AUTH_SESSION_CHANGE",
|
||||
"description": "Authentication session has changed. Sent when the user's token is rotated due to a security-sensitive operation like password change.",
|
||||
"scope": "presence",
|
||||
"dispatchedBy": ["PATCH /users/@me (when password is changed)"],
|
||||
"payload": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"old_auth_session_id_hash": {
|
||||
"type": "string",
|
||||
"description": "Base64url-encoded hash of the old session ID"
|
||||
},
|
||||
"new_auth_session_id_hash": {
|
||||
"type": "string",
|
||||
"description": "Base64url-encoded hash of the new session ID"
|
||||
},
|
||||
"new_token": {
|
||||
"type": "string",
|
||||
"description": "The new authentication token"
|
||||
}
|
||||
},
|
||||
"required": ["old_auth_session_id_hash", "new_auth_session_id_hash", "new_token"]
|
||||
}
|
||||
}
|
||||
36
fluxer_docs/schemas/events/CALL_CREATE.json
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"name": "CALL_CREATE",
|
||||
"description": "Sent when a DM or group DM call is started.",
|
||||
"scope": "presence",
|
||||
"dispatchedBy": ["gateway"],
|
||||
"note": "Dispatched to all recipients of the DM/group DM when a call is initiated",
|
||||
"payload": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"channel_id": {
|
||||
"type": "string",
|
||||
"description": "Channel ID of the call"
|
||||
},
|
||||
"message_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the call message"
|
||||
},
|
||||
"region": {
|
||||
"type": ["string", "null"],
|
||||
"description": "Voice region for the call"
|
||||
},
|
||||
"ringing": {
|
||||
"type": "array",
|
||||
"items": {"type": "string"},
|
||||
"description": "Array of user IDs currently being rung"
|
||||
},
|
||||
"voice_states": {
|
||||
"type": "array",
|
||||
"items": {"$ref": "VoiceStateResponse"},
|
||||
"description": "Voice states of current participants in the call"
|
||||
}
|
||||
},
|
||||
"required": ["channel_id", "message_id", "ringing", "voice_states"]
|
||||
}
|
||||
}
|
||||
18
fluxer_docs/schemas/events/CALL_DELETE.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"name": "CALL_DELETE",
|
||||
"description": "Sent when a DM or group DM call ends.",
|
||||
"scope": "presence",
|
||||
"dispatchedBy": ["gateway"],
|
||||
"note": "Dispatched to all recipients when the call terminates (all participants leave or timeout)",
|
||||
"payload": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"channel_id": {
|
||||
"type": "string",
|
||||
"description": "Channel ID of the ended call"
|
||||
}
|
||||
},
|
||||
"required": ["channel_id"]
|
||||
}
|
||||
}
|
||||
36
fluxer_docs/schemas/events/CALL_UPDATE.json
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"name": "CALL_UPDATE",
|
||||
"description": "Sent when a DM or group DM call is updated (participants join/leave, ringing state changes).",
|
||||
"scope": "presence",
|
||||
"dispatchedBy": ["gateway"],
|
||||
"note": "Dispatched to all recipients when call state changes",
|
||||
"payload": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"channel_id": {
|
||||
"type": "string",
|
||||
"description": "Channel ID of the call"
|
||||
},
|
||||
"message_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the call message"
|
||||
},
|
||||
"region": {
|
||||
"type": ["string", "null"],
|
||||
"description": "Voice region for the call"
|
||||
},
|
||||
"ringing": {
|
||||
"type": "array",
|
||||
"items": {"type": "string"},
|
||||
"description": "Array of user IDs currently being rung"
|
||||
},
|
||||
"voice_states": {
|
||||
"type": "array",
|
||||
"items": {"$ref": "VoiceStateResponse"},
|
||||
"description": "Voice states of current participants in the call"
|
||||
}
|
||||
},
|
||||
"required": ["channel_id", "message_id", "ringing", "voice_states"]
|
||||
}
|
||||
}
|
||||
17
fluxer_docs/schemas/events/CHANNEL_CREATE.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"name": "CHANNEL_CREATE",
|
||||
"description": "Sent when a new channel is created or opened for a user.",
|
||||
"scope": "channel",
|
||||
"scopeNote": "Guild channels dispatch to guild scope; DMs dispatch to presence scope for each recipient",
|
||||
"dispatchedBy": [
|
||||
"POST /guilds/:guild_id/channels",
|
||||
"POST /users/@me/channels",
|
||||
"PUT /channels/:channel_id/recipients/:user_id",
|
||||
"POST /invites/:invite_code (group DM invites)"
|
||||
],
|
||||
"payload": {
|
||||
"$ref": "ChannelResponse",
|
||||
"description": "The created or opened channel object"
|
||||
}
|
||||
}
|
||||
12
fluxer_docs/schemas/events/CHANNEL_DELETE.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"name": "CHANNEL_DELETE",
|
||||
"description": "Sent when a channel is deleted or closed for a user.",
|
||||
"scope": "channel",
|
||||
"scopeNote": "Guild channels dispatch to guild scope; DMs dispatch to presence scope for each recipient",
|
||||
"dispatchedBy": ["DELETE /channels/:channel_id", "DELETE /channels/:channel_id/recipients/:user_id"],
|
||||
"payload": {
|
||||
"$ref": "ChannelResponse",
|
||||
"description": "The deleted or closed channel object"
|
||||
}
|
||||
}
|
||||
22
fluxer_docs/schemas/events/CHANNEL_PINS_ACK.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"name": "CHANNEL_PINS_ACK",
|
||||
"description": "Sent when channel pins were acknowledged by the user.",
|
||||
"scope": "presence",
|
||||
"dispatchedBy": ["POST /channels/:channel_id/pins/ack"],
|
||||
"payload": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"channel_id": {
|
||||
"type": "string",
|
||||
"description": "Channel ID"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "Timestamp of acknowledgement"
|
||||
}
|
||||
},
|
||||
"required": ["channel_id", "timestamp"]
|
||||
}
|
||||
}
|
||||
23
fluxer_docs/schemas/events/CHANNEL_PINS_UPDATE.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"name": "CHANNEL_PINS_UPDATE",
|
||||
"description": "Sent when a message is pinned or unpinned.",
|
||||
"scope": "channel",
|
||||
"scopeNote": "Guild channels dispatch to guild scope; DMs dispatch to presence scope",
|
||||
"dispatchedBy": ["PUT /channels/:channel_id/pins/:message_id", "DELETE /channels/:channel_id/pins/:message_id"],
|
||||
"payload": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"channel_id": {
|
||||
"type": "string",
|
||||
"description": "Channel ID"
|
||||
},
|
||||
"last_pin_timestamp": {
|
||||
"type": ["string", "null"],
|
||||
"format": "date-time",
|
||||
"description": "ISO 8601 timestamp of the last pinned message, or null if no pins remain"
|
||||
}
|
||||
},
|
||||
"required": ["channel_id", "last_pin_timestamp"]
|
||||
}
|
||||
}
|
||||
21
fluxer_docs/schemas/events/CHANNEL_RECIPIENT_ADD.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"name": "CHANNEL_RECIPIENT_ADD",
|
||||
"description": "Sent when a user is added to a group DM. Dispatched to existing members only (the new user receives CHANNEL_CREATE instead).",
|
||||
"scope": "presence",
|
||||
"dispatchedBy": ["PUT /channels/:channel_id/recipients/:user_id", "POST /invites/:invite_code (group DM invites)"],
|
||||
"payload": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"channel_id": {
|
||||
"type": "string",
|
||||
"description": "Channel ID of the group DM"
|
||||
},
|
||||
"user": {
|
||||
"$ref": "UserPartialResponse",
|
||||
"description": "The user that was added"
|
||||
}
|
||||
},
|
||||
"required": ["channel_id", "user"]
|
||||
}
|
||||
}
|
||||
21
fluxer_docs/schemas/events/CHANNEL_RECIPIENT_REMOVE.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"name": "CHANNEL_RECIPIENT_REMOVE",
|
||||
"description": "Sent when a user is removed from a group DM.",
|
||||
"scope": "presence",
|
||||
"dispatchedBy": ["DELETE /channels/:channel_id/recipients/:user_id"],
|
||||
"payload": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"channel_id": {
|
||||
"type": "string",
|
||||
"description": "Channel ID of the group DM"
|
||||
},
|
||||
"user": {
|
||||
"$ref": "UserPartialResponse",
|
||||
"description": "The user that was removed"
|
||||
}
|
||||
},
|
||||
"required": ["channel_id", "user"]
|
||||
}
|
||||
}
|
||||
16
fluxer_docs/schemas/events/CHANNEL_UPDATE.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"name": "CHANNEL_UPDATE",
|
||||
"description": "Sent when a channel is updated.",
|
||||
"scope": "channel",
|
||||
"scopeNote": "Guild channels dispatch to guild scope; DMs dispatch to presence scope",
|
||||
"dispatchedBy": [
|
||||
"PATCH /channels/:channel_id",
|
||||
"PUT /channels/:channel_id/permissions/:overwrite_id",
|
||||
"DELETE /channels/:channel_id/permissions/:overwrite_id"
|
||||
],
|
||||
"payload": {
|
||||
"$ref": "ChannelResponse",
|
||||
"description": "The updated channel object"
|
||||
}
|
||||
}
|
||||
18
fluxer_docs/schemas/events/CHANNEL_UPDATE_BULK.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"name": "CHANNEL_UPDATE_BULK",
|
||||
"description": "Sent when multiple channels are updated (e.g. reordering).",
|
||||
"scope": "guild",
|
||||
"dispatchedBy": ["PATCH /guilds/:guild_id/channels"],
|
||||
"payload": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"channels": {
|
||||
"type": "array",
|
||||
"items": {"$ref": "ChannelResponse"},
|
||||
"description": "Array of updated channels (filtered by user permissions)"
|
||||
}
|
||||
},
|
||||
"required": ["channels"]
|
||||
}
|
||||
}
|
||||
11
fluxer_docs/schemas/events/FAVORITE_MEME_CREATE.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"name": "FAVORITE_MEME_CREATE",
|
||||
"description": "A favourite meme was added to the user's collection.",
|
||||
"scope": "presence",
|
||||
"dispatchedBy": ["POST /users/@me/memes", "POST /channels/:channel_id/messages/:message_id/memes"],
|
||||
"payload": {
|
||||
"$ref": "FavoriteMemeResponse",
|
||||
"description": "The created favourite meme"
|
||||
}
|
||||
}
|
||||
17
fluxer_docs/schemas/events/FAVORITE_MEME_DELETE.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"name": "FAVORITE_MEME_DELETE",
|
||||
"description": "A favourite meme was deleted from the user's collection.",
|
||||
"scope": "presence",
|
||||
"dispatchedBy": ["DELETE /users/@me/memes/:meme_id"],
|
||||
"payload": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"meme_id": {
|
||||
"type": "string",
|
||||
"description": "ID of the deleted favourite meme"
|
||||
}
|
||||
},
|
||||
"required": ["meme_id"]
|
||||
}
|
||||
}
|
||||