2025-05-16 06:23:48 +00:00
|
|
|
|
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!
|
2025-06-30 18:25:26 +00:00
|
|
|
|
email: String
|
|
|
|
|
name: String
|
|
|
|
|
slug: String
|
2025-05-16 06:23:48 +00:00
|
|
|
|
roles: [String!]
|
2025-05-21 07:35:27 +00:00
|
|
|
|
community: Int
|
2025-05-16 06:23:48 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Role {
|
|
|
|
|
id: String!
|
|
|
|
|
name: String!
|
|
|
|
|
description: String
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Тип для пагинированного ответа пользователей
|
|
|
|
|
type AdminUserListResponse {
|
2025-06-30 18:25:26 +00:00
|
|
|
|
authors: [AdminUserInfo!]!
|
2025-05-16 06:23:48 +00:00
|
|
|
|
total: Int!
|
|
|
|
|
page: Int!
|
|
|
|
|
perPage: Int!
|
|
|
|
|
totalPages: Int!
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-21 07:35:27 +00:00
|
|
|
|
# Общий ответ на операцию с данными об успехе и ошибке
|
|
|
|
|
type OperationResult {
|
|
|
|
|
success: Boolean!
|
|
|
|
|
error: String
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-28 10:47:08 +00:00
|
|
|
|
# Типы для управления публикациями (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
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-30 19:19:46 +00:00
|
|
|
|
# Тип для отображения приглашения в админ-панели
|
|
|
|
|
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!
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-16 06:23:48 +00:00
|
|
|
|
extend type Query {
|
|
|
|
|
getEnvVariables: [EnvSection!]!
|
|
|
|
|
# Запросы для управления пользователями
|
|
|
|
|
adminGetUsers(limit: Int, offset: Int, search: String): AdminUserListResponse!
|
|
|
|
|
adminGetRoles: [Role!]!
|
2025-06-28 10:47:08 +00:00
|
|
|
|
# Запросы для управления публикациями
|
|
|
|
|
adminGetShouts(limit: Int, offset: Int, search: String, status: String): AdminShoutListResponse!
|
2025-06-30 19:19:46 +00:00
|
|
|
|
# Запросы для управления приглашениями
|
|
|
|
|
adminGetInvites(limit: Int, offset: Int, search: String, status: String): AdminInviteListResponse!
|
2025-05-16 06:23:48 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extend type Mutation {
|
|
|
|
|
updateEnvVariable(key: String!, value: String!): Boolean!
|
|
|
|
|
updateEnvVariables(variables: [EnvVariableInput!]!): Boolean!
|
2025-06-01 23:56:11 +00:00
|
|
|
|
|
2025-05-16 06:23:48 +00:00
|
|
|
|
# Мутации для управления пользователями
|
2025-05-21 07:35:27 +00:00
|
|
|
|
adminUpdateUser(user: AdminUserUpdateInput!): OperationResult!
|
2025-06-28 10:47:08 +00:00
|
|
|
|
# Мутации для управления публикациями
|
|
|
|
|
adminUpdateShout(shout: AdminShoutUpdateInput!): OperationResult!
|
|
|
|
|
adminDeleteShout(id: Int!): OperationResult!
|
|
|
|
|
adminRestoreShout(id: Int!): OperationResult!
|
2025-06-30 19:19:46 +00:00
|
|
|
|
# Мутации для управления приглашениями
|
|
|
|
|
adminCreateInvite(invite: AdminInviteUpdateInput!): OperationResult!
|
|
|
|
|
adminUpdateInvite(invite: AdminInviteUpdateInput!): OperationResult!
|
|
|
|
|
adminDeleteInvite(inviter_id: Int!, author_id: Int!, shout_id: Int!): OperationResult!
|
2025-06-01 23:56:11 +00:00
|
|
|
|
}
|