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

package shared

import (
	"github.com/airbytehq/terraform-provider-airbyte/internal/sdk/internal/utils"
)

type SourceIlluminaBasespaceUpdate struct {
	// BaseSpace access token. Instructions for obtaining your access token can be found in the BaseSpace Developer Documentation.
	AccessToken string `json:"access_token"`
	// Domain name of the BaseSpace instance (e.g., euw2.sh.basespace.illumina.com)
	Domain string `json:"domain"`
	// Providing a user ID restricts the returned data to what that user can access. If you use the default ('current'), all data accessible to the user associated with the API key will be shown.
	User *string `default:"current" json:"user"`
}

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

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

func (o *SourceIlluminaBasespaceUpdate) GetAccessToken() string {
	if o == nil {
		return ""
	}
	return o.AccessToken
}

func (o *SourceIlluminaBasespaceUpdate) GetDomain() string {
	if o == nil {
		return ""
	}
	return o.Domain
}

func (o *SourceIlluminaBasespaceUpdate) GetUser() *string {
	if o == nil {
		return nil
	}
	return o.User
}
