149 lines
4.1 KiB
Rust
149 lines
4.1 KiB
Rust
use std::collections::BTreeMap;
|
|
|
|
use remora_domain::OpaqueId;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
use crate::{DateTimeDto, NullableDto};
|
|
|
|
#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(rename_all = "snake_case")]
|
|
pub enum SourceCredentialKindDto {
|
|
BasicAuth,
|
|
BearerToken,
|
|
HttpHeaders,
|
|
ObjectStore,
|
|
HuggingFace,
|
|
}
|
|
|
|
#[derive(Clone, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct BasicAuthMaterialDto {
|
|
pub username: String,
|
|
pub password: String,
|
|
}
|
|
|
|
#[derive(Clone, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct TokenMaterialDto {
|
|
pub token: String,
|
|
}
|
|
|
|
#[derive(Clone, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct HttpHeadersMaterialDto {
|
|
pub headers: BTreeMap<String, String>,
|
|
}
|
|
|
|
#[derive(Clone, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct ObjectStoreCredentialMaterialDto {
|
|
pub access_key_id: String,
|
|
pub secret_access_key: String,
|
|
#[serde(
|
|
default,
|
|
deserialize_with = "crate::dto::optional_non_null",
|
|
skip_serializing_if = "Option::is_none"
|
|
)]
|
|
pub session_token: Option<String>,
|
|
}
|
|
|
|
#[derive(Clone, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(untagged)]
|
|
pub enum CredentialMaterialDto {
|
|
BasicAuth(BasicAuthMaterialDto),
|
|
Token(TokenMaterialDto),
|
|
HttpHeaders(HttpHeadersMaterialDto),
|
|
ObjectStore(ObjectStoreCredentialMaterialDto),
|
|
}
|
|
|
|
#[derive(Clone, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(tag = "kind", rename_all = "snake_case")]
|
|
pub enum SourceCredentialCreateDto {
|
|
BasicAuth(BasicAuthCredentialCreateDto),
|
|
BearerToken(BearerTokenCredentialCreateDto),
|
|
HttpHeaders(HttpHeadersCredentialCreateDto),
|
|
ObjectStore(ObjectStoreCredentialCreateDto),
|
|
HuggingFace(HuggingFaceCredentialCreateDto),
|
|
}
|
|
|
|
#[derive(Clone, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct BasicAuthCredentialCreateDto {
|
|
pub label: String,
|
|
pub material: BasicAuthMaterialDto,
|
|
}
|
|
|
|
#[derive(Clone, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct BearerTokenCredentialCreateDto {
|
|
pub label: String,
|
|
pub material: TokenMaterialDto,
|
|
}
|
|
|
|
#[derive(Clone, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct HttpHeadersCredentialCreateDto {
|
|
pub label: String,
|
|
pub material: HttpHeadersMaterialDto,
|
|
}
|
|
|
|
#[derive(Clone, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct ObjectStoreCredentialCreateDto {
|
|
pub label: String,
|
|
pub material: ObjectStoreCredentialMaterialDto,
|
|
}
|
|
|
|
#[derive(Clone, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct HuggingFaceCredentialCreateDto {
|
|
pub label: String,
|
|
pub material: TokenMaterialDto,
|
|
}
|
|
|
|
#[derive(Clone, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct SourceCredentialRotateDto {
|
|
pub material: CredentialMaterialDto,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct SourceCredentialVersionDto {
|
|
pub id: OpaqueId,
|
|
pub created_at: DateTimeDto,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct CredentialGrantVersionDto {
|
|
pub credential_id: OpaqueId,
|
|
pub version_id: OpaqueId,
|
|
}
|
|
|
|
#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(rename_all = "snake_case")]
|
|
pub enum SourceCredentialStatusDto {
|
|
Active,
|
|
Revoked,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct SourceCredentialDto {
|
|
pub id: OpaqueId,
|
|
pub owner: OpaqueId,
|
|
pub label: String,
|
|
pub kind: SourceCredentialKindDto,
|
|
pub status: SourceCredentialStatusDto,
|
|
pub active_version: NullableDto<SourceCredentialVersionDto>,
|
|
pub created_at: DateTimeDto,
|
|
pub updated_at: DateTimeDto,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct SourceCredentialPageDto {
|
|
pub items: Vec<SourceCredentialDto>,
|
|
pub next_cursor: NullableDto<String>,
|
|
}
|