/*
 * Pescheck API
 *
 * Official client library for the Pescheck API (v2), generated from the OpenAPI specification. Authenticate with OAuth2 client credentials and use the checks, profiles, screenings, webhooks and divisions endpoints. See https://github.com/pescheckit/pescheck-clients for installation and usage.
 *
 * The version of the OpenAPI document: 2.0.0
 * 
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// V2ProfileUpdateCheck : Profile update entry. Same shape as create plus optional profile_check_id for in-place update of an existing check. Absent profile_check_id = add new.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct V2ProfileUpdateCheck {
    /// * `addresscheck` - addresscheck * `adversemediacheck` - adversemediacheck * `bigcheck` - bigcheck * `criminalrecordscheck` - criminalrecordscheck * `criminalrecordsuploadcheck` - criminalrecordsuploadcheck * `customintegritycheck` - customintegritycheck * `cvcheck` - cvcheck * `edrcheck` - edrcheck * `focumcheck` - focumcheck * `id2check` - id2check * `idcheck` - idcheck * `integritycheck` - integritycheck * `openhealthcarecheck` - openhealthcarecheck * `permissioncheck` - permissioncheck * `pescheckadversemediacheck` - pescheckadversemediacheck * `qualificationcheck` - qualificationcheck * `righttoworkcheck` - righttoworkcheck * `vogcheck` - vogcheck * `watchlist2check` - watchlist2check * `watchlistcheck` - watchlistcheck * `workreferencecheck` - workreferencecheck * `worldwidecreditcheck` - worldwidecreditcheck
    #[serde(rename = "check_type")]
    pub check_type: CheckType,
    #[serde(rename = "config", skip_serializing_if = "Option::is_none")]
    pub config: Option<std::collections::HashMap<String, serde_json::Value>>,
    #[serde(rename = "profile_check_id", skip_serializing_if = "Option::is_none")]
    pub profile_check_id: Option<uuid::Uuid>,
}

impl V2ProfileUpdateCheck {
    /// Profile update entry. Same shape as create plus optional profile_check_id for in-place update of an existing check. Absent profile_check_id = add new.
    pub fn new(check_type: CheckType) -> V2ProfileUpdateCheck {
        V2ProfileUpdateCheck {
            check_type,
            config: None,
            profile_check_id: None,
        }
    }
}
/// * `addresscheck` - addresscheck * `adversemediacheck` - adversemediacheck * `bigcheck` - bigcheck * `criminalrecordscheck` - criminalrecordscheck * `criminalrecordsuploadcheck` - criminalrecordsuploadcheck * `customintegritycheck` - customintegritycheck * `cvcheck` - cvcheck * `edrcheck` - edrcheck * `focumcheck` - focumcheck * `id2check` - id2check * `idcheck` - idcheck * `integritycheck` - integritycheck * `openhealthcarecheck` - openhealthcarecheck * `permissioncheck` - permissioncheck * `pescheckadversemediacheck` - pescheckadversemediacheck * `qualificationcheck` - qualificationcheck * `righttoworkcheck` - righttoworkcheck * `vogcheck` - vogcheck * `watchlist2check` - watchlist2check * `watchlistcheck` - watchlistcheck * `workreferencecheck` - workreferencecheck * `worldwidecreditcheck` - worldwidecreditcheck
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum CheckType {
    #[serde(rename = "addresscheck")]
    Addresscheck,
    #[serde(rename = "adversemediacheck")]
    Adversemediacheck,
    #[serde(rename = "bigcheck")]
    Bigcheck,
    #[serde(rename = "criminalrecordscheck")]
    Criminalrecordscheck,
    #[serde(rename = "criminalrecordsuploadcheck")]
    Criminalrecordsuploadcheck,
    #[serde(rename = "customintegritycheck")]
    Customintegritycheck,
    #[serde(rename = "cvcheck")]
    Cvcheck,
    #[serde(rename = "edrcheck")]
    Edrcheck,
    #[serde(rename = "focumcheck")]
    Focumcheck,
    #[serde(rename = "id2check")]
    Id2check,
    #[serde(rename = "idcheck")]
    Idcheck,
    #[serde(rename = "integritycheck")]
    Integritycheck,
    #[serde(rename = "openhealthcarecheck")]
    Openhealthcarecheck,
    #[serde(rename = "permissioncheck")]
    Permissioncheck,
    #[serde(rename = "pescheckadversemediacheck")]
    Pescheckadversemediacheck,
    #[serde(rename = "qualificationcheck")]
    Qualificationcheck,
    #[serde(rename = "righttoworkcheck")]
    Righttoworkcheck,
    #[serde(rename = "vogcheck")]
    Vogcheck,
    #[serde(rename = "watchlist2check")]
    Watchlist2check,
    #[serde(rename = "watchlistcheck")]
    Watchlistcheck,
    #[serde(rename = "workreferencecheck")]
    Workreferencecheck,
    #[serde(rename = "worldwidecreditcheck")]
    Worldwidecreditcheck,
}

impl Default for CheckType {
    fn default() -> CheckType {
        Self::Addresscheck
    }
}

