// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.

package operations

import (
	"github.com/LukeHagar/plexgo/internal/utils"
	"github.com/LukeHagar/plexgo/models/components"
	"net/http"
)

type UpdateItemsGlobals struct {
	// Indicates the client accepts the indicated media types
	Accepts *components.Accepts `default:"application/xml" header:"style=simple,explode=false,name=accepts"`
	// An opaque identifier unique to the client
	ClientIdentifier *string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
	// The name of the client product
	Product *string `header:"style=simple,explode=false,name=X-Plex-Product"`
	// The version of the client application
	Version *string `header:"style=simple,explode=false,name=X-Plex-Version"`
	// The platform of the client
	Platform *string `header:"style=simple,explode=false,name=X-Plex-Platform"`
	// The version of the platform
	PlatformVersion *string `header:"style=simple,explode=false,name=X-Plex-Platform-Version"`
	// A relatively friendly name for the client device
	Device *string `header:"style=simple,explode=false,name=X-Plex-Device"`
	// A potentially less friendly identifier for the device model
	Model *string `header:"style=simple,explode=false,name=X-Plex-Model"`
	// The device vendor
	DeviceVendor *string `header:"style=simple,explode=false,name=X-Plex-Device-Vendor"`
	// A friendly name for the client
	DeviceName *string `header:"style=simple,explode=false,name=X-Plex-Device-Name"`
	// The marketplace on which the client application is distributed
	Marketplace *string `header:"style=simple,explode=false,name=X-Plex-Marketplace"`
}

func (u UpdateItemsGlobals) MarshalJSON() ([]byte, error) {
	return utils.MarshalJSON(u, "", false)
}

func (u *UpdateItemsGlobals) UnmarshalJSON(data []byte) error {
	if err := utils.UnmarshalJSON(data, &u, "", false, nil); err != nil {
		return err
	}
	return nil
}

func (u *UpdateItemsGlobals) GetAccepts() *components.Accepts {
	if u == nil {
		return nil
	}
	return u.Accepts
}

func (u *UpdateItemsGlobals) GetClientIdentifier() *string {
	if u == nil {
		return nil
	}
	return u.ClientIdentifier
}

func (u *UpdateItemsGlobals) GetProduct() *string {
	if u == nil {
		return nil
	}
	return u.Product
}

func (u *UpdateItemsGlobals) GetVersion() *string {
	if u == nil {
		return nil
	}
	return u.Version
}

func (u *UpdateItemsGlobals) GetPlatform() *string {
	if u == nil {
		return nil
	}
	return u.Platform
}

func (u *UpdateItemsGlobals) GetPlatformVersion() *string {
	if u == nil {
		return nil
	}
	return u.PlatformVersion
}

func (u *UpdateItemsGlobals) GetDevice() *string {
	if u == nil {
		return nil
	}
	return u.Device
}

func (u *UpdateItemsGlobals) GetModel() *string {
	if u == nil {
		return nil
	}
	return u.Model
}

func (u *UpdateItemsGlobals) GetDeviceVendor() *string {
	if u == nil {
		return nil
	}
	return u.DeviceVendor
}

func (u *UpdateItemsGlobals) GetDeviceName() *string {
	if u == nil {
		return nil
	}
	return u.DeviceName
}

func (u *UpdateItemsGlobals) GetMarketplace() *string {
	if u == nil {
		return nil
	}
	return u.Marketplace
}

type UpdateItemsRequest struct {
	// Indicates the client accepts the indicated media types
	Accepts *components.Accepts `default:"application/xml" header:"style=simple,explode=false,name=accepts"`
	// An opaque identifier unique to the client
	ClientIdentifier *string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
	// The name of the client product
	Product *string `header:"style=simple,explode=false,name=X-Plex-Product"`
	// The version of the client application
	Version *string `header:"style=simple,explode=false,name=X-Plex-Version"`
	// The platform of the client
	Platform *string `header:"style=simple,explode=false,name=X-Plex-Platform"`
	// The version of the platform
	PlatformVersion *string `header:"style=simple,explode=false,name=X-Plex-Platform-Version"`
	// A relatively friendly name for the client device
	Device *string `header:"style=simple,explode=false,name=X-Plex-Device"`
	// A potentially less friendly identifier for the device model
	Model *string `header:"style=simple,explode=false,name=X-Plex-Model"`
	// The device vendor
	DeviceVendor *string `header:"style=simple,explode=false,name=X-Plex-Device-Vendor"`
	// A friendly name for the client
	DeviceName *string `header:"style=simple,explode=false,name=X-Plex-Device-Name"`
	// The marketplace on which the client application is distributed
	Marketplace *string `header:"style=simple,explode=false,name=X-Plex-Marketplace"`
	// The id of the section
	SectionID string  `pathParam:"style=simple,explode=false,name=sectionId"`
	Type      *string `queryParam:"style=form,explode=true,name=type"`
	// The filters to apply to determine which items should be modified
	Filters *string `queryParam:"style=form,explode=true,name=filters"`
	// Set the specified field to a new value
	FieldValue *string `queryParam:"style=form,explode=true,name=field.value"`
	// Set the specified field to locked (or unlocked if set to 0)
	FieldLocked *components.BoolInt `default:"0" queryParam:"style=form,explode=true,name=field.locked"`
	// This field is treated specially by albums or artists and may be used for implicit reparenting.
	TitleValue *string `queryParam:"style=form,explode=true,name=title.value"`
	// Reparents set of Tracks or Albums - used with album.title.* in the case of tracks
	ArtistTitleValue *string `queryParam:"style=form,explode=true,name=artist.title.value"`
	// Reparents set of Tracks or Albums - used with album.title.* in the case of tracks
	ArtistTitleID *string `queryParam:"style=form,explode=true,name=artist.title.id"`
	// Reparents set of Tracks - Must be used in conjunction with artist.title.value or id
	AlbumTitleValue *string `queryParam:"style=form,explode=true,name=album.title.value"`
	// Reparents set of Tracks - Must be used in conjunction with artist.title.value or id
	AlbumTitleID *string `queryParam:"style=form,explode=true,name=album.title.id"`
	// Creates tag and associates it with each item in the set. - [idx] links this and the next parameters together
	TagtypeIdxTagTag *string `queryParam:"style=form,explode=true,name=tagtype[idx].tag.tag"`
	// Here `object` may be text/thumb/art/theme - Optionally used in conjunction with tag.tag, to update association info across the set.
	TagtypeIdxTaggingObject *string `queryParam:"style=form,explode=true,name=tagtype[idx].tagging.object"`
	// Remove comma separated tags from the set of items
	TagtypeTagTag *string `queryParam:"style=form,explode=true,name=tagtype[].tag.tag-"`
	// Remove associations of this type (e.g. genre) from the set of items
	TagtypeTag *string `queryParam:"style=form,explode=true,name=tagtype[].tag"`
}

func (u UpdateItemsRequest) MarshalJSON() ([]byte, error) {
	return utils.MarshalJSON(u, "", false)
}

func (u *UpdateItemsRequest) UnmarshalJSON(data []byte) error {
	if err := utils.UnmarshalJSON(data, &u, "", false, []string{"sectionId"}); err != nil {
		return err
	}
	return nil
}

func (u *UpdateItemsRequest) GetAccepts() *components.Accepts {
	if u == nil {
		return nil
	}
	return u.Accepts
}

func (u *UpdateItemsRequest) GetClientIdentifier() *string {
	if u == nil {
		return nil
	}
	return u.ClientIdentifier
}

func (u *UpdateItemsRequest) GetProduct() *string {
	if u == nil {
		return nil
	}
	return u.Product
}

func (u *UpdateItemsRequest) GetVersion() *string {
	if u == nil {
		return nil
	}
	return u.Version
}

func (u *UpdateItemsRequest) GetPlatform() *string {
	if u == nil {
		return nil
	}
	return u.Platform
}

func (u *UpdateItemsRequest) GetPlatformVersion() *string {
	if u == nil {
		return nil
	}
	return u.PlatformVersion
}

func (u *UpdateItemsRequest) GetDevice() *string {
	if u == nil {
		return nil
	}
	return u.Device
}

func (u *UpdateItemsRequest) GetModel() *string {
	if u == nil {
		return nil
	}
	return u.Model
}

func (u *UpdateItemsRequest) GetDeviceVendor() *string {
	if u == nil {
		return nil
	}
	return u.DeviceVendor
}

func (u *UpdateItemsRequest) GetDeviceName() *string {
	if u == nil {
		return nil
	}
	return u.DeviceName
}

func (u *UpdateItemsRequest) GetMarketplace() *string {
	if u == nil {
		return nil
	}
	return u.Marketplace
}

func (u *UpdateItemsRequest) GetSectionID() string {
	if u == nil {
		return ""
	}
	return u.SectionID
}

func (u *UpdateItemsRequest) GetType() *string {
	if u == nil {
		return nil
	}
	return u.Type
}

func (u *UpdateItemsRequest) GetFilters() *string {
	if u == nil {
		return nil
	}
	return u.Filters
}

func (u *UpdateItemsRequest) GetFieldValue() *string {
	if u == nil {
		return nil
	}
	return u.FieldValue
}

func (u *UpdateItemsRequest) GetFieldLocked() *components.BoolInt {
	if u == nil {
		return nil
	}
	return u.FieldLocked
}

func (u *UpdateItemsRequest) GetTitleValue() *string {
	if u == nil {
		return nil
	}
	return u.TitleValue
}

func (u *UpdateItemsRequest) GetArtistTitleValue() *string {
	if u == nil {
		return nil
	}
	return u.ArtistTitleValue
}

func (u *UpdateItemsRequest) GetArtistTitleID() *string {
	if u == nil {
		return nil
	}
	return u.ArtistTitleID
}

func (u *UpdateItemsRequest) GetAlbumTitleValue() *string {
	if u == nil {
		return nil
	}
	return u.AlbumTitleValue
}

func (u *UpdateItemsRequest) GetAlbumTitleID() *string {
	if u == nil {
		return nil
	}
	return u.AlbumTitleID
}

func (u *UpdateItemsRequest) GetTagtypeIdxTagTag() *string {
	if u == nil {
		return nil
	}
	return u.TagtypeIdxTagTag
}

func (u *UpdateItemsRequest) GetTagtypeIdxTaggingObject() *string {
	if u == nil {
		return nil
	}
	return u.TagtypeIdxTaggingObject
}

func (u *UpdateItemsRequest) GetTagtypeTagTag() *string {
	if u == nil {
		return nil
	}
	return u.TagtypeTagTag
}

func (u *UpdateItemsRequest) GetTagtypeTag() *string {
	if u == nil {
		return nil
	}
	return u.TagtypeTag
}

type UpdateItemsResponse struct {
	// HTTP response content type for this operation
	ContentType string
	// HTTP response status code for this operation
	StatusCode int
	// Raw HTTP response; suitable for custom response parsing
	RawResponse *http.Response
}

func (u *UpdateItemsResponse) GetContentType() string {
	if u == nil {
		return ""
	}
	return u.ContentType
}

func (u *UpdateItemsResponse) GetStatusCode() int {
	if u == nil {
		return 0
	}
	return u.StatusCode
}

func (u *UpdateItemsResponse) GetRawResponse() *http.Response {
	if u == nil {
		return nil
	}
	return u.RawResponse
}
