/*
* Zernio API
*
* API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema). Request ids: responses carry an X-Request-Id header with the id we log the request under. Quote it when reporting a problem. A valid x-request-id you send is reused as that id.
*
* The version of the OpenAPI document: 1.531.0
* Contact: support@zernio.com
* Generated by: https://openapi-generator.tech
*/
use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct CreateInviteTokenRequest {
/// 'all' grants access to all profiles, 'profiles' restricts to specific profiles
#[serde(rename = "scope")]
pub scope: Scope,
/// Required if scope is 'profiles'. Array of profile IDs to grant access to.
#[serde(rename = "profileIds", skip_serializing_if = "Option::is_none")]
pub profile_ids: Option<Vec<String>>,
/// Org role granted to the invitee. Defaults to 'member'. - 'admin': manages the team (invite/remove members, change roles and access) and billing, but not ownership transfer or account deletion. - 'billing_admin' (displayed as Billing Manager): manages billing only. - 'viewer': a read-only member who can view everything in their profile scope but cannot perform any content mutation (publish, edit, delete, connect accounts).
#[serde(rename = "role", skip_serializing_if = "Option::is_none")]
pub role: Option<Role>,
/// Resource groups the invitee may not use once they join (the same groups as restricted API keys). Omitted or empty means full access. Their dashboard hides those sections, and every API request into a disabled group, with any credential they hold, is refused with 403. Groups the caller lacks themselves are always added.
#[serde(
rename = "disabledResourceGroups",
skip_serializing_if = "Option::is_none"
)]
pub disabled_resource_groups: Option<Vec<DisabledResourceGroups>>,
/// Deprecated. Use role 'viewer' instead. When true, the invite is created with role 'viewer'. Cannot be combined with role 'billing_admin' or 'admin'.
#[serde(rename = "readOnly", skip_serializing_if = "Option::is_none")]
pub read_only: Option<bool>,
}
impl CreateInviteTokenRequest {
pub fn new(scope: Scope) -> CreateInviteTokenRequest {
CreateInviteTokenRequest {
scope,
profile_ids: None,
role: None,
disabled_resource_groups: None,
read_only: None,
}
}
}
/// 'all' grants access to all profiles, 'profiles' restricts to specific profiles
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Scope {
#[serde(rename = "all")]
All,
#[serde(rename = "profiles")]
Profiles,
}
impl Default for Scope {
fn default() -> Scope {
Self::All
}
}
/// Org role granted to the invitee. Defaults to 'member'. - 'admin': manages the team (invite/remove members, change roles and access) and billing, but not ownership transfer or account deletion. - 'billing_admin' (displayed as Billing Manager): manages billing only. - 'viewer': a read-only member who can view everything in their profile scope but cannot perform any content mutation (publish, edit, delete, connect accounts).
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Role {
#[serde(rename = "admin")]
Admin,
#[serde(rename = "member")]
Member,
#[serde(rename = "billing_admin")]
BillingAdmin,
#[serde(rename = "viewer")]
Viewer,
}
impl Default for Role {
fn default() -> Role {
Self::Admin
}
}
/// Resource groups the invitee may not use once they join (the same groups as restricted API keys). Omitted or empty means full access. Their dashboard hides those sections, and every API request into a disabled group, with any credential they hold, is refused with 403. Groups the caller lacks themselves are always added.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum DisabledResourceGroups {
#[serde(rename = "publishing")]
Publishing,
#[serde(rename = "engagement")]
Engagement,
#[serde(rename = "messages")]
Messages,
#[serde(rename = "contacts")]
Contacts,
#[serde(rename = "analytics")]
Analytics,
#[serde(rename = "ads")]
Ads,
#[serde(rename = "telephony")]
Telephony,
#[serde(rename = "accounts")]
Accounts,
#[serde(rename = "billing")]
Billing,
#[serde(rename = "webhooks")]
Webhooks,
#[serde(rename = "commerce")]
Commerce,
}
impl Default for DisabledResourceGroups {
fn default() -> DisabledResourceGroups {
Self::Publishing
}
}