/*
 * Koyeb Rest API
 *
 * The Koyeb API allows you to interact with the Koyeb platform in a simple, programmatic way using conventional HTTP requests. 
 *
 * API version: 1.0.0
 */

// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.

package koyeb

import (
	"encoding/json"
)

// CreateSecret struct for CreateSecret
type CreateSecret struct {
	Name *string `json:"name,omitempty"`
	Type *SecretType `json:"type,omitempty"`
	Value *string `json:"value,omitempty"`
	DockerHubRegistry *DockerHubRegistryConfiguration `json:"docker_hub_registry,omitempty"`
	PrivateRegistry *PrivateRegistryConfiguration `json:"private_registry,omitempty"`
	DigitalOceanRegistry *DigitalOceanRegistryConfiguration `json:"digital_ocean_registry,omitempty"`
	GithubRegistry *GitHubRegistryConfiguration `json:"github_registry,omitempty"`
	GitlabRegistry *GitLabRegistryConfiguration `json:"gitlab_registry,omitempty"`
	GcpContainerRegistry *GCPContainerRegistryConfiguration `json:"gcp_container_registry,omitempty"`
	AzureContainerRegistry *AzureContainerRegistryConfiguration `json:"azure_container_registry,omitempty"`
}

// NewCreateSecret instantiates a new CreateSecret object
// This constructor will assign default values to properties that have it defined,
// and makes sure properties required by API are set, but the set of arguments
// will change when the set of required properties is changed
func NewCreateSecret() *CreateSecret {
	this := CreateSecret{}
	var type_ SecretType = SECRETTYPE_SIMPLE
	this.Type = &type_
	return &this
}

// NewCreateSecretWithDefaults instantiates a new CreateSecret object
// This constructor will only assign default values to properties that have it defined,
// but it doesn't guarantee that properties required by API are set
func NewCreateSecretWithDefaults() *CreateSecret {
	this := CreateSecret{}
	var type_ SecretType = SECRETTYPE_SIMPLE
	this.Type = &type_
	return &this
}

// GetName returns the Name field value if set, zero value otherwise.
func (o *CreateSecret) GetName() string {
	if o == nil || o.Name == nil {
		var ret string
		return ret
	}
	return *o.Name
}

// GetNameOk returns a tuple with the Name field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateSecret) GetNameOk() (*string, bool) {
	if o == nil || o.Name == nil {
		return nil, false
	}
	return o.Name, true
}

// HasName returns a boolean if a field has been set.
func (o *CreateSecret) HasName() bool {
	if o != nil && o.Name != nil {
		return true
	}

	return false
}

// SetName gets a reference to the given string and assigns it to the Name field.
func (o *CreateSecret) SetName(v string) {
	o.Name = &v
}

// GetType returns the Type field value if set, zero value otherwise.
func (o *CreateSecret) GetType() SecretType {
	if o == nil || o.Type == nil {
		var ret SecretType
		return ret
	}
	return *o.Type
}

// GetTypeOk returns a tuple with the Type field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateSecret) GetTypeOk() (*SecretType, bool) {
	if o == nil || o.Type == nil {
		return nil, false
	}
	return o.Type, true
}

// HasType returns a boolean if a field has been set.
func (o *CreateSecret) HasType() bool {
	if o != nil && o.Type != nil {
		return true
	}

	return false
}

// SetType gets a reference to the given SecretType and assigns it to the Type field.
func (o *CreateSecret) SetType(v SecretType) {
	o.Type = &v
}

// GetValue returns the Value field value if set, zero value otherwise.
func (o *CreateSecret) GetValue() string {
	if o == nil || o.Value == nil {
		var ret string
		return ret
	}
	return *o.Value
}

// GetValueOk returns a tuple with the Value field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateSecret) GetValueOk() (*string, bool) {
	if o == nil || o.Value == nil {
		return nil, false
	}
	return o.Value, true
}

// HasValue returns a boolean if a field has been set.
func (o *CreateSecret) HasValue() bool {
	if o != nil && o.Value != nil {
		return true
	}

	return false
}

// SetValue gets a reference to the given string and assigns it to the Value field.
func (o *CreateSecret) SetValue(v string) {
	o.Value = &v
}

// GetDockerHubRegistry returns the DockerHubRegistry field value if set, zero value otherwise.
func (o *CreateSecret) GetDockerHubRegistry() DockerHubRegistryConfiguration {
	if o == nil || o.DockerHubRegistry == nil {
		var ret DockerHubRegistryConfiguration
		return ret
	}
	return *o.DockerHubRegistry
}

// GetDockerHubRegistryOk returns a tuple with the DockerHubRegistry field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateSecret) GetDockerHubRegistryOk() (*DockerHubRegistryConfiguration, bool) {
	if o == nil || o.DockerHubRegistry == nil {
		return nil, false
	}
	return o.DockerHubRegistry, true
}

// HasDockerHubRegistry returns a boolean if a field has been set.
func (o *CreateSecret) HasDockerHubRegistry() bool {
	if o != nil && o.DockerHubRegistry != nil {
		return true
	}

	return false
}

// SetDockerHubRegistry gets a reference to the given DockerHubRegistryConfiguration and assigns it to the DockerHubRegistry field.
func (o *CreateSecret) SetDockerHubRegistry(v DockerHubRegistryConfiguration) {
	o.DockerHubRegistry = &v
}

// GetPrivateRegistry returns the PrivateRegistry field value if set, zero value otherwise.
func (o *CreateSecret) GetPrivateRegistry() PrivateRegistryConfiguration {
	if o == nil || o.PrivateRegistry == nil {
		var ret PrivateRegistryConfiguration
		return ret
	}
	return *o.PrivateRegistry
}

// GetPrivateRegistryOk returns a tuple with the PrivateRegistry field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateSecret) GetPrivateRegistryOk() (*PrivateRegistryConfiguration, bool) {
	if o == nil || o.PrivateRegistry == nil {
		return nil, false
	}
	return o.PrivateRegistry, true
}

// HasPrivateRegistry returns a boolean if a field has been set.
func (o *CreateSecret) HasPrivateRegistry() bool {
	if o != nil && o.PrivateRegistry != nil {
		return true
	}

	return false
}

// SetPrivateRegistry gets a reference to the given PrivateRegistryConfiguration and assigns it to the PrivateRegistry field.
func (o *CreateSecret) SetPrivateRegistry(v PrivateRegistryConfiguration) {
	o.PrivateRegistry = &v
}

// GetDigitalOceanRegistry returns the DigitalOceanRegistry field value if set, zero value otherwise.
func (o *CreateSecret) GetDigitalOceanRegistry() DigitalOceanRegistryConfiguration {
	if o == nil || o.DigitalOceanRegistry == nil {
		var ret DigitalOceanRegistryConfiguration
		return ret
	}
	return *o.DigitalOceanRegistry
}

// GetDigitalOceanRegistryOk returns a tuple with the DigitalOceanRegistry field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateSecret) GetDigitalOceanRegistryOk() (*DigitalOceanRegistryConfiguration, bool) {
	if o == nil || o.DigitalOceanRegistry == nil {
		return nil, false
	}
	return o.DigitalOceanRegistry, true
}

// HasDigitalOceanRegistry returns a boolean if a field has been set.
func (o *CreateSecret) HasDigitalOceanRegistry() bool {
	if o != nil && o.DigitalOceanRegistry != nil {
		return true
	}

	return false
}

// SetDigitalOceanRegistry gets a reference to the given DigitalOceanRegistryConfiguration and assigns it to the DigitalOceanRegistry field.
func (o *CreateSecret) SetDigitalOceanRegistry(v DigitalOceanRegistryConfiguration) {
	o.DigitalOceanRegistry = &v
}

// GetGithubRegistry returns the GithubRegistry field value if set, zero value otherwise.
func (o *CreateSecret) GetGithubRegistry() GitHubRegistryConfiguration {
	if o == nil || o.GithubRegistry == nil {
		var ret GitHubRegistryConfiguration
		return ret
	}
	return *o.GithubRegistry
}

// GetGithubRegistryOk returns a tuple with the GithubRegistry field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateSecret) GetGithubRegistryOk() (*GitHubRegistryConfiguration, bool) {
	if o == nil || o.GithubRegistry == nil {
		return nil, false
	}
	return o.GithubRegistry, true
}

// HasGithubRegistry returns a boolean if a field has been set.
func (o *CreateSecret) HasGithubRegistry() bool {
	if o != nil && o.GithubRegistry != nil {
		return true
	}

	return false
}

// SetGithubRegistry gets a reference to the given GitHubRegistryConfiguration and assigns it to the GithubRegistry field.
func (o *CreateSecret) SetGithubRegistry(v GitHubRegistryConfiguration) {
	o.GithubRegistry = &v
}

// GetGitlabRegistry returns the GitlabRegistry field value if set, zero value otherwise.
func (o *CreateSecret) GetGitlabRegistry() GitLabRegistryConfiguration {
	if o == nil || o.GitlabRegistry == nil {
		var ret GitLabRegistryConfiguration
		return ret
	}
	return *o.GitlabRegistry
}

// GetGitlabRegistryOk returns a tuple with the GitlabRegistry field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateSecret) GetGitlabRegistryOk() (*GitLabRegistryConfiguration, bool) {
	if o == nil || o.GitlabRegistry == nil {
		return nil, false
	}
	return o.GitlabRegistry, true
}

// HasGitlabRegistry returns a boolean if a field has been set.
func (o *CreateSecret) HasGitlabRegistry() bool {
	if o != nil && o.GitlabRegistry != nil {
		return true
	}

	return false
}

// SetGitlabRegistry gets a reference to the given GitLabRegistryConfiguration and assigns it to the GitlabRegistry field.
func (o *CreateSecret) SetGitlabRegistry(v GitLabRegistryConfiguration) {
	o.GitlabRegistry = &v
}

// GetGcpContainerRegistry returns the GcpContainerRegistry field value if set, zero value otherwise.
func (o *CreateSecret) GetGcpContainerRegistry() GCPContainerRegistryConfiguration {
	if o == nil || o.GcpContainerRegistry == nil {
		var ret GCPContainerRegistryConfiguration
		return ret
	}
	return *o.GcpContainerRegistry
}

// GetGcpContainerRegistryOk returns a tuple with the GcpContainerRegistry field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateSecret) GetGcpContainerRegistryOk() (*GCPContainerRegistryConfiguration, bool) {
	if o == nil || o.GcpContainerRegistry == nil {
		return nil, false
	}
	return o.GcpContainerRegistry, true
}

// HasGcpContainerRegistry returns a boolean if a field has been set.
func (o *CreateSecret) HasGcpContainerRegistry() bool {
	if o != nil && o.GcpContainerRegistry != nil {
		return true
	}

	return false
}

// SetGcpContainerRegistry gets a reference to the given GCPContainerRegistryConfiguration and assigns it to the GcpContainerRegistry field.
func (o *CreateSecret) SetGcpContainerRegistry(v GCPContainerRegistryConfiguration) {
	o.GcpContainerRegistry = &v
}

// GetAzureContainerRegistry returns the AzureContainerRegistry field value if set, zero value otherwise.
func (o *CreateSecret) GetAzureContainerRegistry() AzureContainerRegistryConfiguration {
	if o == nil || o.AzureContainerRegistry == nil {
		var ret AzureContainerRegistryConfiguration
		return ret
	}
	return *o.AzureContainerRegistry
}

// GetAzureContainerRegistryOk returns a tuple with the AzureContainerRegistry field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateSecret) GetAzureContainerRegistryOk() (*AzureContainerRegistryConfiguration, bool) {
	if o == nil || o.AzureContainerRegistry == nil {
		return nil, false
	}
	return o.AzureContainerRegistry, true
}

// HasAzureContainerRegistry returns a boolean if a field has been set.
func (o *CreateSecret) HasAzureContainerRegistry() bool {
	if o != nil && o.AzureContainerRegistry != nil {
		return true
	}

	return false
}

// SetAzureContainerRegistry gets a reference to the given AzureContainerRegistryConfiguration and assigns it to the AzureContainerRegistry field.
func (o *CreateSecret) SetAzureContainerRegistry(v AzureContainerRegistryConfiguration) {
	o.AzureContainerRegistry = &v
}

func (o CreateSecret) MarshalJSON() ([]byte, error) {
	toSerialize := map[string]interface{}{}
	if o.Name != nil {
		toSerialize["name"] = o.Name
	}
	if o.Type != nil {
		toSerialize["type"] = o.Type
	}
	if o.Value != nil {
		toSerialize["value"] = o.Value
	}
	if o.DockerHubRegistry != nil {
		toSerialize["docker_hub_registry"] = o.DockerHubRegistry
	}
	if o.PrivateRegistry != nil {
		toSerialize["private_registry"] = o.PrivateRegistry
	}
	if o.DigitalOceanRegistry != nil {
		toSerialize["digital_ocean_registry"] = o.DigitalOceanRegistry
	}
	if o.GithubRegistry != nil {
		toSerialize["github_registry"] = o.GithubRegistry
	}
	if o.GitlabRegistry != nil {
		toSerialize["gitlab_registry"] = o.GitlabRegistry
	}
	if o.GcpContainerRegistry != nil {
		toSerialize["gcp_container_registry"] = o.GcpContainerRegistry
	}
	if o.AzureContainerRegistry != nil {
		toSerialize["azure_container_registry"] = o.AzureContainerRegistry
	}
	return json.Marshal(toSerialize)
}

type NullableCreateSecret struct {
	value *CreateSecret
	isSet bool
}

func (v NullableCreateSecret) Get() *CreateSecret {
	return v.value
}

func (v *NullableCreateSecret) Set(val *CreateSecret) {
	v.value = val
	v.isSet = true
}

func (v NullableCreateSecret) IsSet() bool {
	return v.isSet
}

func (v *NullableCreateSecret) Unset() {
	v.value = nil
	v.isSet = false
}

func NewNullableCreateSecret(val *CreateSecret) *NullableCreateSecret {
	return &NullableCreateSecret{value: val, isSet: true}
}

func (v NullableCreateSecret) MarshalJSON() ([]byte, error) {
	return json.Marshal(v.value)
}

func (v *NullableCreateSecret) UnmarshalJSON(src []byte) error {
	v.isSet = true
	return json.Unmarshal(src, &v.value)
}


