core/schema/admin.graphql
2025-07-03 00:20:10 +03:00

293 lines
7.1 KiB
GraphQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

type EnvVariable {
key: String!
value: String!
description: String
type: String!
isSecret: Boolean
}
type EnvSection {
name: String!
description: String
variables: [EnvVariable!]!
}
input EnvVariableInput {
key: String!
value: String!
type: String!
}
# Типы для управления пользователями
type AdminUserInfo {
id: Int!
email: String
name: String
slug: String
roles: [String!]
created_at: Int
last_seen: Int
}
input AdminUserUpdateInput {
id: Int!
email: String
name: String
slug: String
roles: [String!]
community: Int
}
type Role {
id: String!
name: String!
description: String
}
# Тип для пагинированного ответа пользователей
type AdminUserListResponse {
authors: [AdminUserInfo!]!
total: Int!
page: Int!
perPage: Int!
totalPages: Int!
}
# Общий ответ на операцию с данными об успехе и ошибке
type OperationResult {
success: Boolean!
error: String
}
# Типы для управления публикациями (Shout)
type AdminShoutInfo {
id: Int!
title: String!
slug: String!
body: String!
lead: String
subtitle: String
layout: String!
lang: String!
cover: String
cover_caption: String
media: [MediaItem]
seo: String
created_at: Int!
updated_at: Int
published_at: Int
featured_at: Int
deleted_at: Int
created_by: Author!
updated_by: Author
deleted_by: Author
community: Community!
authors: [Author]
topics: [Topic]
version_of: Int
draft: Int
stat: Stat
}
# Тип для пагинированного ответа публикаций
type AdminShoutListResponse {
shouts: [AdminShoutInfo!]!
total: Int!
page: Int!
perPage: Int!
totalPages: Int!
}
input AdminShoutUpdateInput {
id: Int!
title: String
body: String
lead: String
subtitle: String
cover: String
cover_caption: String
media: [MediaItemInput]
seo: String
published_at: Int
featured_at: Int
deleted_at: Int
}
# Тип для отображения приглашения в админ-панели
type AdminInviteInfo {
inviter_id: Int!
author_id: Int!
shout_id: Int!
status: InviteStatus!
inviter: Author!
author: Author!
shout: AdminShoutInfo!
created_at: Int
}
# Тип для пагинированного ответа приглашений
type AdminInviteListResponse {
invites: [AdminInviteInfo!]!
total: Int!
page: Int!
perPage: Int!
totalPages: Int!
}
input AdminInviteUpdateInput {
inviter_id: Int!
author_id: Int!
shout_id: Int!
status: InviteStatus!
}
# Входной тип для идентификации приглашения при пакетном удалении
input AdminInviteIdInput {
inviter_id: Int!
author_id: Int!
shout_id: Int!
}
# Типы для управления ролями в сообществах
type CommunityMember {
id: Int!
name: String
email: String
slug: String
roles: [String!]!
}
type CommunityMembersResponse {
members: [CommunityMember!]!
total: Int!
community_id: Int!
}
# Роли пользователя в сообществе
type UserCommunityRoles {
author_id: Int!
community_id: Int!
roles: [String!]!
}
type RoleOperationResult {
success: Boolean!
error: String
author_id: Int
role_id: String
community_id: Int
roles: [String!]
removed: Boolean
}
# Результат обновления ролей пользователя в сообществе
type CommunityRoleUpdateResult {
success: Boolean!
error: String
author_id: Int!
community_id: Int!
roles: [String!]!
}
type CommunityRoleSettings {
community_id: Int!
default_roles: [String!]!
available_roles: [String!]!
error: String
}
type CommunityRoleSettingsUpdateResult {
success: Boolean!
error: String
community_id: Int!
default_roles: [String!]
available_roles: [String!]
}
# Ввод для создания произвольной роли
input CustomRoleInput {
id: String!
name: String!
description: String
icon: String
community_id: Int!
}
# Результат создания роли
type CustomRoleResult {
success: Boolean!
error: String
role: Role
}
extend type Query {
getEnvVariables: [EnvSection!]!
# Запросы для управления пользователями
adminGetUsers(limit: Int, offset: Int, search: String): AdminUserListResponse!
adminGetRoles(community: Int): [Role!]
# Запросы для управления ролями в сообществах
adminGetUserCommunityRoles(author_id: Int!, community_id: Int!): UserCommunityRoles!
adminGetCommunityMembers(community_id: Int!, limit: Int, offset: Int): CommunityMembersResponse!
adminGetCommunityRoleSettings(community_id: Int!): CommunityRoleSettings!
# Запросы для управления публикациями
adminGetShouts(
limit: Int
offset: Int
search: String
status: String
community: Int
): AdminShoutListResponse!
# Запросы для управления приглашениями
adminGetInvites(
limit: Int
offset: Int
search: String
status: String
): AdminInviteListResponse!
# Запросы для управления топиками
adminGetTopics(community_id: Int!): [Topic!]!
}
extend type Mutation {
# Admin mutations для управления переменными окружения
updateEnvVariable(variable: EnvVariableInput!): OperationResult!
updateEnvVariables(variables: [EnvVariableInput!]!): OperationResult!
# Admin mutations для управления пользователями
adminUpdateUser(user: AdminUserUpdateInput!): OperationResult!
adminDeleteUser(id: Int!): OperationResult!
# Mutations для управления ролями в сообществах
adminUpdateUserCommunityRoles(
author_id: Int!,
community_id: Int!,
roles: [String!]!
): CommunityRoleUpdateResult!
# Admin mutations для управления публикациями
adminUpdateShout(shout: AdminShoutUpdateInput!): OperationResult!
adminDeleteShout(id: Int!): OperationResult!
adminRestoreShout(id: Int!): OperationResult!
# Admin mutations для управления приглашениями
adminUpdateInvite(invite: AdminInviteUpdateInput!): OperationResult!
adminDeleteInvite(
inviter_id: Int!
author_id: Int!
shout_id: Int!
): OperationResult!
adminDeleteInvitesBatch(invites: [AdminInviteIdInput!]!): OperationResult!
# Управление ролями пользователей в сообществах
adminSetUserCommunityRoles(author_id: Int!, community_id: Int!, roles: [String!]!): RoleOperationResult!
adminAddUserToRole(author_id: Int!, role_id: String!, community_id: Int!): RoleOperationResult!
adminRemoveUserFromRole(author_id: Int!, role_id: String!, community_id: Int!): RoleOperationResult!
# Управление настройками ролей сообщества
adminUpdateCommunityRoleSettings(community_id: Int!, default_roles: [String!]!, available_roles: [String!]!): CommunityRoleSettingsUpdateResult!
# Создание и удаление произвольных ролей
adminCreateCustomRole(role: CustomRoleInput!): CustomRoleResult!
adminDeleteCustomRole(role_id: String!, community_id: Int!): OperationResult!
}