proto-blue-api 0.3.1

AT Protocol high-level API: agent, rich text, moderation, generated types
Documentation
// Generated by atproto-codegen. Do not edit.
//! Lexicon: app.bsky.ageassurance.defs
#![allow(clippy::pedantic, clippy::nursery, clippy::all)]

use serde::{Deserialize, Serialize};

/// The access level granted based on Age Assurance data we've processed.
pub type Access = String;
pub const ACCESS_UNKNOWN: &str = "unknown";
pub const ACCESS_NONE: &str = "none";
pub const ACCESS_SAFE: &str = "safe";
pub const ACCESS_FULL: &str = "full";

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Config {
    pub regions: Vec<ConfigRegion>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "$type")]
pub enum ConfigRegionRulesItemRefs {
    #[serde(rename = "app.bsky.ageassurance.defs#configRegionRuleDefault")]
    BskyAgeassuranceDefsConfigRegionRuleDefault(Box<ConfigRegionRuleDefault>),
    #[serde(rename = "app.bsky.ageassurance.defs#configRegionRuleIfDeclaredOverAge")]
    BskyAgeassuranceDefsConfigRegionRuleIfDeclaredOverAge(Box<ConfigRegionRuleIfDeclaredOverAge>),
    #[serde(rename = "app.bsky.ageassurance.defs#configRegionRuleIfDeclaredUnderAge")]
    BskyAgeassuranceDefsConfigRegionRuleIfDeclaredUnderAge(Box<ConfigRegionRuleIfDeclaredUnderAge>),
    #[serde(rename = "app.bsky.ageassurance.defs#configRegionRuleIfAssuredOverAge")]
    BskyAgeassuranceDefsConfigRegionRuleIfAssuredOverAge(Box<ConfigRegionRuleIfAssuredOverAge>),
    #[serde(rename = "app.bsky.ageassurance.defs#configRegionRuleIfAssuredUnderAge")]
    BskyAgeassuranceDefsConfigRegionRuleIfAssuredUnderAge(Box<ConfigRegionRuleIfAssuredUnderAge>),
    #[serde(rename = "app.bsky.ageassurance.defs#configRegionRuleIfAccountNewerThan")]
    BskyAgeassuranceDefsConfigRegionRuleIfAccountNewerThan(Box<ConfigRegionRuleIfAccountNewerThan>),
    #[serde(rename = "app.bsky.ageassurance.defs#configRegionRuleIfAccountOlderThan")]
    BskyAgeassuranceDefsConfigRegionRuleIfAccountOlderThan(Box<ConfigRegionRuleIfAccountOlderThan>),
    #[serde(other)]
    Other,
}

/// The Age Assurance configuration for a specific region.
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegion {
    pub country_code: String,
    pub min_access_age: i64,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub region_code: Option<String>,
    pub rules: Vec<ConfigRegionRulesItemRefs>,
}

/// Age Assurance rule that applies by default.
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegionRuleDefault {
    pub access: Access,
}

/// Age Assurance rule that applies if the account is equal-to or newer than a certain date.
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegionRuleIfAccountNewerThan {
    pub access: Access,
    pub date: proto_blue_syntax::Datetime,
}

/// Age Assurance rule that applies if the account is older than a certain date.
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegionRuleIfAccountOlderThan {
    pub access: Access,
    pub date: proto_blue_syntax::Datetime,
}

/// Age Assurance rule that applies if the user has been assured to be equal-to or over a certain age.
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegionRuleIfAssuredOverAge {
    pub access: Access,
    pub age: i64,
}

/// Age Assurance rule that applies if the user has been assured to be under a certain age.
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegionRuleIfAssuredUnderAge {
    pub access: Access,
    pub age: i64,
}

/// Age Assurance rule that applies if the user has declared themselves equal-to or over a certain age.
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegionRuleIfDeclaredOverAge {
    pub access: Access,
    pub age: i64,
}

/// Age Assurance rule that applies if the user has declared themselves under a certain age.
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigRegionRuleIfDeclaredUnderAge {
    pub access: Access,
    pub age: i64,
}

/// Object used to store Age Assurance data in stash.
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Event {
    pub access: String,
    pub attempt_id: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub complete_ip: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub complete_ua: Option<String>,
    pub country_code: String,
    pub created_at: proto_blue_syntax::Datetime,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub email: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub init_ip: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub init_ua: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub region_code: Option<String>,
    pub status: String,
}

/// The user's computed Age Assurance state.
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct State {
    pub access: Access,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub last_initiated_at: Option<proto_blue_syntax::Datetime>,
    pub status: Status,
}

/// Additional metadata needed to compute Age Assurance state client-side.
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StateMetadata {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub account_created_at: Option<proto_blue_syntax::Datetime>,
}

/// The status of the Age Assurance process.
pub type Status = String;
pub const STATUS_UNKNOWN: &str = "unknown";
pub const STATUS_PENDING: &str = "pending";
pub const STATUS_ASSURED: &str = "assured";
pub const STATUS_BLOCKED: &str = "blocked";