use std::collections::BTreeMap;
use crate::Secret;
use crate::model;
use crate::models::KnownValues;
pub const KEY_TYPES: &[&str] = &["auth", "client", "api", "federated"];
pub const CREATE_KEY_TYPES: &[&str] = &["auth", "client", "federated"];
pub const UPDATE_KEY_TYPES: &[&str] = &["client", "federated"];
pub const KNOWN_VALUES: &[KnownValues] = &[("Key.keyType", KEY_TYPES),
("POST /tailnet/{tailnet}/keys body.keyType", CREATE_KEY_TYPES),
("PUT /tailnet/{tailnet}/keys/{keyId} body.keyType", UPDATE_KEY_TYPES),
];
model! {
Key {
id: "id" => String,
key: "key" => Secret,
key_type: "keyType" => String,
expiry_seconds: "expirySeconds" => i64,
created: "created" => String,
updated: "updated" => String,
expires: "expires" => String,
revoked: "revoked" => String,
capabilities: "capabilities" => KeyCapabilities,
scopes: "scopes" => Vec<String>,
tags: "tags" => Vec<String>,
description: "description" => String,
invalid: "invalid" => bool,
user_id: "userId" => String,
audience: "audience" => String,
issuer: "issuer" => String,
subject: "subject" => String,
custom_claim_rules: "customClaimRules" => BTreeMap<String, String>,
}
KeyCapabilities {
devices: "devices" => DeviceCapabilities,
}
DeviceCapabilities as "KeyCapabilities.devices" {
create: "create" => CreateCapability,
}
CreateCapability as "KeyCapabilities.devices.create" {
reusable: "reusable" => bool,
ephemeral: "ephemeral" => bool,
preauthorized: "preauthorized" => bool,
tags: "tags" => Vec<String>,
}
KeyList as "GET /tailnet/{tailnet}/keys 200" {
keys: "keys" => Vec<Key>,
}
CreateKeyRequest as "POST /tailnet/{tailnet}/keys body" {
key_type: "keyType" => String,
description: "description" => String,
capabilities: "capabilities" => KeyCapabilities,
expiry_seconds: "expirySeconds" => i64,
scopes: "scopes" => Vec<String>,
tags: "tags" => Vec<String>,
issuer: "issuer" => String,
subject: "subject" => String,
audience: "audience" => String,
custom_claim_rules: "customClaimRules" => BTreeMap<String, String>,
}
UpdateKeyRequest as "PUT /tailnet/{tailnet}/keys/{keyId} body" {
key_type: "keyType" => String,
description: "description" => String,
scopes: "scopes" => Vec<String>,
tags: "tags" => Vec<String>,
issuer: "issuer" => String,
subject: "subject" => String,
audience: "audience" => String,
custom_claim_rules: "customClaimRules" => BTreeMap<String, String>,
}
}