cronback_api_model/admin/
api_keys.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3#[cfg(feature = "validation")]
4use validator::Validate;
5
6#[derive(Serialize, Deserialize, Debug)]
7#[cfg_attr(feature = "validation", derive(Validate))]
8#[serde(deny_unknown_fields)]
9pub struct CreateAPIkeyRequest {
10    #[cfg_attr(
11        feature = "validation",
12        validate(length(
13            min = 2,
14            max = 30,
15            message = "name must be between 2 and 30 characters"
16        ))
17    )]
18    pub key_name: String,
19    #[serde(flatten)]
20    pub metadata: APIKeyMetaData,
21}
22
23#[derive(Serialize, Deserialize)]
24pub struct CreateAPIKeyResponse {
25    pub key: String,
26}
27
28#[derive(Serialize, Deserialize)]
29pub struct ApiKey {
30    pub id: String,
31    pub name: String,
32    pub created_at: DateTime<Utc>,
33    #[serde(flatten)]
34    pub metadata: APIKeyMetaData,
35}
36
37#[derive(Debug, Serialize, Deserialize, Default)]
38#[serde(deny_unknown_fields)]
39pub struct APIKeyMetaData {
40    pub creator_user_id: Option<String>,
41}