/*
 * Artifact Keeper API
 *
 * REST API for Artifact Keeper, an open-source universal artifact registry. Covers user management, repositories, artifacts, search, security scanning, SBOM, dependency tracking, SSO, analytics, monitoring, telemetry, lifecycle policies, plugins, edge nodes, migration, and administration. Format-specific protocol endpoints (npm, PyPI, Maven, Docker/OCI, etc.) are not included; those follow their respective upstream specifications.
 *
 * The version of the OpenAPI document: 1.0.0-a2
 * 
 * Generated by: https://openapi-generator.tech
 */

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

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct BulkPromoteArtifactsRequest {
    /// Key of the target repository to promote into.
    #[serde(rename = "target_repository")]
    pub target_repository: String,
    /// List of artifact IDs to promote.
    #[serde(rename = "artifact_ids")]
    pub artifact_ids: Vec<uuid::Uuid>,
    /// When true, bypasses promotion policy evaluation.
    #[serde(rename = "skip_policy_check")]
    pub skip_policy_check: bool,
    /// Optional free-text notes attached to the promotion record.
    #[serde(rename = "notes", skip_serializing_if = "Option::is_none")]
    pub notes: Option<String>,
}

impl BulkPromoteArtifactsRequest {
    pub fn new(target_repository: String, artifact_ids: Vec<uuid::Uuid>, skip_policy_check: bool) -> BulkPromoteArtifactsRequest {
        BulkPromoteArtifactsRequest {
            target_repository,
            artifact_ids,
            skip_policy_check,
            notes: None,
        }
    }
}

