architect_api/auth/
mod.rs1use crate::UserId;
2use chrono::{DateTime, Utc};
3use derive::grpc;
4use schemars::JsonSchema;
5use serde::{Deserialize, Serialize};
6
7pub mod grants;
8pub mod jwt;
9pub mod user_id;
10
11pub use grants::Grants;
12
13#[grpc(package = "json.architect")]
17#[grpc(service = "Auth", name = "create_jwt", response = "CreateJwtResponse")]
18#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
19pub struct CreateJwtRequest {
20 pub api_key: String,
21 pub api_secret: String,
22 #[serde(default, skip_serializing_if = "Option::is_none")]
23 pub grants: Option<Grants>,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
27pub struct CreateJwtResponse {
28 pub jwt: String,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
32pub struct AuthInfoRequest {}
33
34#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
35pub struct AuthInfoResponse {
36 pub user_id: Option<UserId>,
37 pub original_user_id: Option<UserId>,
38}
39
40#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
41pub struct LicenseInfoRequest {}
42
43#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
44pub struct LicenseInfoResponse {
45 pub subject: String,
46 pub pubkey: String,
48 pub not_before: DateTime<Utc>,
49 pub not_after: DateTime<Utc>,
50}