Replace APIRole with schema

This commit is contained in:
Rory&
2026-06-13 20:37:26 +02:00
parent 6995aa7f74
commit 42406c1838
5 changed files with 63 additions and 4 deletions
Binary file not shown.
Binary file not shown.
@@ -119,7 +119,7 @@ router.patch(
permission: "MANAGE_ROLES",
responses: {
200: {
body: "APIRoleArray",
body: "RoleListResponse",
},
400: {
body: "APIErrorResponse",
+61
View File
@@ -1,3 +1,44 @@
/*
Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
Copyright (C) 2026 Spacebar and Spacebar Contributors
This program 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.
This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { Snowflake } from "../../Identifiers";
export interface RoleResponse {
id: Snowflake;
name: string;
description: string | null;
// @deprecated
color: number;
colors: RoleColors;
hoist: boolean;
icon?: string | null;
unicode_emoji?: string | null;
position: number;
// @format number
permissions: string;
managed: boolean;
mentionable: boolean;
flags?: number;
tags?: RoleTags; // unused currently
}
export type RoleListResponse = RoleResponse[];
export class RoleColors {
primary_color: number;
secondary_color: number | undefined; // only used for "holographic" and "gradient" styles
@@ -11,3 +52,23 @@ export class RoleColors {
};
}
}
export class RoleTags {
bot_id?: Snowflake;
integration_id?: Snowflake;
subscription_listing_id?: Snowflake;
// ??? https://github.com/discord-userdoccers/discord-userdoccers/issues/576 - in other words, types are currently unknown
premium_subscriber?: boolean | null;
available_for_purchase?: boolean | null;
guild_connections?: boolean | null;
toJSON(): RoleTags {
return {
...this,
// "forward compatibility"
premium_subscriber: this.premium_subscriber ? null : undefined,
available_for_purchase: this.available_for_purchase ? null : undefined,
guild_connections: this.subscription_listing_id ? null : undefined,
};
}
}
+1 -3
View File
@@ -20,8 +20,7 @@
import { GeneralConfiguration, LimitsConfiguration } from "../../util/config/types";
import { DmChannelDTO } from "../../util/dtos";
// TODO: remove entity imports
import { Application, BackupCode, Categories, Channel, Guild, Invite, Member, Message, Role, Template, Webhook } from "@spacebar/database";
import { GuildVoiceRegion } from "./GuildVoiceRegionsResponse";
import { Application, BackupCode, Categories, Channel, Guild, Invite, Member, Message, Template, Webhook } from "@spacebar/database";
import { GuildCreateResponse, PrivateUser, PublicMember, PublicUser } from "@spacebar/schemas";
// TODO: remove this entire file!
@@ -54,7 +53,6 @@ export interface APIGuildWithJoinedAt extends GuildCreateResponse {
joined_at: string;
}
export type APIRoleArray = Role[];
export type APITemplateArray = Template[];
export type APILimitsConfiguration = LimitsConfiguration;