Skip to main content

harn_cli/package/manifest/
provider_setup.rs

1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
6pub struct ProviderSetupManifest {
7    #[serde(default, alias = "auth-type")]
8    pub auth_type: Option<String>,
9    #[serde(default)]
10    pub flow: Option<String>,
11    #[serde(default, alias = "required-scopes", alias = "scopes")]
12    pub required_scopes: Vec<String>,
13    #[serde(default, alias = "required-secrets")]
14    pub required_secrets: Vec<String>,
15    #[serde(default, alias = "credential-environment")]
16    pub credential_environment: Vec<ConnectorCredentialEnvironmentManifest>,
17    #[serde(default, alias = "setup-command")]
18    pub setup_command: Vec<String>,
19    #[serde(default, alias = "validation-command")]
20    pub validation_command: Vec<String>,
21    #[serde(default, alias = "health-checks")]
22    pub health_checks: Vec<ConnectorHealthCheckManifest>,
23    #[serde(default)]
24    pub recovery: ConnectorRecoveryCopy,
25    #[serde(flatten, default)]
26    pub extra: BTreeMap<String, toml::Value>,
27}
28
29/// Bounded process-environment aliases for one logical connector secret.
30///
31/// The logical secret remains the stable interface. Environment names are
32/// explicit recovery and automation sources. They never authorize scanning
33/// arbitrary process variables.
34#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
35pub struct ConnectorCredentialEnvironmentManifest {
36    pub secret: String,
37    #[serde(default, alias = "environment-names")]
38    pub environment_names: Vec<String>,
39}
40
41#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
42pub struct ConnectorHealthCheckManifest {
43    pub id: String,
44    pub kind: String,
45    #[serde(default)]
46    pub command: Vec<String>,
47    #[serde(default)]
48    pub secret: Option<String>,
49    #[serde(default)]
50    pub url: Option<String>,
51}
52
53#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
54pub struct ConnectorRecoveryCopy {
55    #[serde(default, alias = "missing-install")]
56    pub missing_install: Option<String>,
57    #[serde(default, alias = "missing-auth")]
58    pub missing_auth: Option<String>,
59    #[serde(default, alias = "expired-credentials")]
60    pub expired_credentials: Option<String>,
61    #[serde(default, alias = "revoked-credentials")]
62    pub revoked_credentials: Option<String>,
63    #[serde(default, alias = "missing-scopes")]
64    pub missing_scopes: Option<String>,
65    #[serde(default, alias = "inaccessible-resource")]
66    pub inaccessible_resource: Option<String>,
67    #[serde(default, alias = "transient-provider-outage")]
68    pub transient_provider_outage: Option<String>,
69}