/*
 * IONOS Logging REST API
 *
 * The logging service offers a centralized platform to collect and store logs from various systems and applications. It includes tools to search, filter, visualize, and create alerts based on your log data.  This API provides programmatic control over logging pipelines, enabling you to create new pipelines or modify existing ones. It mirrors the functionality of the DCD visual tool, ensuring a consistent experience regardless of your chosen interface.
 *
 * API version: 0.0.1
 */

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

package logging

import (
	"encoding/json"
)

// checks if the PipelineCreateProperties type satisfies the MappedNullable interface at compile time
var _ MappedNullable = &PipelineCreateProperties{}

// PipelineCreateProperties Create pipeline properties
type PipelineCreateProperties struct {
	// The friendly name of your pipeline.
	Name string `json:"name"`
	// The information of the log pipelines
	Logs []PipelineCreatePropertiesLogs `json:"logs"`
}

// NewPipelineCreateProperties instantiates a new PipelineCreateProperties 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 NewPipelineCreateProperties(name string, logs []PipelineCreatePropertiesLogs) *PipelineCreateProperties {
	this := PipelineCreateProperties{}

	this.Name = name
	this.Logs = logs

	return &this
}

// NewPipelineCreatePropertiesWithDefaults instantiates a new PipelineCreateProperties 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 NewPipelineCreatePropertiesWithDefaults() *PipelineCreateProperties {
	this := PipelineCreateProperties{}
	return &this
}

// GetName returns the Name field value
func (o *PipelineCreateProperties) GetName() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.Name
}

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

// SetName sets field value
func (o *PipelineCreateProperties) SetName(v string) {
	o.Name = v
}

// GetLogs returns the Logs field value
func (o *PipelineCreateProperties) GetLogs() []PipelineCreatePropertiesLogs {
	if o == nil {
		var ret []PipelineCreatePropertiesLogs
		return ret
	}

	return o.Logs
}

// GetLogsOk returns a tuple with the Logs field value
// and a boolean to check if the value has been set.
func (o *PipelineCreateProperties) GetLogsOk() ([]PipelineCreatePropertiesLogs, bool) {
	if o == nil {
		return nil, false
	}
	return o.Logs, true
}

// SetLogs sets field value
func (o *PipelineCreateProperties) SetLogs(v []PipelineCreatePropertiesLogs) {
	o.Logs = v
}

func (o PipelineCreateProperties) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	toSerialize["name"] = o.Name
	toSerialize["logs"] = o.Logs
	return toSerialize, nil
}

type NullablePipelineCreateProperties struct {
	value *PipelineCreateProperties
	isSet bool
}

func (v NullablePipelineCreateProperties) Get() *PipelineCreateProperties {
	return v.value
}

func (v *NullablePipelineCreateProperties) Set(val *PipelineCreateProperties) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullablePipelineCreateProperties(val *PipelineCreateProperties) *NullablePipelineCreateProperties {
	return &NullablePipelineCreateProperties{value: val, isSet: true}
}

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

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