<filename>sdk/dotnet/Inputs/GetProjectsProject.cs// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;
using Pulumi;

namespace PiersKarsenbarg.Octopusdeploy.Inputs
{

    public sealed class GetProjectsProjectArgs : global::Pulumi.InvokeArgs
    {
        [Input("allowDeploymentsToNoTargets", required: true)]
        public bool AllowDeploymentsToNoTargets { get; set; }

        [Input("autoCreateRelease", required: true)]
        public bool AutoCreateRelease { get; set; }

        [Input("autoDeployReleaseOverrides", required: true)]
        private List<string>? _autoDeployReleaseOverrides;
        public List<string> AutoDeployReleaseOverrides
        {
            get => _autoDeployReleaseOverrides ?? (_autoDeployReleaseOverrides = new List<string>());
            set => _autoDeployReleaseOverrides = value;
        }

        /// <summary>
        /// A filter to search for cloned resources by a project ID.
        /// </summary>
        [Input("clonedFromProjectId", required: true)]
        public string ClonedFromProjectId { get; set; } = null!;

        [Input("connectivityPolicies", required: true)]
        private List<Inputs.GetProjectsProjectConnectivityPolicyArgs>? _connectivityPolicies;
        public List<Inputs.GetProjectsProjectConnectivityPolicyArgs> ConnectivityPolicies
        {
            get => _connectivityPolicies ?? (_connectivityPolicies = new List<Inputs.GetProjectsProjectConnectivityPolicyArgs>());
            set => _connectivityPolicies = value;
        }

        [Input("defaultGuidedFailureMode", required: true)]
        public string DefaultGuidedFailureMode { get; set; } = null!;

        [Input("defaultToSkipIfAlreadyInstalled", required: true)]
        public bool DefaultToSkipIfAlreadyInstalled { get; set; }

        [Input("deploymentChangesTemplate", required: true)]
        public string DeploymentChangesTemplate { get; set; } = null!;

        [Input("deploymentProcessId", required: true)]
        public string DeploymentProcessId { get; set; } = null!;

        /// <summary>
        /// The description of this project.
        /// </summary>
        [Input("description", required: true)]
        public string Description { get; set; } = null!;

        /// <summary>
        /// Treats releases of different channels to the same environment as a separate deployment dimension
        /// </summary>
        [Input("discreteChannelRelease", required: true)]
        public bool DiscreteChannelRelease { get; set; }

        [Input("gitAnonymousPersistenceSettings", required: true)]
        private List<Inputs.GetProjectsProjectGitAnonymousPersistenceSettingArgs>? _gitAnonymousPersistenceSettings;

        /// <summary>
        /// Provides Git-related persistence settings for a version-controlled project.
        /// </summary>
        public List<Inputs.GetProjectsProjectGitAnonymousPersistenceSettingArgs> GitAnonymousPersistenceSettings
        {
            get => _gitAnonymousPersistenceSettings ?? (_gitAnonymousPersistenceSettings = new List<Inputs.GetProjectsProjectGitAnonymousPersistenceSettingArgs>());
            set => _gitAnonymousPersistenceSettings = value;
        }

        [Input("gitLibraryPersistenceSettings", required: true)]
        private List<Inputs.GetProjectsProjectGitLibraryPersistenceSettingArgs>? _gitLibraryPersistenceSettings;

        /// <summary>
        /// Provides Git-related persistence settings for a version-controlled project.
        /// </summary>
        public List<Inputs.GetProjectsProjectGitLibraryPersistenceSettingArgs> GitLibraryPersistenceSettings
        {
            get => _gitLibraryPersistenceSettings ?? (_gitLibraryPersistenceSettings = new List<Inputs.GetProjectsProjectGitLibraryPersistenceSettingArgs>());
            set => _gitLibraryPersistenceSettings = value;
        }

        [Input("gitUsernamePasswordPersistenceSettings", required: true)]
        private List<Inputs.GetProjectsProjectGitUsernamePasswordPersistenceSettingArgs>? _gitUsernamePasswordPersistenceSettings;

        /// <summary>
        /// Provides Git-related persistence settings for a version-controlled project.
        /// </summary>
        public List<Inputs.GetProjectsProjectGitUsernamePasswordPersistenceSettingArgs> GitUsernamePasswordPersistenceSettings
        {
            get => _gitUsernamePasswordPersistenceSettings ?? (_gitUsernamePasswordPersistenceSettings = new List<Inputs.GetProjectsProjectGitUsernamePasswordPersistenceSettingArgs>());
            set => _gitUsernamePasswordPersistenceSettings = value;
        }

        /// <summary>
        /// The unique ID for this resource.
        /// </summary>
        [Input("id", required: true)]
        public string Id { get; set; } = null!;

        [Input("includedLibraryVariableSets", required: true)]
        private List<string>? _includedLibraryVariableSets;
        public List<string> IncludedLibraryVariableSets
        {
            get => _includedLibraryVariableSets ?? (_includedLibraryVariableSets = new List<string>());
            set => _includedLibraryVariableSets = value;
        }

        [Input("isDisabled", required: true)]
        public bool IsDisabled { get; set; }

        /// <summary>
        /// Treats releases of different channels to the same environment as a separate deployment dimension
        /// </summary>
        [Input("isDiscreteChannelRelease", required: true)]
        public bool IsDiscreteChannelRelease { get; set; }

        [Input("isVersionControlled", required: true)]
        public bool IsVersionControlled { get; set; }

        [Input("jiraServiceManagementExtensionSettings", required: true)]
        private List<Inputs.GetProjectsProjectJiraServiceManagementExtensionSettingArgs>? _jiraServiceManagementExtensionSettings;

        /// <summary>
        /// Provides extension settings for the Jira Service Management (JSM) integration for this project.
        /// </summary>
        public List<Inputs.GetProjectsProjectJiraServiceManagementExtensionSettingArgs> JiraServiceManagementExtensionSettings
        {
            get => _jiraServiceManagementExtensionSettings ?? (_jiraServiceManagementExtensionSettings = new List<Inputs.GetProjectsProjectJiraServiceManagementExtensionSettingArgs>());
            set => _jiraServiceManagementExtensionSettings = value;
        }

        /// <summary>
        /// The lifecycle ID associated with this project.
        /// </summary>
        [Input("lifecycleId", required: true)]
        public string LifecycleId { get; set; } = null!;

        /// <summary>
        /// The name of the project in Octopus Deploy. This name must be unique.
        /// </summary>
        [Input("name", required: true)]
        public string Name { get; set; } = null!;

        /// <summary>
        /// The project group ID associated with this project.
        /// </summary>
        [Input("projectGroupId", required: true)]
        public string ProjectGroupId { get; set; } = null!;

        [Input("releaseCreationStrategies", required: true)]
        private List<Inputs.GetProjectsProjectReleaseCreationStrategyArgs>? _releaseCreationStrategies;
        public List<Inputs.GetProjectsProjectReleaseCreationStrategyArgs> ReleaseCreationStrategies
        {
            get => _releaseCreationStrategies ?? (_releaseCreationStrategies = new List<Inputs.GetProjectsProjectReleaseCreationStrategyArgs>());
            set => _releaseCreationStrategies = value;
        }

        [Input("releaseNotesTemplate", required: true)]
        public string ReleaseNotesTemplate { get; set; } = null!;

        [Input("servicenowExtensionSettings", required: true)]
        private List<Inputs.GetProjectsProjectServicenowExtensionSettingArgs>? _servicenowExtensionSettings;

        /// <summary>
        /// Provides extension settings for the ServiceNow integration for this project.
        /// </summary>
        public List<Inputs.GetProjectsProjectServicenowExtensionSettingArgs> ServicenowExtensionSettings
        {
            get => _servicenowExtensionSettings ?? (_servicenowExtensionSettings = new List<Inputs.GetProjectsProjectServicenowExtensionSettingArgs>());
            set => _servicenowExtensionSettings = value;
        }

        /// <summary>
        /// A human-readable, unique identifier, used to identify a project.
        /// </summary>
        [Input("slug", required: true)]
        public string Slug { get; set; } = null!;

        /// <summary>
        /// The space ID associated with this project.
        /// </summary>
        [Input("spaceId", required: true)]
        public string SpaceId { get; set; } = null!;

        [Input("templates", required: true)]
        private List<Inputs.GetProjectsProjectTemplateArgs>? _templates;
        public List<Inputs.GetProjectsProjectTemplateArgs> Templates
        {
            get => _templates ?? (_templates = new List<Inputs.GetProjectsProjectTemplateArgs>());
            set => _templates = value;
        }

        /// <summary>
        /// The tenanted deployment mode of the resource. Valid account types are `Untenanted`, `TenantedOrUntenanted`, or `Tenanted`.
        /// </summary>
        [Input("tenantedDeploymentParticipation", required: true)]
        public string TenantedDeploymentParticipation { get; set; } = null!;

        [Input("variableSetId", required: true)]
        public string VariableSetId { get; set; } = null!;

        [Input("versioningStrategies", required: true)]
        private List<Inputs.GetProjectsProjectVersioningStrategyArgs>? _versioningStrategies;
        public List<Inputs.GetProjectsProjectVersioningStrategyArgs> VersioningStrategies
        {
            get => _versioningStrategies ?? (_versioningStrategies = new List<Inputs.GetProjectsProjectVersioningStrategyArgs>());
            set => _versioningStrategies = value;
        }

        public GetProjectsProjectArgs()
        {
        }
        public static new GetProjectsProjectArgs Empty => new GetProjectsProjectArgs();
    }
}
