cognite/dto/iam/
session.rs1use std::fmt::Display;
2
3use serde::{Deserialize, Serialize};
4use serde_with::skip_serializing_none;
5
6use crate::{to_query, IntoParams, SetCursor};
7
8#[derive(Serialize, Deserialize, Clone, Copy, Debug)]
9#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
10pub enum SessionStatus {
12 Ready,
14 Active,
16 Cancelled,
18 Revoked,
20 AccessLost,
22}
23
24impl Display for SessionStatus {
25 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
26 match self {
27 Self::Ready => write!(f, "READY"),
28 Self::Active => write!(f, "ACTIVE"),
29 Self::Cancelled => write!(f, "CANCELLED"),
30 Self::Revoked => write!(f, "REVOKED"),
31 Self::AccessLost => write!(f, "ACCESS_LOST"),
32 }
33 }
34}
35
36#[derive(Clone, Debug, Default)]
37pub struct SessionQuery {
39 pub status: Option<SessionStatus>,
41 pub cursor: Option<String>,
43 pub limit: Option<u32>,
45}
46
47impl SetCursor for SessionQuery {
48 fn set_cursor(&mut self, cursor: Option<String>) {
49 self.cursor = cursor;
50 }
51}
52
53impl IntoParams for SessionQuery {
54 fn into_params(self) -> Vec<(String, String)> {
55 let mut params = vec![];
56 to_query("status", &self.status, &mut params);
57 to_query("cursor", &self.cursor, &mut params);
58 to_query("limit", &self.limit, &mut params);
59 params
60 }
61}
62
63#[skip_serializing_none]
64#[derive(Serialize, Deserialize, Clone)]
65#[serde(rename_all = "camelCase")]
66pub struct Session {
68 pub id: i64,
70 pub r#type: Option<String>,
72 pub status: SessionStatus,
74 pub creation_time: Option<i64>,
76 pub expiration_time: Option<i64>,
78 pub nonce: Option<String>,
80 pub client_id: Option<String>,
82}
83
84#[derive(Serialize, Deserialize, Clone)]
85#[serde(untagged, rename_all_fields = "camelCase")]
86pub enum AddSession {
88 ClientCredentials {
90 client_id: String,
92 client_secret: String,
94 },
95 TokenExchange {
97 token_exchange: bool,
99 },
100}