authentik-client 2026.2.3

Making authentication simple.
Documentation
/*
 * authentik
 *
 * Making authentication simple.
 *
 * The version of the OpenAPI document: 2026.2.3
 * Contact: hello@goauthentik.io
 * Generated by: https://openapi-generator.tech
 */

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

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Task {
    #[serde(rename = "message_id", skip_serializing_if = "Option::is_none")]
    pub message_id: Option<uuid::Uuid>,
    /// Queue name
    #[serde(rename = "queue_name", skip_serializing_if = "Option::is_none")]
    pub queue_name: Option<String>,
    /// Dramatiq actor name
    #[serde(rename = "actor_name")]
    pub actor_name: String,
    /// Task status
    #[serde(rename = "state", skip_serializing_if = "Option::is_none")]
    pub state: Option<models::TaskStateEnum>,
    /// Task last modified time
    #[serde(rename = "mtime", skip_serializing_if = "Option::is_none")]
    pub mtime: Option<String>,
    /// Number of retries
    #[serde(rename = "retries", skip_serializing_if = "Option::is_none")]
    pub retries: Option<u64>,
    /// Planned execution time
    #[serde(
        rename = "eta",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub eta: Option<Option<String>>,
    #[serde(rename = "rel_obj_app_label")]
    pub rel_obj_app_label: String,
    #[serde(rename = "rel_obj_model")]
    pub rel_obj_model: String,
    #[serde(
        rename = "rel_obj_id",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub rel_obj_id: Option<Option<String>>,
    #[serde(rename = "uid")]
    pub uid: String,
    #[serde(rename = "logs")]
    pub logs: Vec<models::LogEvent>,
    #[serde(rename = "previous_logs")]
    pub previous_logs: Vec<models::LogEvent>,
    #[serde(rename = "aggregated_status")]
    pub aggregated_status: models::TaskAggregatedStatusEnum,
    #[serde(rename = "description", deserialize_with = "Option::deserialize")]
    pub description: Option<String>,
}

impl Task {
    pub fn new(
        actor_name: String,
        rel_obj_app_label: String,
        rel_obj_model: String,
        uid: String,
        logs: Vec<models::LogEvent>,
        previous_logs: Vec<models::LogEvent>,
        aggregated_status: models::TaskAggregatedStatusEnum,
        description: Option<String>,
    ) -> Task {
        Task {
            message_id: None,
            queue_name: None,
            actor_name,
            state: None,
            mtime: None,
            retries: None,
            eta: None,
            rel_obj_app_label,
            rel_obj_model,
            rel_obj_id: None,
            uid,
            logs,
            previous_logs,
            aggregated_status,
            description,
        }
    }
}