mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-07 19:22:14 +09:00
docs: remove duplicated statements from the reference (#2594)
This commit is contained in:
@@ -214,7 +214,7 @@ A value can be blocked with no row of its own, as a single address covered by a
|
||||
|
||||
## Blocklist entry creation object
|
||||
|
||||
The body of [Add blocklist entry](#add-blocklist-entry) is a union resolved by the `list_type` path segment. The field that has the value differs per blocklist, and two of the nine take an array, so one request can add up to 1000 avatar hashes or profile substrings. Supplying a field the selected blocklist does not accept is not an error. Fluxer strips the unrecognised key.
|
||||
The body of [Add blocklist entry](#add-blocklist-entry) is a union resolved by the `list_type` path segment. The field that has the value differs per blocklist, and two of the nine take an array, so one request can add up to 1000 avatar hashes or profile substrings.
|
||||
|
||||
### Value field
|
||||
|
||||
@@ -269,7 +269,7 @@ Each field is a string, except `hashes` and `substrings`, which are `array[strin
|
||||
|
||||
Returns one [blocklist](#blocklist-object) object for every blocklist this instance maintains. Requires any one of the nine `check` permissions.
|
||||
|
||||
The response is identical for every Admin and does not change when entries are added or removed.
|
||||
The response is identical for every Admin.
|
||||
|
||||
### Response body
|
||||
|
||||
|
||||
@@ -142,8 +142,6 @@ The `task` discriminator selects one of these structures. Every ID array has an
|
||||
|
||||
<sup>1</sup> A full queue rejects the job, which surfaces as `INTERNAL_SERVER_ERROR`
|
||||
|
||||
The 200 confirms that the job was queued. [Get job](/admin-api/jobs/#get-job) reports whether its mutations completed.
|
||||
|
||||
### Side effects
|
||||
|
||||
This operation writes no Admin audit entry. It records one [Jobs](/admin-api/jobs/) ledger row naming the acting Admin as the requester and storing the audit reason, then enqueues the worker task. When the ledger row cannot be written, Fluxer returns 500 `INTERNAL_SERVER_ERROR` and enqueues nothing.
|
||||
|
||||
@@ -225,7 +225,7 @@ A node that does not answer within 5 seconds contributes no entries, and the req
|
||||
|
||||
<RouteHeader method="GET" path="/v1/admin/gateway/voice-state-counts" />
|
||||
|
||||
Returns the [voice state count](#voice-state-count-object) object, grouped by voice region and by voice server. Requires `gateway:memory_stats`.
|
||||
Returns the [voice state count](#voice-state-count-object) object. Requires `gateway:memory_stats`.
|
||||
|
||||
### Response
|
||||
|
||||
|
||||
@@ -232,8 +232,6 @@ Community, direct message, premium and gating policy for the whole deployment.
|
||||
| mirror | Resolve premium access from the account's own entitlement and premium flags |
|
||||
| everyone | Grant premium access to every account on a self-hosted deployment |
|
||||
|
||||
Changing this value reloads the resolved limit configuration across every node.
|
||||
|
||||
## Deferred phone gate object
|
||||
|
||||
A rule that imposes phone verification in a configured window of hours after registration.
|
||||
|
||||
@@ -145,7 +145,7 @@ A lane is a consumer group with its own concurrency, acknowledgement deadline, a
|
||||
|
||||
## Background job task types
|
||||
|
||||
`task_type` is the registered worker task name. Every registered task is listed here with its lane, and a task that is not listed is not registered.
|
||||
`task_type` is the registered worker task name. Every registered task is listed here with its lane.
|
||||
|
||||
- `realtime` runs `handleMentions` and `handleMentionChunk`.
|
||||
- `unfurl` runs `extractEmbeds`.
|
||||
|
||||
@@ -260,7 +260,7 @@ Returns a page of [Admin report](#admin-report-object) objects without message c
|
||||
|
||||
The operation has two branches. Supplying `q`, `report_type`, `category`, `reporter_id`, `reported_user_id`, `reported_guild_id`, `reported_channel_id`, `guild_context_id`, or `resolved_by_admin_id` searches the report index and returns `total`, `offset`, and `limit` beside the page. Supplying none of them lists by status alone and returns only `reports`.
|
||||
|
||||
The branches default `status` differently. The status-only branch defaults to PENDING, so a request with no query string returns pending reports only. The search branch applies no status filter when `status` is omitted. `sort_by` and `sort_order` reach the search branch only. The status-only branch always orders by `reported_at` descending.
|
||||
The status-only branch defaults to PENDING, so a request with no query string returns pending reports only. The search branch applies no status filter when `status` is omitted. `sort_by` and `sort_order` reach the search branch only. The status-only branch always orders by `reported_at` descending.
|
||||
|
||||
An instance with no search backend returns 403 `FEATURE_TEMPORARILY_DISABLED` on both branches.
|
||||
|
||||
|
||||
@@ -76,8 +76,6 @@ Fluxer resolves an inbound payload in this order.
|
||||
A client that receives an unknown opcode SHOULD log it and ignore the frame. It MUST NOT close or reconnect solely because the server used an opcode newer than this registry.
|
||||
:::
|
||||
|
||||
See [Client commands](/gateway/commands/) for field tables, validation bounds, examples, and results.
|
||||
|
||||
## Close codes
|
||||
|
||||
| Code | Name | Meaning |
|
||||
|
||||
@@ -43,7 +43,7 @@ The pair of [type](#connection-types) and `id` identifies a connection. Both val
|
||||
|
||||
<sup>5</sup> A newly created connection receives the number of connections the account already held, and [Update connection](#update-connection) and [Reorder connections](#reorder-connections) rewrite it
|
||||
|
||||
A `domain` connection is identified by the submitted domain, which equals `name`. A `bsky` connection is identified by the account's decentralised identifier while `name` is the current handle, so the connection survives an upstream rename.
|
||||
A `bsky` connection is identified by the account's decentralised identifier while `name` is the current handle, so the connection survives an upstream rename.
|
||||
|
||||
## Connection types
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ description: Personal entrance sound library, per-scope selections, upload valid
|
||||
|
||||
import RouteHeader from '@/components/RouteHeader.astro';
|
||||
|
||||
An entrance sound is a short audio clip an account plays while it is connected to a voice channel. An account uploads a clip once into its own library, then assigns it to a scope: globally, in guild voice channels, in private calls, or in one named guild. Playback publishes no media. [Voice](/voice/) defines voice state and placement.
|
||||
An entrance sound is a short audio clip an account plays while it is connected to a voice channel. An account uploads a clip once into its own library, then assigns it to a scope: globally, in guild voice channels, in private calls, or in one named guild. [Voice](/voice/) defines voice state and placement.
|
||||
|
||||
Every route on this page is user-only, requires no permission, and acts on the caller's own library.
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ Fluxer appends no query string, so a client appends the [connection parameters](
|
||||
[Identify](/gateway/commands/#identify) accepts a `shard` pair whose `shard_count` element is from 1 through 16,384 under the [sharding](/gateway/overview/#sharding) contract, whatever `shards` reports. A bot session whose shard is assigned more than 2,500 guilds closes with `4011`, and the bot must shard further. A user session is never checked against the guild ceiling.
|
||||
|
||||
:::note[The response is currently static]
|
||||
Fluxer resolves only `url` from deployment configuration. `shards` and `session_start_limit` are fixed values that do not track the bot's guild count. Starting a session decrements neither value.
|
||||
Fluxer resolves only `url` from deployment configuration. `shards` and `session_start_limit` are fixed values that do not track the bot's guild count.
|
||||
:::
|
||||
|
||||
## Session start limit object
|
||||
|
||||
@@ -6,7 +6,7 @@ description: Guild audit log entries, their action registry, and the audit reaso
|
||||
|
||||
import RouteHeader from '@/components/RouteHeader.astro';
|
||||
|
||||
An audit log entry records one change made to a guild and the account that made it. It has a numeric action type, the ID of the thing changed, an option map, and a list of before-and-after values. Only [List guild audit logs](#list-guild-audit-logs) and its [Admin API counterpart](/admin-api/guilds/#list-guild-audit-logs) read them.
|
||||
An audit log entry records one change made to a guild and the account that made it. Only [List guild audit logs](#list-guild-audit-logs) and its [Admin API counterpart](/admin-api/guilds/#list-guild-audit-logs) read them.
|
||||
|
||||
## Audit log reason
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ A larger decimal string returns 400 `INVALID_FORM_BODY` with the code `INTEGER_O
|
||||
|
||||
An undefined bit never fails the authority comparison described by [Create guild channel](#create-guild-channel). It is stored as supplied and echoed back by every later read of the channel.
|
||||
|
||||
A denied bit is never compared against the caller's own permissions. A bit set in both masks resolves to an allow during [permission computation](/http-api/permissions/#permission-computation).
|
||||
A bit set in both masks resolves to an allow during [permission computation](/http-api/permissions/#permission-computation).
|
||||
|
||||
### Example
|
||||
|
||||
|
||||
@@ -161,7 +161,7 @@ A target that is a current member also loses that membership. The guild member c
|
||||
|
||||
A ban does not preserve an active communication timeout for a later rejoin, and [Remove guild member](/http-api/guild-members/#remove-guild-member) does. The banned account loses its guild nickname, guild avatar hash, guild banner hash, biography, pronouns, accent colour, and role set. Its read states and guild settings stay in place.
|
||||
|
||||
From that point Fluxer refuses a join attempt by the banned account. The address and email matches described under the [guild ban object](#guild-ban-object) apply as well. A ban therefore restricts more than one account when an address or an email is shared.
|
||||
From that point Fluxer refuses a join attempt by the banned account. The address and email matches described under the [guild ban object](#guild-ban-object) apply as well.
|
||||
|
||||
### Rate limit
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ An invite is a code that admits an account into a guild or a group direct messag
|
||||
|
||||
## Invite object
|
||||
|
||||
An invite object describes one code and the target it admits into. The `type` selects the representation. A guild invite has the guild it admits into and that guild's online count, and a group direct message invite lists the group's current recipients in its partial channel.
|
||||
An invite object describes one code and the target it admits into. The `type` selects the representation.
|
||||
|
||||
### Structure
|
||||
|
||||
|
||||
@@ -205,8 +205,6 @@ Fetches an absolute media URL, stores a durable Fluxer copy, and returns the cre
|
||||
|
||||
The stored filename is the last path segment of `url` after percent-decoding. Fluxer appends an extension inferred from the resolved content type when that segment has no dot, then normalises the result so whitespace becomes `_` and every character outside letters, digits, combining marks, `_`, `.`, and `-` is dropped. A URL path with no last segment yields `media.{extension}`. Where the segment normalises to nothing, or to only dots and underscores, the filename is `unnamed`. The extension is `bin` when the content type maps to none.
|
||||
|
||||
The stored `gif_provider` is always the configured provider's own name, so new provider GIFs are sourced from KLIPY even when the request names another provider.
|
||||
|
||||
Fluxer fetches the asset and resolves its metadata before it stores anything. A URL that resolves to no usable media fails with 400 `MEDIA_METADATA_ERROR`. When the request resolves to a provider GIF, the provider's canonical share URL is unfurled and the video content hash it reports replaces the fetched hash for [deduplication](#deduplication).
|
||||
|
||||
### Response
|
||||
|
||||
@@ -440,7 +440,7 @@ Sets the member list position of one or more roles and returns 204 with an empty
|
||||
- The caller needs [hierarchy authority](#role-hierarchy) over every named role.
|
||||
- The everyone role cannot receive a hoist position.
|
||||
|
||||
A hoist position orders the separately displayed member list groups and is independent of the permission hierarchy. A role with no hoist position is ordered by its hierarchy `position` instead. The operation holds a guild-wide lock, so a concurrent hoist position write on the same guild returns 423 `GENERAL_ERROR`.
|
||||
A hoist position orders the separately displayed member list groups and is independent of the permission hierarchy. The operation holds a guild-wide lock, so a concurrent hoist position write on the same guild returns 423 `GENERAL_ERROR`.
|
||||
|
||||
### Path parameters
|
||||
|
||||
|
||||
@@ -248,7 +248,7 @@ Every field is optional, though the default `current` scope requires a context.
|
||||
|
||||
A `current` guild context rejects a requested channel outside that guild with 400 and the field code [ALL_CHANNELS_MUST_BELONG_TO_GUILD](/http-api/errors/). It rejects a channel inside the guild that the caller cannot read with 403 `MISSING_PERMISSIONS`. Every other scope rejects a requested channel its resolved set does not already contain with 403 `MISSING_PERMISSIONS`. Use `exclude_channel_id` to remove a channel.
|
||||
|
||||
Fluxer compares `attachment_extension` without lowercasing it, so an uppercase value never matches. `include_nsfw` gates which channels a resolved scope keeps, and a single channel context ignores it.
|
||||
Fluxer compares `attachment_extension` without lowercasing it, so an uppercase value never matches. `include_nsfw` gates which channels a resolved scope keeps.
|
||||
|
||||
:::caution[One stale hit re-reads the whole result set]
|
||||
The operation walks the set from the first page to skip stale hits, so a deep offset page costs proportionally more and returns no cursor.
|
||||
|
||||
@@ -93,7 +93,7 @@ The object has the identifier and nothing else.
|
||||
|
||||
Fluxer stores the UTF-8 encoding of the submitted document with the content type `text/css; charset=utf-8`. The identifier addresses the document by the time the caller receives it.
|
||||
|
||||
Nothing Fluxer stores links a theme to the account that created it. The [Media Proxy](/media-proxy/overview/) serves the stored document from `/themes/{id}.css`, and that route accepts no credential.
|
||||
Nothing Fluxer stores links a theme to the account that created it. The [Media Proxy](/media-proxy/overview/) serves the stored document from `/themes/{id}.css`.
|
||||
|
||||
:::danger[Theme CSS is public and permanent]
|
||||
The identifier is the only thing guarding a stored document, and the read route is unauthenticated. The HTTP API replaces or deletes no stored theme. A caller MUST NOT put a credential, a token, or any other secret in a submitted document.
|
||||
|
||||
@@ -19,7 +19,7 @@ Every route on this page takes a user session token or a bot token. An OAuth2 be
|
||||
|
||||
## Partial user object
|
||||
|
||||
The public account representation embedded by messages, relationships, guild members, and applications. It is the only representation returned to a caller other than the account owner.
|
||||
The public account representation embedded by messages, relationships, guild members, and applications.
|
||||
|
||||
### Structure
|
||||
|
||||
|
||||
@@ -357,7 +357,7 @@ On completion the system account sends the caller a direct message in the accoun
|
||||
|
||||
Schedules deletion of every message the caller has ever sent. Returns 204 with an empty body. Emits a [User Update](/gateway/events/#user-update) Gateway event.
|
||||
|
||||
The request requires [sudo mode](/http-api/users/mfa/#sudo-mode). [Delete current user's messages](#delete-current-users-messages) is the immediate counterpart and takes a filter. This form takes none and waits a day, so the caller can change their mind.
|
||||
The request requires [sudo mode](/http-api/users/mfa/#sudo-mode). [Delete current user's messages](#delete-current-users-messages) is the immediate counterpart and takes a filter. This form takes none and waits a day.
|
||||
|
||||
Calling the operation again replaces the pending schedule. The account holds at most one pending deletion, reported by the [pending bulk message deletion object](/http-api/users/#pending-bulk-message-deletion-object) on the [user object](/http-api/users/#user-object).
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@ One issued download URL and its stated expiry.
|
||||
|
||||
<sup>2</sup> Exactly seven days after issuance, even when the archive's own deadline falls earlier
|
||||
|
||||
Each response mints a URL, and a later call invalidates no earlier one. A URL pointing at [Download data harvest archive](#download-data-harvest-archive) still stops resolving at the archive's own deadline, so its stated expiry can outlast the point at which it stops working.
|
||||
A URL pointing at [Download data harvest archive](#download-data-harvest-archive) still stops resolving at the archive's own deadline, so its stated expiry can outlast the point at which it stops working.
|
||||
|
||||
:::note[An issued URL has its own seven day validity]
|
||||
A presigned object storage URL, the default form, is never rechecked against the harvest record, so one issued shortly before the deadline keeps working past it. The signed token form rechecks the deadline.
|
||||
|
||||
@@ -465,7 +465,7 @@ Every one of them requires the bounced marker. An account without it is rejected
|
||||
|
||||
The flow also requires the account to hold no verified address, which is the state a bounce leaves. [Apply email change](#apply-email-change) marks an address verified without clearing the bounced marker. An account that took the ordinary flow after its bounce has both states, gets `ORIGINAL_EMAIL_MUST_BE_VERIFIED_FIRST` here, and changes its address through the ordinary flow.
|
||||
|
||||
[Ticket and code contract](#ticket-and-code-contract) governs its codes, cooldown, and new address send control. The verification step writes the address and clears the marker in one call.
|
||||
[Ticket and code contract](#ticket-and-code-contract) governs its codes, cooldown, and new address send control.
|
||||
|
||||
## Request replacement email for bounced address
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ A refusal returns 400 `MAX_FRIENDS` with the applied value in a top-level `max_r
|
||||
|
||||
Returns every [relationship](#relationship-object) object the caller holds, covering friendships, blocks, and pending requests in both directions.
|
||||
|
||||
The operation is not paged, and the whole set comes back in one response. The order is not dependable. `friend_shares_voice_activity` is meaningful only in this response, and every other operation reports it as true.
|
||||
The operation is not paged, and the whole set comes back in one response. The order is not dependable.
|
||||
|
||||
### Response
|
||||
|
||||
|
||||
@@ -191,4 +191,4 @@ When `download` resolves to true and the served media type has a canonical exten
|
||||
The attachment, image asset, and signed external routes rasterise SVG to WebP, so a browser does not execute the document in the Media Proxy origin.
|
||||
:::
|
||||
|
||||
On a non-transforming attachment read, only an `mp` endpoint rasterises SVG, and that path always uses lossless WebP. A transforming request uses the `format` and `quality` it was given, and an image asset path defaults to `high`. A `static` mode endpoint serves the original bytes.
|
||||
On a non-transforming attachment read, an `mp` endpoint rasterises SVG to lossless WebP. A transforming request uses the `format` and `quality` it was given, and an image asset path defaults to `high`. A `static` mode endpoint serves the original bytes.
|
||||
|
||||
@@ -132,7 +132,7 @@ Encoder effort defaults to 2 for animated output or `low` quality and 4 otherwis
|
||||
|
||||
An owner-and-hash asset whose hash begins with `a_` requests animated output by default, and a bare hash requests static output by default. The prefix is stripped from the storage key, so both spellings read the same stored object.
|
||||
|
||||
The `animated` parameter overrides that default in both directions. It is read whenever the name is present and is true only for case-insensitive `true` or the exact value `1`, so `animated=false` forces static output even for an `a_` hash. Omitting the name keeps the route default.
|
||||
The `animated` parameter overrides that default in both directions. It is read whenever the name is present, so `animated=false` forces static output even for an `a_` hash. Omitting the name keeps the route default.
|
||||
|
||||
Fluxer issues emoji and sticker paths without an `a_` prefix, so those requests default to static output and need `animated=true` for animation. An attachment or signed external request also defaults to static output.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user