/*
 * IONOS Object Storage API for contract-owned buckets
 *
 * ## Overview The IONOS Object Storage API for contract-owned buckets is a REST-based API that allows developers and applications to interact directly with IONOS' scalable storage solution, leveraging the S3 protocol for object storage operations. Its design ensures seamless compatibility with existing tools and libraries tailored for S3 systems.  ### API References - [S3 API Reference for contract-owned buckets](https://api.ionos.com/docs/s3-contract-owned-buckets/v2/) ### User documentation [IONOS Object Storage User Guide](https://docs.ionos.com/cloud/managed-services/s3-object-storage) * [Documentation on user-owned and contract-owned buckets](https://docs.ionos.com/cloud/managed-services/s3-object-storage/concepts/buckets) * [Documentation on S3 API Compatibility](https://docs.ionos.com/cloud/managed-services/s3-object-storage/concepts/s3-api-compatibility) * [S3 Tools](https://docs.ionos.com/cloud/managed-services/s3-object-storage/s3-tools)  ## Endpoints for contract-owned buckets | Location | Region Name | Bucket Type | Endpoint | | --- | --- | --- | --- | | **Berlin, Germany** | **eu-central-3** | Contract-owned | `https://s3.eu-central-3.ionoscloud.com` |  ## Changelog - 30.05.2024 Initial version
 *
 * API version: 2.0.2
 * Contact: support@cloud.ionos.com
 */

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

package ionoscloud

import (
	"encoding/json"
)

import "encoding/xml"

// ListMultipartUploadsOutput struct for ListMultipartUploadsOutput
type ListMultipartUploadsOutput struct {
	XMLName xml.Name `xml:"ListMultipartUploadsOutput"`
	// The bucket name.
	Bucket *string `json:"Bucket,omitempty" xml:"Name"`
	// The key at or after which the listing began.
	KeyMarker *string `json:"KeyMarker,omitempty" xml:"KeyMarker"`
	// Upload ID after which listing began.
	UploadIdMarker *string `json:"UploadIdMarker,omitempty" xml:"UploadIdMarker"`
	// When a list is truncated, this element specifies the value that should be used for the key-marker request parameter in a subsequent request.
	NextKeyMarker *string `json:"NextKeyMarker,omitempty" xml:"NextKeyMarker"`
	// When a prefix is provided in the request, this field contains the specified prefix. The result contains only keys starting with the specified prefix.
	Prefix *string `json:"Prefix,omitempty" xml:"Prefix"`
	// Contains the delimiter you specified in the request. If you don't specify a delimiter in your request, this element is absent from the response.
	Delimiter *string `json:"Delimiter,omitempty" xml:"Delimiter"`
	// When a list is truncated, this element specifies the value that should be used for the `upload-id-marker` request parameter in a subsequent request.
	NextUploadIdMarker *string `json:"NextUploadIdMarker,omitempty" xml:"NextUploadIdMarker"`
	// Maximum number of multipart uploads that could have been included in the response.
	MaxUploads *int32 `json:"MaxUploads,omitempty" xml:"MaxUploads"`
	// A flag that indicates whether IONOS Object Storage returned all of the results that satisfied the search criteria. If your results were truncated, you can make a follow-up paginated request using the NextKeyMarker and NextVersionIdMarker response parameters as a starting place in another request to return the rest of the results.
	IsTruncated *bool `json:"IsTruncated,omitempty" xml:"IsTruncated"`
	// Container for elements related to a particular multipart upload. A response can contain zero or more `Upload` elements.
	Uploads *[]MultipartUpload `json:"Uploads,omitempty" xml:"Uploads"`
	// All of the keys rolled up into a common prefix count as a single return when calculating the number of returns.
	CommonPrefixes *[]CommonPrefix `json:"CommonPrefixes,omitempty" xml:"CommonPrefixes"`
	EncodingType   *EncodingType   `json:"EncodingType,omitempty" xml:"EncodingType"`
}

// NewListMultipartUploadsOutput instantiates a new ListMultipartUploadsOutput 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 NewListMultipartUploadsOutput() *ListMultipartUploadsOutput {
	this := ListMultipartUploadsOutput{}

	return &this
}

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

// GetBucket returns the Bucket field value
// If the value is explicit nil, the zero value for string will be returned
func (o *ListMultipartUploadsOutput) GetBucket() *string {
	if o == nil {
		return nil
	}

	return o.Bucket

}

// GetBucketOk returns a tuple with the Bucket field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ListMultipartUploadsOutput) GetBucketOk() (*string, bool) {
	if o == nil {
		return nil, false
	}

	return o.Bucket, true
}

// SetBucket sets field value
func (o *ListMultipartUploadsOutput) SetBucket(v string) {

	o.Bucket = &v

}

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

	return false
}

// GetKeyMarker returns the KeyMarker field value
// If the value is explicit nil, the zero value for string will be returned
func (o *ListMultipartUploadsOutput) GetKeyMarker() *string {
	if o == nil {
		return nil
	}

	return o.KeyMarker

}

// GetKeyMarkerOk returns a tuple with the KeyMarker field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ListMultipartUploadsOutput) GetKeyMarkerOk() (*string, bool) {
	if o == nil {
		return nil, false
	}

	return o.KeyMarker, true
}

// SetKeyMarker sets field value
func (o *ListMultipartUploadsOutput) SetKeyMarker(v string) {

	o.KeyMarker = &v

}

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

	return false
}

// GetUploadIdMarker returns the UploadIdMarker field value
// If the value is explicit nil, the zero value for string will be returned
func (o *ListMultipartUploadsOutput) GetUploadIdMarker() *string {
	if o == nil {
		return nil
	}

	return o.UploadIdMarker

}

// GetUploadIdMarkerOk returns a tuple with the UploadIdMarker field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ListMultipartUploadsOutput) GetUploadIdMarkerOk() (*string, bool) {
	if o == nil {
		return nil, false
	}

	return o.UploadIdMarker, true
}

// SetUploadIdMarker sets field value
func (o *ListMultipartUploadsOutput) SetUploadIdMarker(v string) {

	o.UploadIdMarker = &v

}

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

	return false
}

// GetNextKeyMarker returns the NextKeyMarker field value
// If the value is explicit nil, the zero value for string will be returned
func (o *ListMultipartUploadsOutput) GetNextKeyMarker() *string {
	if o == nil {
		return nil
	}

	return o.NextKeyMarker

}

// GetNextKeyMarkerOk returns a tuple with the NextKeyMarker field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ListMultipartUploadsOutput) GetNextKeyMarkerOk() (*string, bool) {
	if o == nil {
		return nil, false
	}

	return o.NextKeyMarker, true
}

// SetNextKeyMarker sets field value
func (o *ListMultipartUploadsOutput) SetNextKeyMarker(v string) {

	o.NextKeyMarker = &v

}

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

	return false
}

// GetPrefix returns the Prefix field value
// If the value is explicit nil, the zero value for string will be returned
func (o *ListMultipartUploadsOutput) GetPrefix() *string {
	if o == nil {
		return nil
	}

	return o.Prefix

}

// GetPrefixOk returns a tuple with the Prefix field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ListMultipartUploadsOutput) GetPrefixOk() (*string, bool) {
	if o == nil {
		return nil, false
	}

	return o.Prefix, true
}

// SetPrefix sets field value
func (o *ListMultipartUploadsOutput) SetPrefix(v string) {

	o.Prefix = &v

}

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

	return false
}

// GetDelimiter returns the Delimiter field value
// If the value is explicit nil, the zero value for string will be returned
func (o *ListMultipartUploadsOutput) GetDelimiter() *string {
	if o == nil {
		return nil
	}

	return o.Delimiter

}

// GetDelimiterOk returns a tuple with the Delimiter field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ListMultipartUploadsOutput) GetDelimiterOk() (*string, bool) {
	if o == nil {
		return nil, false
	}

	return o.Delimiter, true
}

// SetDelimiter sets field value
func (o *ListMultipartUploadsOutput) SetDelimiter(v string) {

	o.Delimiter = &v

}

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

	return false
}

// GetNextUploadIdMarker returns the NextUploadIdMarker field value
// If the value is explicit nil, the zero value for string will be returned
func (o *ListMultipartUploadsOutput) GetNextUploadIdMarker() *string {
	if o == nil {
		return nil
	}

	return o.NextUploadIdMarker

}

// GetNextUploadIdMarkerOk returns a tuple with the NextUploadIdMarker field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ListMultipartUploadsOutput) GetNextUploadIdMarkerOk() (*string, bool) {
	if o == nil {
		return nil, false
	}

	return o.NextUploadIdMarker, true
}

// SetNextUploadIdMarker sets field value
func (o *ListMultipartUploadsOutput) SetNextUploadIdMarker(v string) {

	o.NextUploadIdMarker = &v

}

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

	return false
}

// GetMaxUploads returns the MaxUploads field value
// If the value is explicit nil, the zero value for int32 will be returned
func (o *ListMultipartUploadsOutput) GetMaxUploads() *int32 {
	if o == nil {
		return nil
	}

	return o.MaxUploads

}

// GetMaxUploadsOk returns a tuple with the MaxUploads field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ListMultipartUploadsOutput) GetMaxUploadsOk() (*int32, bool) {
	if o == nil {
		return nil, false
	}

	return o.MaxUploads, true
}

// SetMaxUploads sets field value
func (o *ListMultipartUploadsOutput) SetMaxUploads(v int32) {

	o.MaxUploads = &v

}

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

	return false
}

// GetIsTruncated returns the IsTruncated field value
// If the value is explicit nil, the zero value for bool will be returned
func (o *ListMultipartUploadsOutput) GetIsTruncated() *bool {
	if o == nil {
		return nil
	}

	return o.IsTruncated

}

// GetIsTruncatedOk returns a tuple with the IsTruncated field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ListMultipartUploadsOutput) GetIsTruncatedOk() (*bool, bool) {
	if o == nil {
		return nil, false
	}

	return o.IsTruncated, true
}

// SetIsTruncated sets field value
func (o *ListMultipartUploadsOutput) SetIsTruncated(v bool) {

	o.IsTruncated = &v

}

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

	return false
}

// GetUploads returns the Uploads field value
// If the value is explicit nil, the zero value for []MultipartUpload will be returned
func (o *ListMultipartUploadsOutput) GetUploads() *[]MultipartUpload {
	if o == nil {
		return nil
	}

	return o.Uploads

}

// GetUploadsOk returns a tuple with the Uploads field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ListMultipartUploadsOutput) GetUploadsOk() (*[]MultipartUpload, bool) {
	if o == nil {
		return nil, false
	}

	return o.Uploads, true
}

// SetUploads sets field value
func (o *ListMultipartUploadsOutput) SetUploads(v []MultipartUpload) {

	o.Uploads = &v

}

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

	return false
}

// GetCommonPrefixes returns the CommonPrefixes field value
// If the value is explicit nil, the zero value for []CommonPrefix will be returned
func (o *ListMultipartUploadsOutput) GetCommonPrefixes() *[]CommonPrefix {
	if o == nil {
		return nil
	}

	return o.CommonPrefixes

}

// GetCommonPrefixesOk returns a tuple with the CommonPrefixes field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ListMultipartUploadsOutput) GetCommonPrefixesOk() (*[]CommonPrefix, bool) {
	if o == nil {
		return nil, false
	}

	return o.CommonPrefixes, true
}

// SetCommonPrefixes sets field value
func (o *ListMultipartUploadsOutput) SetCommonPrefixes(v []CommonPrefix) {

	o.CommonPrefixes = &v

}

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

	return false
}

// GetEncodingType returns the EncodingType field value
// If the value is explicit nil, the zero value for EncodingType will be returned
func (o *ListMultipartUploadsOutput) GetEncodingType() *EncodingType {
	if o == nil {
		return nil
	}

	return o.EncodingType

}

// GetEncodingTypeOk returns a tuple with the EncodingType field value
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *ListMultipartUploadsOutput) GetEncodingTypeOk() (*EncodingType, bool) {
	if o == nil {
		return nil, false
	}

	return o.EncodingType, true
}

// SetEncodingType sets field value
func (o *ListMultipartUploadsOutput) SetEncodingType(v EncodingType) {

	o.EncodingType = &v

}

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

	return false
}

func (o ListMultipartUploadsOutput) MarshalJSON() ([]byte, error) {
	toSerialize := map[string]interface{}{}
	if o.Bucket != nil {
		toSerialize["Bucket"] = o.Bucket
	}

	if o.KeyMarker != nil {
		toSerialize["KeyMarker"] = o.KeyMarker
	}

	if o.UploadIdMarker != nil {
		toSerialize["UploadIdMarker"] = o.UploadIdMarker
	}

	if o.NextKeyMarker != nil {
		toSerialize["NextKeyMarker"] = o.NextKeyMarker
	}

	if o.Prefix != nil {
		toSerialize["Prefix"] = o.Prefix
	}

	if o.Delimiter != nil {
		toSerialize["Delimiter"] = o.Delimiter
	}

	if o.NextUploadIdMarker != nil {
		toSerialize["NextUploadIdMarker"] = o.NextUploadIdMarker
	}

	if o.MaxUploads != nil {
		toSerialize["MaxUploads"] = o.MaxUploads
	}

	if o.IsTruncated != nil {
		toSerialize["IsTruncated"] = o.IsTruncated
	}

	if o.Uploads != nil {
		toSerialize["Uploads"] = o.Uploads
	}

	if o.CommonPrefixes != nil {
		toSerialize["CommonPrefixes"] = o.CommonPrefixes
	}

	if o.EncodingType != nil {
		toSerialize["EncodingType"] = o.EncodingType
	}

	return json.Marshal(toSerialize)
}

type NullableListMultipartUploadsOutput struct {
	value *ListMultipartUploadsOutput
	isSet bool
}

func (v NullableListMultipartUploadsOutput) Get() *ListMultipartUploadsOutput {
	return v.value
}

func (v *NullableListMultipartUploadsOutput) Set(val *ListMultipartUploadsOutput) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullableListMultipartUploadsOutput(val *ListMultipartUploadsOutput) *NullableListMultipartUploadsOutput {
	return &NullableListMultipartUploadsOutput{value: val, isSet: true}
}

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

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