293 lines
7.1 KiB
GraphQL
293 lines
7.1 KiB
GraphQL
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!
|
||
}
|