botx_api/api/v3/stickers/sticker_packs_list/
models.rs

1use std::collections::HashMap;
2
3use chrono::{DateTime, Utc};
4use serde::{Serialize, Deserialize};
5use uuid::Uuid;
6
7#[derive(Debug, Default, Clone, Builder)]
8#[builder(setter(into, prefix = "with", strip_option))]
9pub struct StickerPacksListRequest {
10    /// Уникальный идентификатор создателя набора(ов) стикеров
11    #[builder(default)]
12    pub user_huid: Option<Uuid>,
13
14    /// Максимальное количество наборов в списке
15    #[builder(default)]
16    pub limit: Option<u32>,
17
18    /// Base64 строка с мета информацией для перемещения по списку. Генерируется на стороне сервера. Содержится в ответе на каждый запрос в объекте pagination (см. пример успешного ответа).
19    #[builder(default)]
20    pub after: Option<String>,
21}
22
23#[derive(Debug, Serialize, Deserialize, Clone)]
24pub struct StickerPacksListResponse {
25    /// Результат запроса списка наборов стикеров
26    pub result: StickerPacksListResponseResult,
27}
28
29#[derive(Debug, Serialize, Deserialize, Clone)]
30pub struct StickerPacksListResponseResult {
31    /// Наборы стикеров из текущей запрошенной части коллекции (пагинация ответа)
32    pub packs: Vec<StickerPackWithStickerCount>,
33    /// Информация о пагинации
34    pub pagination: StickerPacksListPagination,
35}
36
37#[derive(Debug, Serialize, Deserialize, Clone)]
38pub struct StickerPackWithStickerCount {
39    /// id наборе стикеров
40    pub id: Uuid,
41    /// Название наборе стикеров
42    pub name: String,
43    /// Признак публично доступного наборе
44    pub public: bool,
45    /// Url для превью наборе
46    pub preview: Option<String>,
47    /// Стикеры в наборе
48    pub stickers_count: u32,
49    /// Порядок отображения стикеров
50    pub stickers_order: Vec<Uuid>,
51    /// Время создания набора
52    pub inserted_at: DateTime<Utc>,
53    /// Время последнего обновления набора
54    pub updated_at: DateTime<Utc>,
55    /// Время удаления набора
56    pub deleted_at: Option<DateTime<Utc>>,
57}
58
59#[derive(Debug, Serialize, Deserialize, Clone)]
60pub struct StickerPacksListPagination {
61    /// Токен для итерации по наборам стикеров (пагинация ответа)
62    pub after: Option<String>,
63}
64
65#[derive(Debug, Serialize, Deserialize, Clone)]
66pub struct StickerPacksListError {
67    /// Нет фиксированного ответа об ошибке. Складируем все данные сюда
68    #[serde(flatten)]
69    pub data: HashMap<String, String>,
70}