// Code generated by Fern. DO NOT EDIT.

package api

import (
	json "encoding/json"
	fmt "fmt"
	big "math/big"
	internal "pentagi/pkg/observability/langfuse/api/internal"
	time "time"
)

var (
	scoreV2GetRequestFieldPage          = big.NewInt(1 << 0)
	scoreV2GetRequestFieldLimit         = big.NewInt(1 << 1)
	scoreV2GetRequestFieldUserID        = big.NewInt(1 << 2)
	scoreV2GetRequestFieldName          = big.NewInt(1 << 3)
	scoreV2GetRequestFieldFromTimestamp = big.NewInt(1 << 4)
	scoreV2GetRequestFieldToTimestamp   = big.NewInt(1 << 5)
	scoreV2GetRequestFieldEnvironment   = big.NewInt(1 << 6)
	scoreV2GetRequestFieldSource        = big.NewInt(1 << 7)
	scoreV2GetRequestFieldOperator      = big.NewInt(1 << 8)
	scoreV2GetRequestFieldValue         = big.NewInt(1 << 9)
	scoreV2GetRequestFieldScoreIDs      = big.NewInt(1 << 10)
	scoreV2GetRequestFieldConfigID      = big.NewInt(1 << 11)
	scoreV2GetRequestFieldSessionID     = big.NewInt(1 << 12)
	scoreV2GetRequestFieldDatasetRunID  = big.NewInt(1 << 13)
	scoreV2GetRequestFieldTraceID       = big.NewInt(1 << 14)
	scoreV2GetRequestFieldQueueID       = big.NewInt(1 << 15)
	scoreV2GetRequestFieldDataType      = big.NewInt(1 << 16)
	scoreV2GetRequestFieldTraceTags     = big.NewInt(1 << 17)
	scoreV2GetRequestFieldFields        = big.NewInt(1 << 18)
)

type ScoreV2GetRequest struct {
	// Page number, starts at 1.
	Page *int `json:"-" url:"page,omitempty"`
	// Limit of items per page. If you encounter api issues due to too large page sizes, try to reduce the limit.
	Limit *int `json:"-" url:"limit,omitempty"`
	// Retrieve only scores with this userId associated to the trace.
	UserID *string `json:"-" url:"userId,omitempty"`
	// Retrieve only scores with this name.
	Name *string `json:"-" url:"name,omitempty"`
	// Optional filter to only include scores created on or after a certain datetime (ISO 8601)
	FromTimestamp *time.Time `json:"-" url:"fromTimestamp,omitempty"`
	// Optional filter to only include scores created before a certain datetime (ISO 8601)
	ToTimestamp *time.Time `json:"-" url:"toTimestamp,omitempty"`
	// Optional filter for scores where the environment is one of the provided values.
	Environment []*string `json:"-" url:"environment,omitempty"`
	// Retrieve only scores from a specific source.
	Source *ScoreSource `json:"-" url:"source,omitempty"`
	// Retrieve only scores with <operator> value.
	Operator *string `json:"-" url:"operator,omitempty"`
	// Retrieve only scores with <operator> value.
	Value *float64 `json:"-" url:"value,omitempty"`
	// Comma-separated list of score IDs to limit the results to.
	ScoreIDs *string `json:"-" url:"scoreIds,omitempty"`
	// Retrieve only scores with a specific configId.
	ConfigID *string `json:"-" url:"configId,omitempty"`
	// Retrieve only scores with a specific sessionId.
	SessionID *string `json:"-" url:"sessionId,omitempty"`
	// Retrieve only scores with a specific datasetRunId.
	DatasetRunID *string `json:"-" url:"datasetRunId,omitempty"`
	// Retrieve only scores with a specific traceId.
	TraceID *string `json:"-" url:"traceId,omitempty"`
	// Retrieve only scores with a specific annotation queueId.
	QueueID *string `json:"-" url:"queueId,omitempty"`
	// Retrieve only scores with a specific dataType.
	DataType *ScoreDataType `json:"-" url:"dataType,omitempty"`
	// Only scores linked to traces that include all of these tags will be returned.
	TraceTags []*string `json:"-" url:"traceTags,omitempty"`
	// Comma-separated list of field groups to include in the response. Available field groups: 'score' (core score fields), 'trace' (trace properties: userId, tags, environment). If not specified, both 'score' and 'trace' are returned by default. Example: 'score' to exclude trace data, 'score,trace' to include both. Note: When filtering by trace properties (using userId or traceTags parameters), the 'trace' field group must be included, otherwise a 400 error will be returned.
	Fields *string `json:"-" url:"fields,omitempty"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`
}

func (s *ScoreV2GetRequest) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetPage sets the Page field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetPage(page *int) {
	s.Page = page
	s.require(scoreV2GetRequestFieldPage)
}

// SetLimit sets the Limit field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetLimit(limit *int) {
	s.Limit = limit
	s.require(scoreV2GetRequestFieldLimit)
}

// SetUserID sets the UserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetUserID(userID *string) {
	s.UserID = userID
	s.require(scoreV2GetRequestFieldUserID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetName(name *string) {
	s.Name = name
	s.require(scoreV2GetRequestFieldName)
}

// SetFromTimestamp sets the FromTimestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetFromTimestamp(fromTimestamp *time.Time) {
	s.FromTimestamp = fromTimestamp
	s.require(scoreV2GetRequestFieldFromTimestamp)
}

// SetToTimestamp sets the ToTimestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetToTimestamp(toTimestamp *time.Time) {
	s.ToTimestamp = toTimestamp
	s.require(scoreV2GetRequestFieldToTimestamp)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetEnvironment(environment []*string) {
	s.Environment = environment
	s.require(scoreV2GetRequestFieldEnvironment)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetSource(source *ScoreSource) {
	s.Source = source
	s.require(scoreV2GetRequestFieldSource)
}

// SetOperator sets the Operator field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetOperator(operator *string) {
	s.Operator = operator
	s.require(scoreV2GetRequestFieldOperator)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetValue(value *float64) {
	s.Value = value
	s.require(scoreV2GetRequestFieldValue)
}

// SetScoreIDs sets the ScoreIDs field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetScoreIDs(scoreIDs *string) {
	s.ScoreIDs = scoreIDs
	s.require(scoreV2GetRequestFieldScoreIDs)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetConfigID(configID *string) {
	s.ConfigID = configID
	s.require(scoreV2GetRequestFieldConfigID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetSessionID(sessionID *string) {
	s.SessionID = sessionID
	s.require(scoreV2GetRequestFieldSessionID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetDatasetRunID(datasetRunID *string) {
	s.DatasetRunID = datasetRunID
	s.require(scoreV2GetRequestFieldDatasetRunID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetTraceID(traceID *string) {
	s.TraceID = traceID
	s.require(scoreV2GetRequestFieldTraceID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetQueueID(queueID *string) {
	s.QueueID = queueID
	s.require(scoreV2GetRequestFieldQueueID)
}

// SetDataType sets the DataType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetDataType(dataType *ScoreDataType) {
	s.DataType = dataType
	s.require(scoreV2GetRequestFieldDataType)
}

// SetTraceTags sets the TraceTags field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetTraceTags(traceTags []*string) {
	s.TraceTags = traceTags
	s.require(scoreV2GetRequestFieldTraceTags)
}

// SetFields sets the Fields field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetRequest) SetFields(fields *string) {
	s.Fields = fields
	s.require(scoreV2GetRequestFieldFields)
}

var (
	scoreV2GetByIDRequestFieldScoreID = big.NewInt(1 << 0)
)

type ScoreV2GetByIDRequest struct {
	// The unique langfuse identifier of a score
	ScoreID string `json:"-" url:"-"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`
}

func (s *ScoreV2GetByIDRequest) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetScoreID sets the ScoreID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreV2GetByIDRequest) SetScoreID(scoreID string) {
	s.ScoreID = scoreID
	s.require(scoreV2GetByIDRequestFieldScoreID)
}

var (
	baseScoreFieldID            = big.NewInt(1 << 0)
	baseScoreFieldTraceID       = big.NewInt(1 << 1)
	baseScoreFieldSessionID     = big.NewInt(1 << 2)
	baseScoreFieldObservationID = big.NewInt(1 << 3)
	baseScoreFieldDatasetRunID  = big.NewInt(1 << 4)
	baseScoreFieldName          = big.NewInt(1 << 5)
	baseScoreFieldSource        = big.NewInt(1 << 6)
	baseScoreFieldTimestamp     = big.NewInt(1 << 7)
	baseScoreFieldCreatedAt     = big.NewInt(1 << 8)
	baseScoreFieldUpdatedAt     = big.NewInt(1 << 9)
	baseScoreFieldAuthorUserID  = big.NewInt(1 << 10)
	baseScoreFieldComment       = big.NewInt(1 << 11)
	baseScoreFieldMetadata      = big.NewInt(1 << 12)
	baseScoreFieldConfigID      = big.NewInt(1 << 13)
	baseScoreFieldQueueID       = big.NewInt(1 << 14)
	baseScoreFieldEnvironment   = big.NewInt(1 << 15)
)

type BaseScore struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (b *BaseScore) GetID() string {
	if b == nil {
		return ""
	}
	return b.ID
}

func (b *BaseScore) GetTraceID() *string {
	if b == nil {
		return nil
	}
	return b.TraceID
}

func (b *BaseScore) GetSessionID() *string {
	if b == nil {
		return nil
	}
	return b.SessionID
}

func (b *BaseScore) GetObservationID() *string {
	if b == nil {
		return nil
	}
	return b.ObservationID
}

func (b *BaseScore) GetDatasetRunID() *string {
	if b == nil {
		return nil
	}
	return b.DatasetRunID
}

func (b *BaseScore) GetName() string {
	if b == nil {
		return ""
	}
	return b.Name
}

func (b *BaseScore) GetSource() ScoreSource {
	if b == nil {
		return ""
	}
	return b.Source
}

func (b *BaseScore) GetTimestamp() time.Time {
	if b == nil {
		return time.Time{}
	}
	return b.Timestamp
}

func (b *BaseScore) GetCreatedAt() time.Time {
	if b == nil {
		return time.Time{}
	}
	return b.CreatedAt
}

func (b *BaseScore) GetUpdatedAt() time.Time {
	if b == nil {
		return time.Time{}
	}
	return b.UpdatedAt
}

func (b *BaseScore) GetAuthorUserID() *string {
	if b == nil {
		return nil
	}
	return b.AuthorUserID
}

func (b *BaseScore) GetComment() *string {
	if b == nil {
		return nil
	}
	return b.Comment
}

func (b *BaseScore) GetMetadata() interface{} {
	if b == nil {
		return nil
	}
	return b.Metadata
}

func (b *BaseScore) GetConfigID() *string {
	if b == nil {
		return nil
	}
	return b.ConfigID
}

func (b *BaseScore) GetQueueID() *string {
	if b == nil {
		return nil
	}
	return b.QueueID
}

func (b *BaseScore) GetEnvironment() string {
	if b == nil {
		return ""
	}
	return b.Environment
}

func (b *BaseScore) GetExtraProperties() map[string]interface{} {
	return b.extraProperties
}

func (b *BaseScore) require(field *big.Int) {
	if b.explicitFields == nil {
		b.explicitFields = big.NewInt(0)
	}
	b.explicitFields.Or(b.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetID(id string) {
	b.ID = id
	b.require(baseScoreFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetTraceID(traceID *string) {
	b.TraceID = traceID
	b.require(baseScoreFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetSessionID(sessionID *string) {
	b.SessionID = sessionID
	b.require(baseScoreFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetObservationID(observationID *string) {
	b.ObservationID = observationID
	b.require(baseScoreFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetDatasetRunID(datasetRunID *string) {
	b.DatasetRunID = datasetRunID
	b.require(baseScoreFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetName(name string) {
	b.Name = name
	b.require(baseScoreFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetSource(source ScoreSource) {
	b.Source = source
	b.require(baseScoreFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetTimestamp(timestamp time.Time) {
	b.Timestamp = timestamp
	b.require(baseScoreFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetCreatedAt(createdAt time.Time) {
	b.CreatedAt = createdAt
	b.require(baseScoreFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetUpdatedAt(updatedAt time.Time) {
	b.UpdatedAt = updatedAt
	b.require(baseScoreFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetAuthorUserID(authorUserID *string) {
	b.AuthorUserID = authorUserID
	b.require(baseScoreFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetComment(comment *string) {
	b.Comment = comment
	b.require(baseScoreFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetMetadata(metadata interface{}) {
	b.Metadata = metadata
	b.require(baseScoreFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetConfigID(configID *string) {
	b.ConfigID = configID
	b.require(baseScoreFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetQueueID(queueID *string) {
	b.QueueID = queueID
	b.require(baseScoreFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BaseScore) SetEnvironment(environment string) {
	b.Environment = environment
	b.require(baseScoreFieldEnvironment)
}

func (b *BaseScore) UnmarshalJSON(data []byte) error {
	type embed BaseScore
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*b),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*b = BaseScore(unmarshaler.embed)
	b.Timestamp = unmarshaler.Timestamp.Time()
	b.CreatedAt = unmarshaler.CreatedAt.Time()
	b.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *b)
	if err != nil {
		return err
	}
	b.extraProperties = extraProperties
	b.rawJSON = json.RawMessage(data)
	return nil
}

func (b *BaseScore) MarshalJSON() ([]byte, error) {
	type embed BaseScore
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*b),
		Timestamp: internal.NewDateTime(b.Timestamp),
		CreatedAt: internal.NewDateTime(b.CreatedAt),
		UpdatedAt: internal.NewDateTime(b.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, b.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (b *BaseScore) String() string {
	if len(b.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(b.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(b); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", b)
}

var (
	booleanScoreFieldID            = big.NewInt(1 << 0)
	booleanScoreFieldTraceID       = big.NewInt(1 << 1)
	booleanScoreFieldSessionID     = big.NewInt(1 << 2)
	booleanScoreFieldObservationID = big.NewInt(1 << 3)
	booleanScoreFieldDatasetRunID  = big.NewInt(1 << 4)
	booleanScoreFieldName          = big.NewInt(1 << 5)
	booleanScoreFieldSource        = big.NewInt(1 << 6)
	booleanScoreFieldTimestamp     = big.NewInt(1 << 7)
	booleanScoreFieldCreatedAt     = big.NewInt(1 << 8)
	booleanScoreFieldUpdatedAt     = big.NewInt(1 << 9)
	booleanScoreFieldAuthorUserID  = big.NewInt(1 << 10)
	booleanScoreFieldComment       = big.NewInt(1 << 11)
	booleanScoreFieldMetadata      = big.NewInt(1 << 12)
	booleanScoreFieldConfigID      = big.NewInt(1 << 13)
	booleanScoreFieldQueueID       = big.NewInt(1 << 14)
	booleanScoreFieldEnvironment   = big.NewInt(1 << 15)
	booleanScoreFieldValue         = big.NewInt(1 << 16)
	booleanScoreFieldStringValue   = big.NewInt(1 << 17)
)

type BooleanScore struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// The numeric value of the score. Equals 1 for "True" and 0 for "False"
	Value float64 `json:"value" url:"value"`
	// The string representation of the score value. Is inferred from the numeric value and equals "True" or "False"
	StringValue string `json:"stringValue" url:"stringValue"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (b *BooleanScore) GetID() string {
	if b == nil {
		return ""
	}
	return b.ID
}

func (b *BooleanScore) GetTraceID() *string {
	if b == nil {
		return nil
	}
	return b.TraceID
}

func (b *BooleanScore) GetSessionID() *string {
	if b == nil {
		return nil
	}
	return b.SessionID
}

func (b *BooleanScore) GetObservationID() *string {
	if b == nil {
		return nil
	}
	return b.ObservationID
}

func (b *BooleanScore) GetDatasetRunID() *string {
	if b == nil {
		return nil
	}
	return b.DatasetRunID
}

func (b *BooleanScore) GetName() string {
	if b == nil {
		return ""
	}
	return b.Name
}

func (b *BooleanScore) GetSource() ScoreSource {
	if b == nil {
		return ""
	}
	return b.Source
}

func (b *BooleanScore) GetTimestamp() time.Time {
	if b == nil {
		return time.Time{}
	}
	return b.Timestamp
}

func (b *BooleanScore) GetCreatedAt() time.Time {
	if b == nil {
		return time.Time{}
	}
	return b.CreatedAt
}

func (b *BooleanScore) GetUpdatedAt() time.Time {
	if b == nil {
		return time.Time{}
	}
	return b.UpdatedAt
}

func (b *BooleanScore) GetAuthorUserID() *string {
	if b == nil {
		return nil
	}
	return b.AuthorUserID
}

func (b *BooleanScore) GetComment() *string {
	if b == nil {
		return nil
	}
	return b.Comment
}

func (b *BooleanScore) GetMetadata() interface{} {
	if b == nil {
		return nil
	}
	return b.Metadata
}

func (b *BooleanScore) GetConfigID() *string {
	if b == nil {
		return nil
	}
	return b.ConfigID
}

func (b *BooleanScore) GetQueueID() *string {
	if b == nil {
		return nil
	}
	return b.QueueID
}

func (b *BooleanScore) GetEnvironment() string {
	if b == nil {
		return ""
	}
	return b.Environment
}

func (b *BooleanScore) GetValue() float64 {
	if b == nil {
		return 0
	}
	return b.Value
}

func (b *BooleanScore) GetStringValue() string {
	if b == nil {
		return ""
	}
	return b.StringValue
}

func (b *BooleanScore) GetExtraProperties() map[string]interface{} {
	return b.extraProperties
}

func (b *BooleanScore) require(field *big.Int) {
	if b.explicitFields == nil {
		b.explicitFields = big.NewInt(0)
	}
	b.explicitFields.Or(b.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetID(id string) {
	b.ID = id
	b.require(booleanScoreFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetTraceID(traceID *string) {
	b.TraceID = traceID
	b.require(booleanScoreFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetSessionID(sessionID *string) {
	b.SessionID = sessionID
	b.require(booleanScoreFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetObservationID(observationID *string) {
	b.ObservationID = observationID
	b.require(booleanScoreFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetDatasetRunID(datasetRunID *string) {
	b.DatasetRunID = datasetRunID
	b.require(booleanScoreFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetName(name string) {
	b.Name = name
	b.require(booleanScoreFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetSource(source ScoreSource) {
	b.Source = source
	b.require(booleanScoreFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetTimestamp(timestamp time.Time) {
	b.Timestamp = timestamp
	b.require(booleanScoreFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetCreatedAt(createdAt time.Time) {
	b.CreatedAt = createdAt
	b.require(booleanScoreFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetUpdatedAt(updatedAt time.Time) {
	b.UpdatedAt = updatedAt
	b.require(booleanScoreFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetAuthorUserID(authorUserID *string) {
	b.AuthorUserID = authorUserID
	b.require(booleanScoreFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetComment(comment *string) {
	b.Comment = comment
	b.require(booleanScoreFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetMetadata(metadata interface{}) {
	b.Metadata = metadata
	b.require(booleanScoreFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetConfigID(configID *string) {
	b.ConfigID = configID
	b.require(booleanScoreFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetQueueID(queueID *string) {
	b.QueueID = queueID
	b.require(booleanScoreFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetEnvironment(environment string) {
	b.Environment = environment
	b.require(booleanScoreFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetValue(value float64) {
	b.Value = value
	b.require(booleanScoreFieldValue)
}

// SetStringValue sets the StringValue field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BooleanScore) SetStringValue(stringValue string) {
	b.StringValue = stringValue
	b.require(booleanScoreFieldStringValue)
}

func (b *BooleanScore) UnmarshalJSON(data []byte) error {
	type embed BooleanScore
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*b),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*b = BooleanScore(unmarshaler.embed)
	b.Timestamp = unmarshaler.Timestamp.Time()
	b.CreatedAt = unmarshaler.CreatedAt.Time()
	b.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *b)
	if err != nil {
		return err
	}
	b.extraProperties = extraProperties
	b.rawJSON = json.RawMessage(data)
	return nil
}

func (b *BooleanScore) MarshalJSON() ([]byte, error) {
	type embed BooleanScore
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*b),
		Timestamp: internal.NewDateTime(b.Timestamp),
		CreatedAt: internal.NewDateTime(b.CreatedAt),
		UpdatedAt: internal.NewDateTime(b.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, b.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (b *BooleanScore) String() string {
	if len(b.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(b.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(b); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", b)
}

var (
	categoricalScoreFieldID            = big.NewInt(1 << 0)
	categoricalScoreFieldTraceID       = big.NewInt(1 << 1)
	categoricalScoreFieldSessionID     = big.NewInt(1 << 2)
	categoricalScoreFieldObservationID = big.NewInt(1 << 3)
	categoricalScoreFieldDatasetRunID  = big.NewInt(1 << 4)
	categoricalScoreFieldName          = big.NewInt(1 << 5)
	categoricalScoreFieldSource        = big.NewInt(1 << 6)
	categoricalScoreFieldTimestamp     = big.NewInt(1 << 7)
	categoricalScoreFieldCreatedAt     = big.NewInt(1 << 8)
	categoricalScoreFieldUpdatedAt     = big.NewInt(1 << 9)
	categoricalScoreFieldAuthorUserID  = big.NewInt(1 << 10)
	categoricalScoreFieldComment       = big.NewInt(1 << 11)
	categoricalScoreFieldMetadata      = big.NewInt(1 << 12)
	categoricalScoreFieldConfigID      = big.NewInt(1 << 13)
	categoricalScoreFieldQueueID       = big.NewInt(1 << 14)
	categoricalScoreFieldEnvironment   = big.NewInt(1 << 15)
	categoricalScoreFieldValue         = big.NewInt(1 << 16)
	categoricalScoreFieldStringValue   = big.NewInt(1 << 17)
)

type CategoricalScore struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// Represents the numeric category mapping of the stringValue. If no config is linked, defaults to 0.
	Value float64 `json:"value" url:"value"`
	// The string representation of the score value. If no config is linked, can be any string. Otherwise, must map to a config category
	StringValue string `json:"stringValue" url:"stringValue"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (c *CategoricalScore) GetID() string {
	if c == nil {
		return ""
	}
	return c.ID
}

func (c *CategoricalScore) GetTraceID() *string {
	if c == nil {
		return nil
	}
	return c.TraceID
}

func (c *CategoricalScore) GetSessionID() *string {
	if c == nil {
		return nil
	}
	return c.SessionID
}

func (c *CategoricalScore) GetObservationID() *string {
	if c == nil {
		return nil
	}
	return c.ObservationID
}

func (c *CategoricalScore) GetDatasetRunID() *string {
	if c == nil {
		return nil
	}
	return c.DatasetRunID
}

func (c *CategoricalScore) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CategoricalScore) GetSource() ScoreSource {
	if c == nil {
		return ""
	}
	return c.Source
}

func (c *CategoricalScore) GetTimestamp() time.Time {
	if c == nil {
		return time.Time{}
	}
	return c.Timestamp
}

func (c *CategoricalScore) GetCreatedAt() time.Time {
	if c == nil {
		return time.Time{}
	}
	return c.CreatedAt
}

func (c *CategoricalScore) GetUpdatedAt() time.Time {
	if c == nil {
		return time.Time{}
	}
	return c.UpdatedAt
}

func (c *CategoricalScore) GetAuthorUserID() *string {
	if c == nil {
		return nil
	}
	return c.AuthorUserID
}

func (c *CategoricalScore) GetComment() *string {
	if c == nil {
		return nil
	}
	return c.Comment
}

func (c *CategoricalScore) GetMetadata() interface{} {
	if c == nil {
		return nil
	}
	return c.Metadata
}

func (c *CategoricalScore) GetConfigID() *string {
	if c == nil {
		return nil
	}
	return c.ConfigID
}

func (c *CategoricalScore) GetQueueID() *string {
	if c == nil {
		return nil
	}
	return c.QueueID
}

func (c *CategoricalScore) GetEnvironment() string {
	if c == nil {
		return ""
	}
	return c.Environment
}

func (c *CategoricalScore) GetValue() float64 {
	if c == nil {
		return 0
	}
	return c.Value
}

func (c *CategoricalScore) GetStringValue() string {
	if c == nil {
		return ""
	}
	return c.StringValue
}

func (c *CategoricalScore) GetExtraProperties() map[string]interface{} {
	return c.extraProperties
}

func (c *CategoricalScore) require(field *big.Int) {
	if c.explicitFields == nil {
		c.explicitFields = big.NewInt(0)
	}
	c.explicitFields.Or(c.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetID(id string) {
	c.ID = id
	c.require(categoricalScoreFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetTraceID(traceID *string) {
	c.TraceID = traceID
	c.require(categoricalScoreFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetSessionID(sessionID *string) {
	c.SessionID = sessionID
	c.require(categoricalScoreFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetObservationID(observationID *string) {
	c.ObservationID = observationID
	c.require(categoricalScoreFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetDatasetRunID(datasetRunID *string) {
	c.DatasetRunID = datasetRunID
	c.require(categoricalScoreFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetName(name string) {
	c.Name = name
	c.require(categoricalScoreFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetSource(source ScoreSource) {
	c.Source = source
	c.require(categoricalScoreFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetTimestamp(timestamp time.Time) {
	c.Timestamp = timestamp
	c.require(categoricalScoreFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetCreatedAt(createdAt time.Time) {
	c.CreatedAt = createdAt
	c.require(categoricalScoreFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetUpdatedAt(updatedAt time.Time) {
	c.UpdatedAt = updatedAt
	c.require(categoricalScoreFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetAuthorUserID(authorUserID *string) {
	c.AuthorUserID = authorUserID
	c.require(categoricalScoreFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetComment(comment *string) {
	c.Comment = comment
	c.require(categoricalScoreFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetMetadata(metadata interface{}) {
	c.Metadata = metadata
	c.require(categoricalScoreFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetConfigID(configID *string) {
	c.ConfigID = configID
	c.require(categoricalScoreFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetQueueID(queueID *string) {
	c.QueueID = queueID
	c.require(categoricalScoreFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetEnvironment(environment string) {
	c.Environment = environment
	c.require(categoricalScoreFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetValue(value float64) {
	c.Value = value
	c.require(categoricalScoreFieldValue)
}

// SetStringValue sets the StringValue field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CategoricalScore) SetStringValue(stringValue string) {
	c.StringValue = stringValue
	c.require(categoricalScoreFieldStringValue)
}

func (c *CategoricalScore) UnmarshalJSON(data []byte) error {
	type embed CategoricalScore
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*c),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*c = CategoricalScore(unmarshaler.embed)
	c.Timestamp = unmarshaler.Timestamp.Time()
	c.CreatedAt = unmarshaler.CreatedAt.Time()
	c.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *c)
	if err != nil {
		return err
	}
	c.extraProperties = extraProperties
	c.rawJSON = json.RawMessage(data)
	return nil
}

func (c *CategoricalScore) MarshalJSON() ([]byte, error) {
	type embed CategoricalScore
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*c),
		Timestamp: internal.NewDateTime(c.Timestamp),
		CreatedAt: internal.NewDateTime(c.CreatedAt),
		UpdatedAt: internal.NewDateTime(c.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (c *CategoricalScore) String() string {
	if len(c.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(c.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(c); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", c)
}

var (
	correctionScoreFieldID            = big.NewInt(1 << 0)
	correctionScoreFieldTraceID       = big.NewInt(1 << 1)
	correctionScoreFieldSessionID     = big.NewInt(1 << 2)
	correctionScoreFieldObservationID = big.NewInt(1 << 3)
	correctionScoreFieldDatasetRunID  = big.NewInt(1 << 4)
	correctionScoreFieldName          = big.NewInt(1 << 5)
	correctionScoreFieldSource        = big.NewInt(1 << 6)
	correctionScoreFieldTimestamp     = big.NewInt(1 << 7)
	correctionScoreFieldCreatedAt     = big.NewInt(1 << 8)
	correctionScoreFieldUpdatedAt     = big.NewInt(1 << 9)
	correctionScoreFieldAuthorUserID  = big.NewInt(1 << 10)
	correctionScoreFieldComment       = big.NewInt(1 << 11)
	correctionScoreFieldMetadata      = big.NewInt(1 << 12)
	correctionScoreFieldConfigID      = big.NewInt(1 << 13)
	correctionScoreFieldQueueID       = big.NewInt(1 << 14)
	correctionScoreFieldEnvironment   = big.NewInt(1 << 15)
	correctionScoreFieldValue         = big.NewInt(1 << 16)
	correctionScoreFieldStringValue   = big.NewInt(1 << 17)
)

type CorrectionScore struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// The numeric value of the score. Always 0 for correction scores.
	Value float64 `json:"value" url:"value"`
	// The string representation of the correction content
	StringValue string `json:"stringValue" url:"stringValue"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (c *CorrectionScore) GetID() string {
	if c == nil {
		return ""
	}
	return c.ID
}

func (c *CorrectionScore) GetTraceID() *string {
	if c == nil {
		return nil
	}
	return c.TraceID
}

func (c *CorrectionScore) GetSessionID() *string {
	if c == nil {
		return nil
	}
	return c.SessionID
}

func (c *CorrectionScore) GetObservationID() *string {
	if c == nil {
		return nil
	}
	return c.ObservationID
}

func (c *CorrectionScore) GetDatasetRunID() *string {
	if c == nil {
		return nil
	}
	return c.DatasetRunID
}

func (c *CorrectionScore) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CorrectionScore) GetSource() ScoreSource {
	if c == nil {
		return ""
	}
	return c.Source
}

func (c *CorrectionScore) GetTimestamp() time.Time {
	if c == nil {
		return time.Time{}
	}
	return c.Timestamp
}

func (c *CorrectionScore) GetCreatedAt() time.Time {
	if c == nil {
		return time.Time{}
	}
	return c.CreatedAt
}

func (c *CorrectionScore) GetUpdatedAt() time.Time {
	if c == nil {
		return time.Time{}
	}
	return c.UpdatedAt
}

func (c *CorrectionScore) GetAuthorUserID() *string {
	if c == nil {
		return nil
	}
	return c.AuthorUserID
}

func (c *CorrectionScore) GetComment() *string {
	if c == nil {
		return nil
	}
	return c.Comment
}

func (c *CorrectionScore) GetMetadata() interface{} {
	if c == nil {
		return nil
	}
	return c.Metadata
}

func (c *CorrectionScore) GetConfigID() *string {
	if c == nil {
		return nil
	}
	return c.ConfigID
}

func (c *CorrectionScore) GetQueueID() *string {
	if c == nil {
		return nil
	}
	return c.QueueID
}

func (c *CorrectionScore) GetEnvironment() string {
	if c == nil {
		return ""
	}
	return c.Environment
}

func (c *CorrectionScore) GetValue() float64 {
	if c == nil {
		return 0
	}
	return c.Value
}

func (c *CorrectionScore) GetStringValue() string {
	if c == nil {
		return ""
	}
	return c.StringValue
}

func (c *CorrectionScore) GetExtraProperties() map[string]interface{} {
	return c.extraProperties
}

func (c *CorrectionScore) require(field *big.Int) {
	if c.explicitFields == nil {
		c.explicitFields = big.NewInt(0)
	}
	c.explicitFields.Or(c.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetID(id string) {
	c.ID = id
	c.require(correctionScoreFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetTraceID(traceID *string) {
	c.TraceID = traceID
	c.require(correctionScoreFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetSessionID(sessionID *string) {
	c.SessionID = sessionID
	c.require(correctionScoreFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetObservationID(observationID *string) {
	c.ObservationID = observationID
	c.require(correctionScoreFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetDatasetRunID(datasetRunID *string) {
	c.DatasetRunID = datasetRunID
	c.require(correctionScoreFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetName(name string) {
	c.Name = name
	c.require(correctionScoreFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetSource(source ScoreSource) {
	c.Source = source
	c.require(correctionScoreFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetTimestamp(timestamp time.Time) {
	c.Timestamp = timestamp
	c.require(correctionScoreFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetCreatedAt(createdAt time.Time) {
	c.CreatedAt = createdAt
	c.require(correctionScoreFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetUpdatedAt(updatedAt time.Time) {
	c.UpdatedAt = updatedAt
	c.require(correctionScoreFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetAuthorUserID(authorUserID *string) {
	c.AuthorUserID = authorUserID
	c.require(correctionScoreFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetComment(comment *string) {
	c.Comment = comment
	c.require(correctionScoreFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetMetadata(metadata interface{}) {
	c.Metadata = metadata
	c.require(correctionScoreFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetConfigID(configID *string) {
	c.ConfigID = configID
	c.require(correctionScoreFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetQueueID(queueID *string) {
	c.QueueID = queueID
	c.require(correctionScoreFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetEnvironment(environment string) {
	c.Environment = environment
	c.require(correctionScoreFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetValue(value float64) {
	c.Value = value
	c.require(correctionScoreFieldValue)
}

// SetStringValue sets the StringValue field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CorrectionScore) SetStringValue(stringValue string) {
	c.StringValue = stringValue
	c.require(correctionScoreFieldStringValue)
}

func (c *CorrectionScore) UnmarshalJSON(data []byte) error {
	type embed CorrectionScore
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*c),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*c = CorrectionScore(unmarshaler.embed)
	c.Timestamp = unmarshaler.Timestamp.Time()
	c.CreatedAt = unmarshaler.CreatedAt.Time()
	c.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *c)
	if err != nil {
		return err
	}
	c.extraProperties = extraProperties
	c.rawJSON = json.RawMessage(data)
	return nil
}

func (c *CorrectionScore) MarshalJSON() ([]byte, error) {
	type embed CorrectionScore
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*c),
		Timestamp: internal.NewDateTime(c.Timestamp),
		CreatedAt: internal.NewDateTime(c.CreatedAt),
		UpdatedAt: internal.NewDateTime(c.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (c *CorrectionScore) String() string {
	if len(c.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(c.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(c); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", c)
}

var (
	getScoresResponseFieldData = big.NewInt(1 << 0)
	getScoresResponseFieldMeta = big.NewInt(1 << 1)
)

type GetScoresResponse struct {
	Data []*GetScoresResponseData `json:"data" url:"data"`
	Meta *UtilsMetaResponse       `json:"meta" url:"meta"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (g *GetScoresResponse) GetData() []*GetScoresResponseData {
	if g == nil {
		return nil
	}
	return g.Data
}

func (g *GetScoresResponse) GetMeta() *UtilsMetaResponse {
	if g == nil {
		return nil
	}
	return g.Meta
}

func (g *GetScoresResponse) GetExtraProperties() map[string]interface{} {
	return g.extraProperties
}

func (g *GetScoresResponse) require(field *big.Int) {
	if g.explicitFields == nil {
		g.explicitFields = big.NewInt(0)
	}
	g.explicitFields.Or(g.explicitFields, field)
}

// SetData sets the Data field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponse) SetData(data []*GetScoresResponseData) {
	g.Data = data
	g.require(getScoresResponseFieldData)
}

// SetMeta sets the Meta field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponse) SetMeta(meta *UtilsMetaResponse) {
	g.Meta = meta
	g.require(getScoresResponseFieldMeta)
}

func (g *GetScoresResponse) UnmarshalJSON(data []byte) error {
	type unmarshaler GetScoresResponse
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*g = GetScoresResponse(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetScoresResponse) MarshalJSON() ([]byte, error) {
	type embed GetScoresResponse
	var marshaler = struct {
		embed
	}{
		embed: embed(*g),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetScoresResponse) String() string {
	if len(g.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(g.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(g); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", g)
}

type GetScoresResponseData struct {
	GetScoresResponseDataZero  *GetScoresResponseDataZero
	GetScoresResponseDataOne   *GetScoresResponseDataOne
	GetScoresResponseDataTwo   *GetScoresResponseDataTwo
	GetScoresResponseDataThree *GetScoresResponseDataThree

	typ string
}

func (g *GetScoresResponseData) GetGetScoresResponseDataZero() *GetScoresResponseDataZero {
	if g == nil {
		return nil
	}
	return g.GetScoresResponseDataZero
}

func (g *GetScoresResponseData) GetGetScoresResponseDataOne() *GetScoresResponseDataOne {
	if g == nil {
		return nil
	}
	return g.GetScoresResponseDataOne
}

func (g *GetScoresResponseData) GetGetScoresResponseDataTwo() *GetScoresResponseDataTwo {
	if g == nil {
		return nil
	}
	return g.GetScoresResponseDataTwo
}

func (g *GetScoresResponseData) GetGetScoresResponseDataThree() *GetScoresResponseDataThree {
	if g == nil {
		return nil
	}
	return g.GetScoresResponseDataThree
}

func (g *GetScoresResponseData) UnmarshalJSON(data []byte) error {
	valueGetScoresResponseDataZero := new(GetScoresResponseDataZero)
	if err := json.Unmarshal(data, &valueGetScoresResponseDataZero); err == nil {
		g.typ = "GetScoresResponseDataZero"
		g.GetScoresResponseDataZero = valueGetScoresResponseDataZero
		return nil
	}
	valueGetScoresResponseDataOne := new(GetScoresResponseDataOne)
	if err := json.Unmarshal(data, &valueGetScoresResponseDataOne); err == nil {
		g.typ = "GetScoresResponseDataOne"
		g.GetScoresResponseDataOne = valueGetScoresResponseDataOne
		return nil
	}
	valueGetScoresResponseDataTwo := new(GetScoresResponseDataTwo)
	if err := json.Unmarshal(data, &valueGetScoresResponseDataTwo); err == nil {
		g.typ = "GetScoresResponseDataTwo"
		g.GetScoresResponseDataTwo = valueGetScoresResponseDataTwo
		return nil
	}
	valueGetScoresResponseDataThree := new(GetScoresResponseDataThree)
	if err := json.Unmarshal(data, &valueGetScoresResponseDataThree); err == nil {
		g.typ = "GetScoresResponseDataThree"
		g.GetScoresResponseDataThree = valueGetScoresResponseDataThree
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, g)
}

func (g GetScoresResponseData) MarshalJSON() ([]byte, error) {
	if g.typ == "GetScoresResponseDataZero" || g.GetScoresResponseDataZero != nil {
		return json.Marshal(g.GetScoresResponseDataZero)
	}
	if g.typ == "GetScoresResponseDataOne" || g.GetScoresResponseDataOne != nil {
		return json.Marshal(g.GetScoresResponseDataOne)
	}
	if g.typ == "GetScoresResponseDataTwo" || g.GetScoresResponseDataTwo != nil {
		return json.Marshal(g.GetScoresResponseDataTwo)
	}
	if g.typ == "GetScoresResponseDataThree" || g.GetScoresResponseDataThree != nil {
		return json.Marshal(g.GetScoresResponseDataThree)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", g)
}

type GetScoresResponseDataVisitor interface {
	VisitGetScoresResponseDataZero(*GetScoresResponseDataZero) error
	VisitGetScoresResponseDataOne(*GetScoresResponseDataOne) error
	VisitGetScoresResponseDataTwo(*GetScoresResponseDataTwo) error
	VisitGetScoresResponseDataThree(*GetScoresResponseDataThree) error
}

func (g *GetScoresResponseData) Accept(visitor GetScoresResponseDataVisitor) error {
	if g.typ == "GetScoresResponseDataZero" || g.GetScoresResponseDataZero != nil {
		return visitor.VisitGetScoresResponseDataZero(g.GetScoresResponseDataZero)
	}
	if g.typ == "GetScoresResponseDataOne" || g.GetScoresResponseDataOne != nil {
		return visitor.VisitGetScoresResponseDataOne(g.GetScoresResponseDataOne)
	}
	if g.typ == "GetScoresResponseDataTwo" || g.GetScoresResponseDataTwo != nil {
		return visitor.VisitGetScoresResponseDataTwo(g.GetScoresResponseDataTwo)
	}
	if g.typ == "GetScoresResponseDataThree" || g.GetScoresResponseDataThree != nil {
		return visitor.VisitGetScoresResponseDataThree(g.GetScoresResponseDataThree)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", g)
}

var (
	getScoresResponseDataBooleanFieldID            = big.NewInt(1 << 0)
	getScoresResponseDataBooleanFieldTraceID       = big.NewInt(1 << 1)
	getScoresResponseDataBooleanFieldSessionID     = big.NewInt(1 << 2)
	getScoresResponseDataBooleanFieldObservationID = big.NewInt(1 << 3)
	getScoresResponseDataBooleanFieldDatasetRunID  = big.NewInt(1 << 4)
	getScoresResponseDataBooleanFieldName          = big.NewInt(1 << 5)
	getScoresResponseDataBooleanFieldSource        = big.NewInt(1 << 6)
	getScoresResponseDataBooleanFieldTimestamp     = big.NewInt(1 << 7)
	getScoresResponseDataBooleanFieldCreatedAt     = big.NewInt(1 << 8)
	getScoresResponseDataBooleanFieldUpdatedAt     = big.NewInt(1 << 9)
	getScoresResponseDataBooleanFieldAuthorUserID  = big.NewInt(1 << 10)
	getScoresResponseDataBooleanFieldComment       = big.NewInt(1 << 11)
	getScoresResponseDataBooleanFieldMetadata      = big.NewInt(1 << 12)
	getScoresResponseDataBooleanFieldConfigID      = big.NewInt(1 << 13)
	getScoresResponseDataBooleanFieldQueueID       = big.NewInt(1 << 14)
	getScoresResponseDataBooleanFieldEnvironment   = big.NewInt(1 << 15)
	getScoresResponseDataBooleanFieldValue         = big.NewInt(1 << 16)
	getScoresResponseDataBooleanFieldStringValue   = big.NewInt(1 << 17)
	getScoresResponseDataBooleanFieldTrace         = big.NewInt(1 << 18)
)

type GetScoresResponseDataBoolean struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// The numeric value of the score. Equals 1 for "True" and 0 for "False"
	Value float64 `json:"value" url:"value"`
	// The string representation of the score value. Is inferred from the numeric value and equals "True" or "False"
	StringValue string                      `json:"stringValue" url:"stringValue"`
	Trace       *GetScoresResponseTraceData `json:"trace,omitempty" url:"trace,omitempty"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (g *GetScoresResponseDataBoolean) GetID() string {
	if g == nil {
		return ""
	}
	return g.ID
}

func (g *GetScoresResponseDataBoolean) GetTraceID() *string {
	if g == nil {
		return nil
	}
	return g.TraceID
}

func (g *GetScoresResponseDataBoolean) GetSessionID() *string {
	if g == nil {
		return nil
	}
	return g.SessionID
}

func (g *GetScoresResponseDataBoolean) GetObservationID() *string {
	if g == nil {
		return nil
	}
	return g.ObservationID
}

func (g *GetScoresResponseDataBoolean) GetDatasetRunID() *string {
	if g == nil {
		return nil
	}
	return g.DatasetRunID
}

func (g *GetScoresResponseDataBoolean) GetName() string {
	if g == nil {
		return ""
	}
	return g.Name
}

func (g *GetScoresResponseDataBoolean) GetSource() ScoreSource {
	if g == nil {
		return ""
	}
	return g.Source
}

func (g *GetScoresResponseDataBoolean) GetTimestamp() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.Timestamp
}

func (g *GetScoresResponseDataBoolean) GetCreatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.CreatedAt
}

func (g *GetScoresResponseDataBoolean) GetUpdatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.UpdatedAt
}

func (g *GetScoresResponseDataBoolean) GetAuthorUserID() *string {
	if g == nil {
		return nil
	}
	return g.AuthorUserID
}

func (g *GetScoresResponseDataBoolean) GetComment() *string {
	if g == nil {
		return nil
	}
	return g.Comment
}

func (g *GetScoresResponseDataBoolean) GetMetadata() interface{} {
	if g == nil {
		return nil
	}
	return g.Metadata
}

func (g *GetScoresResponseDataBoolean) GetConfigID() *string {
	if g == nil {
		return nil
	}
	return g.ConfigID
}

func (g *GetScoresResponseDataBoolean) GetQueueID() *string {
	if g == nil {
		return nil
	}
	return g.QueueID
}

func (g *GetScoresResponseDataBoolean) GetEnvironment() string {
	if g == nil {
		return ""
	}
	return g.Environment
}

func (g *GetScoresResponseDataBoolean) GetValue() float64 {
	if g == nil {
		return 0
	}
	return g.Value
}

func (g *GetScoresResponseDataBoolean) GetStringValue() string {
	if g == nil {
		return ""
	}
	return g.StringValue
}

func (g *GetScoresResponseDataBoolean) GetTrace() *GetScoresResponseTraceData {
	if g == nil {
		return nil
	}
	return g.Trace
}

func (g *GetScoresResponseDataBoolean) GetExtraProperties() map[string]interface{} {
	return g.extraProperties
}

func (g *GetScoresResponseDataBoolean) require(field *big.Int) {
	if g.explicitFields == nil {
		g.explicitFields = big.NewInt(0)
	}
	g.explicitFields.Or(g.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetID(id string) {
	g.ID = id
	g.require(getScoresResponseDataBooleanFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetTraceID(traceID *string) {
	g.TraceID = traceID
	g.require(getScoresResponseDataBooleanFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetSessionID(sessionID *string) {
	g.SessionID = sessionID
	g.require(getScoresResponseDataBooleanFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetObservationID(observationID *string) {
	g.ObservationID = observationID
	g.require(getScoresResponseDataBooleanFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetDatasetRunID(datasetRunID *string) {
	g.DatasetRunID = datasetRunID
	g.require(getScoresResponseDataBooleanFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetName(name string) {
	g.Name = name
	g.require(getScoresResponseDataBooleanFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetSource(source ScoreSource) {
	g.Source = source
	g.require(getScoresResponseDataBooleanFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetTimestamp(timestamp time.Time) {
	g.Timestamp = timestamp
	g.require(getScoresResponseDataBooleanFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetCreatedAt(createdAt time.Time) {
	g.CreatedAt = createdAt
	g.require(getScoresResponseDataBooleanFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetUpdatedAt(updatedAt time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getScoresResponseDataBooleanFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetAuthorUserID(authorUserID *string) {
	g.AuthorUserID = authorUserID
	g.require(getScoresResponseDataBooleanFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetComment(comment *string) {
	g.Comment = comment
	g.require(getScoresResponseDataBooleanFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetMetadata(metadata interface{}) {
	g.Metadata = metadata
	g.require(getScoresResponseDataBooleanFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetConfigID(configID *string) {
	g.ConfigID = configID
	g.require(getScoresResponseDataBooleanFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetQueueID(queueID *string) {
	g.QueueID = queueID
	g.require(getScoresResponseDataBooleanFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetEnvironment(environment string) {
	g.Environment = environment
	g.require(getScoresResponseDataBooleanFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetValue(value float64) {
	g.Value = value
	g.require(getScoresResponseDataBooleanFieldValue)
}

// SetStringValue sets the StringValue field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetStringValue(stringValue string) {
	g.StringValue = stringValue
	g.require(getScoresResponseDataBooleanFieldStringValue)
}

// SetTrace sets the Trace field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataBoolean) SetTrace(trace *GetScoresResponseTraceData) {
	g.Trace = trace
	g.require(getScoresResponseDataBooleanFieldTrace)
}

func (g *GetScoresResponseDataBoolean) UnmarshalJSON(data []byte) error {
	type embed GetScoresResponseDataBoolean
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetScoresResponseDataBoolean(unmarshaler.embed)
	g.Timestamp = unmarshaler.Timestamp.Time()
	g.CreatedAt = unmarshaler.CreatedAt.Time()
	g.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetScoresResponseDataBoolean) MarshalJSON() ([]byte, error) {
	type embed GetScoresResponseDataBoolean
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*g),
		Timestamp: internal.NewDateTime(g.Timestamp),
		CreatedAt: internal.NewDateTime(g.CreatedAt),
		UpdatedAt: internal.NewDateTime(g.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetScoresResponseDataBoolean) String() string {
	if len(g.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(g.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(g); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", g)
}

var (
	getScoresResponseDataCategoricalFieldID            = big.NewInt(1 << 0)
	getScoresResponseDataCategoricalFieldTraceID       = big.NewInt(1 << 1)
	getScoresResponseDataCategoricalFieldSessionID     = big.NewInt(1 << 2)
	getScoresResponseDataCategoricalFieldObservationID = big.NewInt(1 << 3)
	getScoresResponseDataCategoricalFieldDatasetRunID  = big.NewInt(1 << 4)
	getScoresResponseDataCategoricalFieldName          = big.NewInt(1 << 5)
	getScoresResponseDataCategoricalFieldSource        = big.NewInt(1 << 6)
	getScoresResponseDataCategoricalFieldTimestamp     = big.NewInt(1 << 7)
	getScoresResponseDataCategoricalFieldCreatedAt     = big.NewInt(1 << 8)
	getScoresResponseDataCategoricalFieldUpdatedAt     = big.NewInt(1 << 9)
	getScoresResponseDataCategoricalFieldAuthorUserID  = big.NewInt(1 << 10)
	getScoresResponseDataCategoricalFieldComment       = big.NewInt(1 << 11)
	getScoresResponseDataCategoricalFieldMetadata      = big.NewInt(1 << 12)
	getScoresResponseDataCategoricalFieldConfigID      = big.NewInt(1 << 13)
	getScoresResponseDataCategoricalFieldQueueID       = big.NewInt(1 << 14)
	getScoresResponseDataCategoricalFieldEnvironment   = big.NewInt(1 << 15)
	getScoresResponseDataCategoricalFieldValue         = big.NewInt(1 << 16)
	getScoresResponseDataCategoricalFieldStringValue   = big.NewInt(1 << 17)
	getScoresResponseDataCategoricalFieldTrace         = big.NewInt(1 << 18)
)

type GetScoresResponseDataCategorical struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// Represents the numeric category mapping of the stringValue. If no config is linked, defaults to 0.
	Value float64 `json:"value" url:"value"`
	// The string representation of the score value. If no config is linked, can be any string. Otherwise, must map to a config category
	StringValue string                      `json:"stringValue" url:"stringValue"`
	Trace       *GetScoresResponseTraceData `json:"trace,omitempty" url:"trace,omitempty"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (g *GetScoresResponseDataCategorical) GetID() string {
	if g == nil {
		return ""
	}
	return g.ID
}

func (g *GetScoresResponseDataCategorical) GetTraceID() *string {
	if g == nil {
		return nil
	}
	return g.TraceID
}

func (g *GetScoresResponseDataCategorical) GetSessionID() *string {
	if g == nil {
		return nil
	}
	return g.SessionID
}

func (g *GetScoresResponseDataCategorical) GetObservationID() *string {
	if g == nil {
		return nil
	}
	return g.ObservationID
}

func (g *GetScoresResponseDataCategorical) GetDatasetRunID() *string {
	if g == nil {
		return nil
	}
	return g.DatasetRunID
}

func (g *GetScoresResponseDataCategorical) GetName() string {
	if g == nil {
		return ""
	}
	return g.Name
}

func (g *GetScoresResponseDataCategorical) GetSource() ScoreSource {
	if g == nil {
		return ""
	}
	return g.Source
}

func (g *GetScoresResponseDataCategorical) GetTimestamp() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.Timestamp
}

func (g *GetScoresResponseDataCategorical) GetCreatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.CreatedAt
}

func (g *GetScoresResponseDataCategorical) GetUpdatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.UpdatedAt
}

func (g *GetScoresResponseDataCategorical) GetAuthorUserID() *string {
	if g == nil {
		return nil
	}
	return g.AuthorUserID
}

func (g *GetScoresResponseDataCategorical) GetComment() *string {
	if g == nil {
		return nil
	}
	return g.Comment
}

func (g *GetScoresResponseDataCategorical) GetMetadata() interface{} {
	if g == nil {
		return nil
	}
	return g.Metadata
}

func (g *GetScoresResponseDataCategorical) GetConfigID() *string {
	if g == nil {
		return nil
	}
	return g.ConfigID
}

func (g *GetScoresResponseDataCategorical) GetQueueID() *string {
	if g == nil {
		return nil
	}
	return g.QueueID
}

func (g *GetScoresResponseDataCategorical) GetEnvironment() string {
	if g == nil {
		return ""
	}
	return g.Environment
}

func (g *GetScoresResponseDataCategorical) GetValue() float64 {
	if g == nil {
		return 0
	}
	return g.Value
}

func (g *GetScoresResponseDataCategorical) GetStringValue() string {
	if g == nil {
		return ""
	}
	return g.StringValue
}

func (g *GetScoresResponseDataCategorical) GetTrace() *GetScoresResponseTraceData {
	if g == nil {
		return nil
	}
	return g.Trace
}

func (g *GetScoresResponseDataCategorical) GetExtraProperties() map[string]interface{} {
	return g.extraProperties
}

func (g *GetScoresResponseDataCategorical) require(field *big.Int) {
	if g.explicitFields == nil {
		g.explicitFields = big.NewInt(0)
	}
	g.explicitFields.Or(g.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetID(id string) {
	g.ID = id
	g.require(getScoresResponseDataCategoricalFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetTraceID(traceID *string) {
	g.TraceID = traceID
	g.require(getScoresResponseDataCategoricalFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetSessionID(sessionID *string) {
	g.SessionID = sessionID
	g.require(getScoresResponseDataCategoricalFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetObservationID(observationID *string) {
	g.ObservationID = observationID
	g.require(getScoresResponseDataCategoricalFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetDatasetRunID(datasetRunID *string) {
	g.DatasetRunID = datasetRunID
	g.require(getScoresResponseDataCategoricalFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetName(name string) {
	g.Name = name
	g.require(getScoresResponseDataCategoricalFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetSource(source ScoreSource) {
	g.Source = source
	g.require(getScoresResponseDataCategoricalFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetTimestamp(timestamp time.Time) {
	g.Timestamp = timestamp
	g.require(getScoresResponseDataCategoricalFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetCreatedAt(createdAt time.Time) {
	g.CreatedAt = createdAt
	g.require(getScoresResponseDataCategoricalFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetUpdatedAt(updatedAt time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getScoresResponseDataCategoricalFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetAuthorUserID(authorUserID *string) {
	g.AuthorUserID = authorUserID
	g.require(getScoresResponseDataCategoricalFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetComment(comment *string) {
	g.Comment = comment
	g.require(getScoresResponseDataCategoricalFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetMetadata(metadata interface{}) {
	g.Metadata = metadata
	g.require(getScoresResponseDataCategoricalFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetConfigID(configID *string) {
	g.ConfigID = configID
	g.require(getScoresResponseDataCategoricalFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetQueueID(queueID *string) {
	g.QueueID = queueID
	g.require(getScoresResponseDataCategoricalFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetEnvironment(environment string) {
	g.Environment = environment
	g.require(getScoresResponseDataCategoricalFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetValue(value float64) {
	g.Value = value
	g.require(getScoresResponseDataCategoricalFieldValue)
}

// SetStringValue sets the StringValue field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetStringValue(stringValue string) {
	g.StringValue = stringValue
	g.require(getScoresResponseDataCategoricalFieldStringValue)
}

// SetTrace sets the Trace field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCategorical) SetTrace(trace *GetScoresResponseTraceData) {
	g.Trace = trace
	g.require(getScoresResponseDataCategoricalFieldTrace)
}

func (g *GetScoresResponseDataCategorical) UnmarshalJSON(data []byte) error {
	type embed GetScoresResponseDataCategorical
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetScoresResponseDataCategorical(unmarshaler.embed)
	g.Timestamp = unmarshaler.Timestamp.Time()
	g.CreatedAt = unmarshaler.CreatedAt.Time()
	g.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetScoresResponseDataCategorical) MarshalJSON() ([]byte, error) {
	type embed GetScoresResponseDataCategorical
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*g),
		Timestamp: internal.NewDateTime(g.Timestamp),
		CreatedAt: internal.NewDateTime(g.CreatedAt),
		UpdatedAt: internal.NewDateTime(g.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetScoresResponseDataCategorical) String() string {
	if len(g.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(g.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(g); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", g)
}

var (
	getScoresResponseDataCorrectionFieldID            = big.NewInt(1 << 0)
	getScoresResponseDataCorrectionFieldTraceID       = big.NewInt(1 << 1)
	getScoresResponseDataCorrectionFieldSessionID     = big.NewInt(1 << 2)
	getScoresResponseDataCorrectionFieldObservationID = big.NewInt(1 << 3)
	getScoresResponseDataCorrectionFieldDatasetRunID  = big.NewInt(1 << 4)
	getScoresResponseDataCorrectionFieldName          = big.NewInt(1 << 5)
	getScoresResponseDataCorrectionFieldSource        = big.NewInt(1 << 6)
	getScoresResponseDataCorrectionFieldTimestamp     = big.NewInt(1 << 7)
	getScoresResponseDataCorrectionFieldCreatedAt     = big.NewInt(1 << 8)
	getScoresResponseDataCorrectionFieldUpdatedAt     = big.NewInt(1 << 9)
	getScoresResponseDataCorrectionFieldAuthorUserID  = big.NewInt(1 << 10)
	getScoresResponseDataCorrectionFieldComment       = big.NewInt(1 << 11)
	getScoresResponseDataCorrectionFieldMetadata      = big.NewInt(1 << 12)
	getScoresResponseDataCorrectionFieldConfigID      = big.NewInt(1 << 13)
	getScoresResponseDataCorrectionFieldQueueID       = big.NewInt(1 << 14)
	getScoresResponseDataCorrectionFieldEnvironment   = big.NewInt(1 << 15)
	getScoresResponseDataCorrectionFieldValue         = big.NewInt(1 << 16)
	getScoresResponseDataCorrectionFieldStringValue   = big.NewInt(1 << 17)
	getScoresResponseDataCorrectionFieldTrace         = big.NewInt(1 << 18)
)

type GetScoresResponseDataCorrection struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// The numeric value of the score. Always 0 for correction scores.
	Value float64 `json:"value" url:"value"`
	// The string representation of the correction content
	StringValue string                      `json:"stringValue" url:"stringValue"`
	Trace       *GetScoresResponseTraceData `json:"trace,omitempty" url:"trace,omitempty"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (g *GetScoresResponseDataCorrection) GetID() string {
	if g == nil {
		return ""
	}
	return g.ID
}

func (g *GetScoresResponseDataCorrection) GetTraceID() *string {
	if g == nil {
		return nil
	}
	return g.TraceID
}

func (g *GetScoresResponseDataCorrection) GetSessionID() *string {
	if g == nil {
		return nil
	}
	return g.SessionID
}

func (g *GetScoresResponseDataCorrection) GetObservationID() *string {
	if g == nil {
		return nil
	}
	return g.ObservationID
}

func (g *GetScoresResponseDataCorrection) GetDatasetRunID() *string {
	if g == nil {
		return nil
	}
	return g.DatasetRunID
}

func (g *GetScoresResponseDataCorrection) GetName() string {
	if g == nil {
		return ""
	}
	return g.Name
}

func (g *GetScoresResponseDataCorrection) GetSource() ScoreSource {
	if g == nil {
		return ""
	}
	return g.Source
}

func (g *GetScoresResponseDataCorrection) GetTimestamp() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.Timestamp
}

func (g *GetScoresResponseDataCorrection) GetCreatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.CreatedAt
}

func (g *GetScoresResponseDataCorrection) GetUpdatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.UpdatedAt
}

func (g *GetScoresResponseDataCorrection) GetAuthorUserID() *string {
	if g == nil {
		return nil
	}
	return g.AuthorUserID
}

func (g *GetScoresResponseDataCorrection) GetComment() *string {
	if g == nil {
		return nil
	}
	return g.Comment
}

func (g *GetScoresResponseDataCorrection) GetMetadata() interface{} {
	if g == nil {
		return nil
	}
	return g.Metadata
}

func (g *GetScoresResponseDataCorrection) GetConfigID() *string {
	if g == nil {
		return nil
	}
	return g.ConfigID
}

func (g *GetScoresResponseDataCorrection) GetQueueID() *string {
	if g == nil {
		return nil
	}
	return g.QueueID
}

func (g *GetScoresResponseDataCorrection) GetEnvironment() string {
	if g == nil {
		return ""
	}
	return g.Environment
}

func (g *GetScoresResponseDataCorrection) GetValue() float64 {
	if g == nil {
		return 0
	}
	return g.Value
}

func (g *GetScoresResponseDataCorrection) GetStringValue() string {
	if g == nil {
		return ""
	}
	return g.StringValue
}

func (g *GetScoresResponseDataCorrection) GetTrace() *GetScoresResponseTraceData {
	if g == nil {
		return nil
	}
	return g.Trace
}

func (g *GetScoresResponseDataCorrection) GetExtraProperties() map[string]interface{} {
	return g.extraProperties
}

func (g *GetScoresResponseDataCorrection) require(field *big.Int) {
	if g.explicitFields == nil {
		g.explicitFields = big.NewInt(0)
	}
	g.explicitFields.Or(g.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetID(id string) {
	g.ID = id
	g.require(getScoresResponseDataCorrectionFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetTraceID(traceID *string) {
	g.TraceID = traceID
	g.require(getScoresResponseDataCorrectionFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetSessionID(sessionID *string) {
	g.SessionID = sessionID
	g.require(getScoresResponseDataCorrectionFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetObservationID(observationID *string) {
	g.ObservationID = observationID
	g.require(getScoresResponseDataCorrectionFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetDatasetRunID(datasetRunID *string) {
	g.DatasetRunID = datasetRunID
	g.require(getScoresResponseDataCorrectionFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetName(name string) {
	g.Name = name
	g.require(getScoresResponseDataCorrectionFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetSource(source ScoreSource) {
	g.Source = source
	g.require(getScoresResponseDataCorrectionFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetTimestamp(timestamp time.Time) {
	g.Timestamp = timestamp
	g.require(getScoresResponseDataCorrectionFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetCreatedAt(createdAt time.Time) {
	g.CreatedAt = createdAt
	g.require(getScoresResponseDataCorrectionFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetUpdatedAt(updatedAt time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getScoresResponseDataCorrectionFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetAuthorUserID(authorUserID *string) {
	g.AuthorUserID = authorUserID
	g.require(getScoresResponseDataCorrectionFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetComment(comment *string) {
	g.Comment = comment
	g.require(getScoresResponseDataCorrectionFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetMetadata(metadata interface{}) {
	g.Metadata = metadata
	g.require(getScoresResponseDataCorrectionFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetConfigID(configID *string) {
	g.ConfigID = configID
	g.require(getScoresResponseDataCorrectionFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetQueueID(queueID *string) {
	g.QueueID = queueID
	g.require(getScoresResponseDataCorrectionFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetEnvironment(environment string) {
	g.Environment = environment
	g.require(getScoresResponseDataCorrectionFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetValue(value float64) {
	g.Value = value
	g.require(getScoresResponseDataCorrectionFieldValue)
}

// SetStringValue sets the StringValue field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetStringValue(stringValue string) {
	g.StringValue = stringValue
	g.require(getScoresResponseDataCorrectionFieldStringValue)
}

// SetTrace sets the Trace field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataCorrection) SetTrace(trace *GetScoresResponseTraceData) {
	g.Trace = trace
	g.require(getScoresResponseDataCorrectionFieldTrace)
}

func (g *GetScoresResponseDataCorrection) UnmarshalJSON(data []byte) error {
	type embed GetScoresResponseDataCorrection
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetScoresResponseDataCorrection(unmarshaler.embed)
	g.Timestamp = unmarshaler.Timestamp.Time()
	g.CreatedAt = unmarshaler.CreatedAt.Time()
	g.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetScoresResponseDataCorrection) MarshalJSON() ([]byte, error) {
	type embed GetScoresResponseDataCorrection
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*g),
		Timestamp: internal.NewDateTime(g.Timestamp),
		CreatedAt: internal.NewDateTime(g.CreatedAt),
		UpdatedAt: internal.NewDateTime(g.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetScoresResponseDataCorrection) String() string {
	if len(g.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(g.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(g); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", g)
}

var (
	getScoresResponseDataNumericFieldID            = big.NewInt(1 << 0)
	getScoresResponseDataNumericFieldTraceID       = big.NewInt(1 << 1)
	getScoresResponseDataNumericFieldSessionID     = big.NewInt(1 << 2)
	getScoresResponseDataNumericFieldObservationID = big.NewInt(1 << 3)
	getScoresResponseDataNumericFieldDatasetRunID  = big.NewInt(1 << 4)
	getScoresResponseDataNumericFieldName          = big.NewInt(1 << 5)
	getScoresResponseDataNumericFieldSource        = big.NewInt(1 << 6)
	getScoresResponseDataNumericFieldTimestamp     = big.NewInt(1 << 7)
	getScoresResponseDataNumericFieldCreatedAt     = big.NewInt(1 << 8)
	getScoresResponseDataNumericFieldUpdatedAt     = big.NewInt(1 << 9)
	getScoresResponseDataNumericFieldAuthorUserID  = big.NewInt(1 << 10)
	getScoresResponseDataNumericFieldComment       = big.NewInt(1 << 11)
	getScoresResponseDataNumericFieldMetadata      = big.NewInt(1 << 12)
	getScoresResponseDataNumericFieldConfigID      = big.NewInt(1 << 13)
	getScoresResponseDataNumericFieldQueueID       = big.NewInt(1 << 14)
	getScoresResponseDataNumericFieldEnvironment   = big.NewInt(1 << 15)
	getScoresResponseDataNumericFieldValue         = big.NewInt(1 << 16)
	getScoresResponseDataNumericFieldTrace         = big.NewInt(1 << 17)
)

type GetScoresResponseDataNumeric struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// The numeric value of the score
	Value float64                     `json:"value" url:"value"`
	Trace *GetScoresResponseTraceData `json:"trace,omitempty" url:"trace,omitempty"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (g *GetScoresResponseDataNumeric) GetID() string {
	if g == nil {
		return ""
	}
	return g.ID
}

func (g *GetScoresResponseDataNumeric) GetTraceID() *string {
	if g == nil {
		return nil
	}
	return g.TraceID
}

func (g *GetScoresResponseDataNumeric) GetSessionID() *string {
	if g == nil {
		return nil
	}
	return g.SessionID
}

func (g *GetScoresResponseDataNumeric) GetObservationID() *string {
	if g == nil {
		return nil
	}
	return g.ObservationID
}

func (g *GetScoresResponseDataNumeric) GetDatasetRunID() *string {
	if g == nil {
		return nil
	}
	return g.DatasetRunID
}

func (g *GetScoresResponseDataNumeric) GetName() string {
	if g == nil {
		return ""
	}
	return g.Name
}

func (g *GetScoresResponseDataNumeric) GetSource() ScoreSource {
	if g == nil {
		return ""
	}
	return g.Source
}

func (g *GetScoresResponseDataNumeric) GetTimestamp() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.Timestamp
}

func (g *GetScoresResponseDataNumeric) GetCreatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.CreatedAt
}

func (g *GetScoresResponseDataNumeric) GetUpdatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.UpdatedAt
}

func (g *GetScoresResponseDataNumeric) GetAuthorUserID() *string {
	if g == nil {
		return nil
	}
	return g.AuthorUserID
}

func (g *GetScoresResponseDataNumeric) GetComment() *string {
	if g == nil {
		return nil
	}
	return g.Comment
}

func (g *GetScoresResponseDataNumeric) GetMetadata() interface{} {
	if g == nil {
		return nil
	}
	return g.Metadata
}

func (g *GetScoresResponseDataNumeric) GetConfigID() *string {
	if g == nil {
		return nil
	}
	return g.ConfigID
}

func (g *GetScoresResponseDataNumeric) GetQueueID() *string {
	if g == nil {
		return nil
	}
	return g.QueueID
}

func (g *GetScoresResponseDataNumeric) GetEnvironment() string {
	if g == nil {
		return ""
	}
	return g.Environment
}

func (g *GetScoresResponseDataNumeric) GetValue() float64 {
	if g == nil {
		return 0
	}
	return g.Value
}

func (g *GetScoresResponseDataNumeric) GetTrace() *GetScoresResponseTraceData {
	if g == nil {
		return nil
	}
	return g.Trace
}

func (g *GetScoresResponseDataNumeric) GetExtraProperties() map[string]interface{} {
	return g.extraProperties
}

func (g *GetScoresResponseDataNumeric) require(field *big.Int) {
	if g.explicitFields == nil {
		g.explicitFields = big.NewInt(0)
	}
	g.explicitFields.Or(g.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetID(id string) {
	g.ID = id
	g.require(getScoresResponseDataNumericFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetTraceID(traceID *string) {
	g.TraceID = traceID
	g.require(getScoresResponseDataNumericFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetSessionID(sessionID *string) {
	g.SessionID = sessionID
	g.require(getScoresResponseDataNumericFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetObservationID(observationID *string) {
	g.ObservationID = observationID
	g.require(getScoresResponseDataNumericFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetDatasetRunID(datasetRunID *string) {
	g.DatasetRunID = datasetRunID
	g.require(getScoresResponseDataNumericFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetName(name string) {
	g.Name = name
	g.require(getScoresResponseDataNumericFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetSource(source ScoreSource) {
	g.Source = source
	g.require(getScoresResponseDataNumericFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetTimestamp(timestamp time.Time) {
	g.Timestamp = timestamp
	g.require(getScoresResponseDataNumericFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetCreatedAt(createdAt time.Time) {
	g.CreatedAt = createdAt
	g.require(getScoresResponseDataNumericFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetUpdatedAt(updatedAt time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getScoresResponseDataNumericFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetAuthorUserID(authorUserID *string) {
	g.AuthorUserID = authorUserID
	g.require(getScoresResponseDataNumericFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetComment(comment *string) {
	g.Comment = comment
	g.require(getScoresResponseDataNumericFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetMetadata(metadata interface{}) {
	g.Metadata = metadata
	g.require(getScoresResponseDataNumericFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetConfigID(configID *string) {
	g.ConfigID = configID
	g.require(getScoresResponseDataNumericFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetQueueID(queueID *string) {
	g.QueueID = queueID
	g.require(getScoresResponseDataNumericFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetEnvironment(environment string) {
	g.Environment = environment
	g.require(getScoresResponseDataNumericFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetValue(value float64) {
	g.Value = value
	g.require(getScoresResponseDataNumericFieldValue)
}

// SetTrace sets the Trace field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataNumeric) SetTrace(trace *GetScoresResponseTraceData) {
	g.Trace = trace
	g.require(getScoresResponseDataNumericFieldTrace)
}

func (g *GetScoresResponseDataNumeric) UnmarshalJSON(data []byte) error {
	type embed GetScoresResponseDataNumeric
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetScoresResponseDataNumeric(unmarshaler.embed)
	g.Timestamp = unmarshaler.Timestamp.Time()
	g.CreatedAt = unmarshaler.CreatedAt.Time()
	g.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetScoresResponseDataNumeric) MarshalJSON() ([]byte, error) {
	type embed GetScoresResponseDataNumeric
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*g),
		Timestamp: internal.NewDateTime(g.Timestamp),
		CreatedAt: internal.NewDateTime(g.CreatedAt),
		UpdatedAt: internal.NewDateTime(g.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetScoresResponseDataNumeric) String() string {
	if len(g.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(g.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(g); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", g)
}

var (
	getScoresResponseDataOneFieldID            = big.NewInt(1 << 0)
	getScoresResponseDataOneFieldTraceID       = big.NewInt(1 << 1)
	getScoresResponseDataOneFieldSessionID     = big.NewInt(1 << 2)
	getScoresResponseDataOneFieldObservationID = big.NewInt(1 << 3)
	getScoresResponseDataOneFieldDatasetRunID  = big.NewInt(1 << 4)
	getScoresResponseDataOneFieldName          = big.NewInt(1 << 5)
	getScoresResponseDataOneFieldSource        = big.NewInt(1 << 6)
	getScoresResponseDataOneFieldTimestamp     = big.NewInt(1 << 7)
	getScoresResponseDataOneFieldCreatedAt     = big.NewInt(1 << 8)
	getScoresResponseDataOneFieldUpdatedAt     = big.NewInt(1 << 9)
	getScoresResponseDataOneFieldAuthorUserID  = big.NewInt(1 << 10)
	getScoresResponseDataOneFieldComment       = big.NewInt(1 << 11)
	getScoresResponseDataOneFieldMetadata      = big.NewInt(1 << 12)
	getScoresResponseDataOneFieldConfigID      = big.NewInt(1 << 13)
	getScoresResponseDataOneFieldQueueID       = big.NewInt(1 << 14)
	getScoresResponseDataOneFieldEnvironment   = big.NewInt(1 << 15)
	getScoresResponseDataOneFieldValue         = big.NewInt(1 << 16)
	getScoresResponseDataOneFieldStringValue   = big.NewInt(1 << 17)
	getScoresResponseDataOneFieldTrace         = big.NewInt(1 << 18)
	getScoresResponseDataOneFieldDataType      = big.NewInt(1 << 19)
)

type GetScoresResponseDataOne struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// Represents the numeric category mapping of the stringValue. If no config is linked, defaults to 0.
	Value float64 `json:"value" url:"value"`
	// The string representation of the score value. If no config is linked, can be any string. Otherwise, must map to a config category
	StringValue string                            `json:"stringValue" url:"stringValue"`
	Trace       *GetScoresResponseTraceData       `json:"trace,omitempty" url:"trace,omitempty"`
	DataType    *GetScoresResponseDataOneDataType `json:"dataType,omitempty" url:"dataType,omitempty"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (g *GetScoresResponseDataOne) GetID() string {
	if g == nil {
		return ""
	}
	return g.ID
}

func (g *GetScoresResponseDataOne) GetTraceID() *string {
	if g == nil {
		return nil
	}
	return g.TraceID
}

func (g *GetScoresResponseDataOne) GetSessionID() *string {
	if g == nil {
		return nil
	}
	return g.SessionID
}

func (g *GetScoresResponseDataOne) GetObservationID() *string {
	if g == nil {
		return nil
	}
	return g.ObservationID
}

func (g *GetScoresResponseDataOne) GetDatasetRunID() *string {
	if g == nil {
		return nil
	}
	return g.DatasetRunID
}

func (g *GetScoresResponseDataOne) GetName() string {
	if g == nil {
		return ""
	}
	return g.Name
}

func (g *GetScoresResponseDataOne) GetSource() ScoreSource {
	if g == nil {
		return ""
	}
	return g.Source
}

func (g *GetScoresResponseDataOne) GetTimestamp() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.Timestamp
}

func (g *GetScoresResponseDataOne) GetCreatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.CreatedAt
}

func (g *GetScoresResponseDataOne) GetUpdatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.UpdatedAt
}

func (g *GetScoresResponseDataOne) GetAuthorUserID() *string {
	if g == nil {
		return nil
	}
	return g.AuthorUserID
}

func (g *GetScoresResponseDataOne) GetComment() *string {
	if g == nil {
		return nil
	}
	return g.Comment
}

func (g *GetScoresResponseDataOne) GetMetadata() interface{} {
	if g == nil {
		return nil
	}
	return g.Metadata
}

func (g *GetScoresResponseDataOne) GetConfigID() *string {
	if g == nil {
		return nil
	}
	return g.ConfigID
}

func (g *GetScoresResponseDataOne) GetQueueID() *string {
	if g == nil {
		return nil
	}
	return g.QueueID
}

func (g *GetScoresResponseDataOne) GetEnvironment() string {
	if g == nil {
		return ""
	}
	return g.Environment
}

func (g *GetScoresResponseDataOne) GetValue() float64 {
	if g == nil {
		return 0
	}
	return g.Value
}

func (g *GetScoresResponseDataOne) GetStringValue() string {
	if g == nil {
		return ""
	}
	return g.StringValue
}

func (g *GetScoresResponseDataOne) GetTrace() *GetScoresResponseTraceData {
	if g == nil {
		return nil
	}
	return g.Trace
}

func (g *GetScoresResponseDataOne) GetDataType() *GetScoresResponseDataOneDataType {
	if g == nil {
		return nil
	}
	return g.DataType
}

func (g *GetScoresResponseDataOne) GetExtraProperties() map[string]interface{} {
	return g.extraProperties
}

func (g *GetScoresResponseDataOne) require(field *big.Int) {
	if g.explicitFields == nil {
		g.explicitFields = big.NewInt(0)
	}
	g.explicitFields.Or(g.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetID(id string) {
	g.ID = id
	g.require(getScoresResponseDataOneFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetTraceID(traceID *string) {
	g.TraceID = traceID
	g.require(getScoresResponseDataOneFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetSessionID(sessionID *string) {
	g.SessionID = sessionID
	g.require(getScoresResponseDataOneFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetObservationID(observationID *string) {
	g.ObservationID = observationID
	g.require(getScoresResponseDataOneFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetDatasetRunID(datasetRunID *string) {
	g.DatasetRunID = datasetRunID
	g.require(getScoresResponseDataOneFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetName(name string) {
	g.Name = name
	g.require(getScoresResponseDataOneFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetSource(source ScoreSource) {
	g.Source = source
	g.require(getScoresResponseDataOneFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetTimestamp(timestamp time.Time) {
	g.Timestamp = timestamp
	g.require(getScoresResponseDataOneFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetCreatedAt(createdAt time.Time) {
	g.CreatedAt = createdAt
	g.require(getScoresResponseDataOneFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetUpdatedAt(updatedAt time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getScoresResponseDataOneFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetAuthorUserID(authorUserID *string) {
	g.AuthorUserID = authorUserID
	g.require(getScoresResponseDataOneFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetComment(comment *string) {
	g.Comment = comment
	g.require(getScoresResponseDataOneFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetMetadata(metadata interface{}) {
	g.Metadata = metadata
	g.require(getScoresResponseDataOneFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetConfigID(configID *string) {
	g.ConfigID = configID
	g.require(getScoresResponseDataOneFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetQueueID(queueID *string) {
	g.QueueID = queueID
	g.require(getScoresResponseDataOneFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetEnvironment(environment string) {
	g.Environment = environment
	g.require(getScoresResponseDataOneFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetValue(value float64) {
	g.Value = value
	g.require(getScoresResponseDataOneFieldValue)
}

// SetStringValue sets the StringValue field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetStringValue(stringValue string) {
	g.StringValue = stringValue
	g.require(getScoresResponseDataOneFieldStringValue)
}

// SetTrace sets the Trace field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetTrace(trace *GetScoresResponseTraceData) {
	g.Trace = trace
	g.require(getScoresResponseDataOneFieldTrace)
}

// SetDataType sets the DataType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataOne) SetDataType(dataType *GetScoresResponseDataOneDataType) {
	g.DataType = dataType
	g.require(getScoresResponseDataOneFieldDataType)
}

func (g *GetScoresResponseDataOne) UnmarshalJSON(data []byte) error {
	type embed GetScoresResponseDataOne
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetScoresResponseDataOne(unmarshaler.embed)
	g.Timestamp = unmarshaler.Timestamp.Time()
	g.CreatedAt = unmarshaler.CreatedAt.Time()
	g.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetScoresResponseDataOne) MarshalJSON() ([]byte, error) {
	type embed GetScoresResponseDataOne
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*g),
		Timestamp: internal.NewDateTime(g.Timestamp),
		CreatedAt: internal.NewDateTime(g.CreatedAt),
		UpdatedAt: internal.NewDateTime(g.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetScoresResponseDataOne) String() string {
	if len(g.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(g.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(g); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", g)
}

type GetScoresResponseDataOneDataType string

const (
	GetScoresResponseDataOneDataTypeCategorical GetScoresResponseDataOneDataType = "CATEGORICAL"
)

func NewGetScoresResponseDataOneDataTypeFromString(s string) (GetScoresResponseDataOneDataType, error) {
	switch s {
	case "CATEGORICAL":
		return GetScoresResponseDataOneDataTypeCategorical, nil
	}
	var t GetScoresResponseDataOneDataType
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (g GetScoresResponseDataOneDataType) Ptr() *GetScoresResponseDataOneDataType {
	return &g
}

var (
	getScoresResponseDataThreeFieldID            = big.NewInt(1 << 0)
	getScoresResponseDataThreeFieldTraceID       = big.NewInt(1 << 1)
	getScoresResponseDataThreeFieldSessionID     = big.NewInt(1 << 2)
	getScoresResponseDataThreeFieldObservationID = big.NewInt(1 << 3)
	getScoresResponseDataThreeFieldDatasetRunID  = big.NewInt(1 << 4)
	getScoresResponseDataThreeFieldName          = big.NewInt(1 << 5)
	getScoresResponseDataThreeFieldSource        = big.NewInt(1 << 6)
	getScoresResponseDataThreeFieldTimestamp     = big.NewInt(1 << 7)
	getScoresResponseDataThreeFieldCreatedAt     = big.NewInt(1 << 8)
	getScoresResponseDataThreeFieldUpdatedAt     = big.NewInt(1 << 9)
	getScoresResponseDataThreeFieldAuthorUserID  = big.NewInt(1 << 10)
	getScoresResponseDataThreeFieldComment       = big.NewInt(1 << 11)
	getScoresResponseDataThreeFieldMetadata      = big.NewInt(1 << 12)
	getScoresResponseDataThreeFieldConfigID      = big.NewInt(1 << 13)
	getScoresResponseDataThreeFieldQueueID       = big.NewInt(1 << 14)
	getScoresResponseDataThreeFieldEnvironment   = big.NewInt(1 << 15)
	getScoresResponseDataThreeFieldValue         = big.NewInt(1 << 16)
	getScoresResponseDataThreeFieldStringValue   = big.NewInt(1 << 17)
	getScoresResponseDataThreeFieldTrace         = big.NewInt(1 << 18)
	getScoresResponseDataThreeFieldDataType      = big.NewInt(1 << 19)
)

type GetScoresResponseDataThree struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// The numeric value of the score. Always 0 for correction scores.
	Value float64 `json:"value" url:"value"`
	// The string representation of the correction content
	StringValue string                              `json:"stringValue" url:"stringValue"`
	Trace       *GetScoresResponseTraceData         `json:"trace,omitempty" url:"trace,omitempty"`
	DataType    *GetScoresResponseDataThreeDataType `json:"dataType,omitempty" url:"dataType,omitempty"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (g *GetScoresResponseDataThree) GetID() string {
	if g == nil {
		return ""
	}
	return g.ID
}

func (g *GetScoresResponseDataThree) GetTraceID() *string {
	if g == nil {
		return nil
	}
	return g.TraceID
}

func (g *GetScoresResponseDataThree) GetSessionID() *string {
	if g == nil {
		return nil
	}
	return g.SessionID
}

func (g *GetScoresResponseDataThree) GetObservationID() *string {
	if g == nil {
		return nil
	}
	return g.ObservationID
}

func (g *GetScoresResponseDataThree) GetDatasetRunID() *string {
	if g == nil {
		return nil
	}
	return g.DatasetRunID
}

func (g *GetScoresResponseDataThree) GetName() string {
	if g == nil {
		return ""
	}
	return g.Name
}

func (g *GetScoresResponseDataThree) GetSource() ScoreSource {
	if g == nil {
		return ""
	}
	return g.Source
}

func (g *GetScoresResponseDataThree) GetTimestamp() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.Timestamp
}

func (g *GetScoresResponseDataThree) GetCreatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.CreatedAt
}

func (g *GetScoresResponseDataThree) GetUpdatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.UpdatedAt
}

func (g *GetScoresResponseDataThree) GetAuthorUserID() *string {
	if g == nil {
		return nil
	}
	return g.AuthorUserID
}

func (g *GetScoresResponseDataThree) GetComment() *string {
	if g == nil {
		return nil
	}
	return g.Comment
}

func (g *GetScoresResponseDataThree) GetMetadata() interface{} {
	if g == nil {
		return nil
	}
	return g.Metadata
}

func (g *GetScoresResponseDataThree) GetConfigID() *string {
	if g == nil {
		return nil
	}
	return g.ConfigID
}

func (g *GetScoresResponseDataThree) GetQueueID() *string {
	if g == nil {
		return nil
	}
	return g.QueueID
}

func (g *GetScoresResponseDataThree) GetEnvironment() string {
	if g == nil {
		return ""
	}
	return g.Environment
}

func (g *GetScoresResponseDataThree) GetValue() float64 {
	if g == nil {
		return 0
	}
	return g.Value
}

func (g *GetScoresResponseDataThree) GetStringValue() string {
	if g == nil {
		return ""
	}
	return g.StringValue
}

func (g *GetScoresResponseDataThree) GetTrace() *GetScoresResponseTraceData {
	if g == nil {
		return nil
	}
	return g.Trace
}

func (g *GetScoresResponseDataThree) GetDataType() *GetScoresResponseDataThreeDataType {
	if g == nil {
		return nil
	}
	return g.DataType
}

func (g *GetScoresResponseDataThree) GetExtraProperties() map[string]interface{} {
	return g.extraProperties
}

func (g *GetScoresResponseDataThree) require(field *big.Int) {
	if g.explicitFields == nil {
		g.explicitFields = big.NewInt(0)
	}
	g.explicitFields.Or(g.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetID(id string) {
	g.ID = id
	g.require(getScoresResponseDataThreeFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetTraceID(traceID *string) {
	g.TraceID = traceID
	g.require(getScoresResponseDataThreeFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetSessionID(sessionID *string) {
	g.SessionID = sessionID
	g.require(getScoresResponseDataThreeFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetObservationID(observationID *string) {
	g.ObservationID = observationID
	g.require(getScoresResponseDataThreeFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetDatasetRunID(datasetRunID *string) {
	g.DatasetRunID = datasetRunID
	g.require(getScoresResponseDataThreeFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetName(name string) {
	g.Name = name
	g.require(getScoresResponseDataThreeFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetSource(source ScoreSource) {
	g.Source = source
	g.require(getScoresResponseDataThreeFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetTimestamp(timestamp time.Time) {
	g.Timestamp = timestamp
	g.require(getScoresResponseDataThreeFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetCreatedAt(createdAt time.Time) {
	g.CreatedAt = createdAt
	g.require(getScoresResponseDataThreeFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetUpdatedAt(updatedAt time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getScoresResponseDataThreeFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetAuthorUserID(authorUserID *string) {
	g.AuthorUserID = authorUserID
	g.require(getScoresResponseDataThreeFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetComment(comment *string) {
	g.Comment = comment
	g.require(getScoresResponseDataThreeFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetMetadata(metadata interface{}) {
	g.Metadata = metadata
	g.require(getScoresResponseDataThreeFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetConfigID(configID *string) {
	g.ConfigID = configID
	g.require(getScoresResponseDataThreeFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetQueueID(queueID *string) {
	g.QueueID = queueID
	g.require(getScoresResponseDataThreeFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetEnvironment(environment string) {
	g.Environment = environment
	g.require(getScoresResponseDataThreeFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetValue(value float64) {
	g.Value = value
	g.require(getScoresResponseDataThreeFieldValue)
}

// SetStringValue sets the StringValue field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetStringValue(stringValue string) {
	g.StringValue = stringValue
	g.require(getScoresResponseDataThreeFieldStringValue)
}

// SetTrace sets the Trace field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetTrace(trace *GetScoresResponseTraceData) {
	g.Trace = trace
	g.require(getScoresResponseDataThreeFieldTrace)
}

// SetDataType sets the DataType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataThree) SetDataType(dataType *GetScoresResponseDataThreeDataType) {
	g.DataType = dataType
	g.require(getScoresResponseDataThreeFieldDataType)
}

func (g *GetScoresResponseDataThree) UnmarshalJSON(data []byte) error {
	type embed GetScoresResponseDataThree
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetScoresResponseDataThree(unmarshaler.embed)
	g.Timestamp = unmarshaler.Timestamp.Time()
	g.CreatedAt = unmarshaler.CreatedAt.Time()
	g.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetScoresResponseDataThree) MarshalJSON() ([]byte, error) {
	type embed GetScoresResponseDataThree
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*g),
		Timestamp: internal.NewDateTime(g.Timestamp),
		CreatedAt: internal.NewDateTime(g.CreatedAt),
		UpdatedAt: internal.NewDateTime(g.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetScoresResponseDataThree) String() string {
	if len(g.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(g.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(g); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", g)
}

type GetScoresResponseDataThreeDataType string

const (
	GetScoresResponseDataThreeDataTypeCorrection GetScoresResponseDataThreeDataType = "CORRECTION"
)

func NewGetScoresResponseDataThreeDataTypeFromString(s string) (GetScoresResponseDataThreeDataType, error) {
	switch s {
	case "CORRECTION":
		return GetScoresResponseDataThreeDataTypeCorrection, nil
	}
	var t GetScoresResponseDataThreeDataType
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (g GetScoresResponseDataThreeDataType) Ptr() *GetScoresResponseDataThreeDataType {
	return &g
}

var (
	getScoresResponseDataTwoFieldID            = big.NewInt(1 << 0)
	getScoresResponseDataTwoFieldTraceID       = big.NewInt(1 << 1)
	getScoresResponseDataTwoFieldSessionID     = big.NewInt(1 << 2)
	getScoresResponseDataTwoFieldObservationID = big.NewInt(1 << 3)
	getScoresResponseDataTwoFieldDatasetRunID  = big.NewInt(1 << 4)
	getScoresResponseDataTwoFieldName          = big.NewInt(1 << 5)
	getScoresResponseDataTwoFieldSource        = big.NewInt(1 << 6)
	getScoresResponseDataTwoFieldTimestamp     = big.NewInt(1 << 7)
	getScoresResponseDataTwoFieldCreatedAt     = big.NewInt(1 << 8)
	getScoresResponseDataTwoFieldUpdatedAt     = big.NewInt(1 << 9)
	getScoresResponseDataTwoFieldAuthorUserID  = big.NewInt(1 << 10)
	getScoresResponseDataTwoFieldComment       = big.NewInt(1 << 11)
	getScoresResponseDataTwoFieldMetadata      = big.NewInt(1 << 12)
	getScoresResponseDataTwoFieldConfigID      = big.NewInt(1 << 13)
	getScoresResponseDataTwoFieldQueueID       = big.NewInt(1 << 14)
	getScoresResponseDataTwoFieldEnvironment   = big.NewInt(1 << 15)
	getScoresResponseDataTwoFieldValue         = big.NewInt(1 << 16)
	getScoresResponseDataTwoFieldStringValue   = big.NewInt(1 << 17)
	getScoresResponseDataTwoFieldTrace         = big.NewInt(1 << 18)
	getScoresResponseDataTwoFieldDataType      = big.NewInt(1 << 19)
)

type GetScoresResponseDataTwo struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// The numeric value of the score. Equals 1 for "True" and 0 for "False"
	Value float64 `json:"value" url:"value"`
	// The string representation of the score value. Is inferred from the numeric value and equals "True" or "False"
	StringValue string                            `json:"stringValue" url:"stringValue"`
	Trace       *GetScoresResponseTraceData       `json:"trace,omitempty" url:"trace,omitempty"`
	DataType    *GetScoresResponseDataTwoDataType `json:"dataType,omitempty" url:"dataType,omitempty"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (g *GetScoresResponseDataTwo) GetID() string {
	if g == nil {
		return ""
	}
	return g.ID
}

func (g *GetScoresResponseDataTwo) GetTraceID() *string {
	if g == nil {
		return nil
	}
	return g.TraceID
}

func (g *GetScoresResponseDataTwo) GetSessionID() *string {
	if g == nil {
		return nil
	}
	return g.SessionID
}

func (g *GetScoresResponseDataTwo) GetObservationID() *string {
	if g == nil {
		return nil
	}
	return g.ObservationID
}

func (g *GetScoresResponseDataTwo) GetDatasetRunID() *string {
	if g == nil {
		return nil
	}
	return g.DatasetRunID
}

func (g *GetScoresResponseDataTwo) GetName() string {
	if g == nil {
		return ""
	}
	return g.Name
}

func (g *GetScoresResponseDataTwo) GetSource() ScoreSource {
	if g == nil {
		return ""
	}
	return g.Source
}

func (g *GetScoresResponseDataTwo) GetTimestamp() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.Timestamp
}

func (g *GetScoresResponseDataTwo) GetCreatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.CreatedAt
}

func (g *GetScoresResponseDataTwo) GetUpdatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.UpdatedAt
}

func (g *GetScoresResponseDataTwo) GetAuthorUserID() *string {
	if g == nil {
		return nil
	}
	return g.AuthorUserID
}

func (g *GetScoresResponseDataTwo) GetComment() *string {
	if g == nil {
		return nil
	}
	return g.Comment
}

func (g *GetScoresResponseDataTwo) GetMetadata() interface{} {
	if g == nil {
		return nil
	}
	return g.Metadata
}

func (g *GetScoresResponseDataTwo) GetConfigID() *string {
	if g == nil {
		return nil
	}
	return g.ConfigID
}

func (g *GetScoresResponseDataTwo) GetQueueID() *string {
	if g == nil {
		return nil
	}
	return g.QueueID
}

func (g *GetScoresResponseDataTwo) GetEnvironment() string {
	if g == nil {
		return ""
	}
	return g.Environment
}

func (g *GetScoresResponseDataTwo) GetValue() float64 {
	if g == nil {
		return 0
	}
	return g.Value
}

func (g *GetScoresResponseDataTwo) GetStringValue() string {
	if g == nil {
		return ""
	}
	return g.StringValue
}

func (g *GetScoresResponseDataTwo) GetTrace() *GetScoresResponseTraceData {
	if g == nil {
		return nil
	}
	return g.Trace
}

func (g *GetScoresResponseDataTwo) GetDataType() *GetScoresResponseDataTwoDataType {
	if g == nil {
		return nil
	}
	return g.DataType
}

func (g *GetScoresResponseDataTwo) GetExtraProperties() map[string]interface{} {
	return g.extraProperties
}

func (g *GetScoresResponseDataTwo) require(field *big.Int) {
	if g.explicitFields == nil {
		g.explicitFields = big.NewInt(0)
	}
	g.explicitFields.Or(g.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetID(id string) {
	g.ID = id
	g.require(getScoresResponseDataTwoFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetTraceID(traceID *string) {
	g.TraceID = traceID
	g.require(getScoresResponseDataTwoFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetSessionID(sessionID *string) {
	g.SessionID = sessionID
	g.require(getScoresResponseDataTwoFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetObservationID(observationID *string) {
	g.ObservationID = observationID
	g.require(getScoresResponseDataTwoFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetDatasetRunID(datasetRunID *string) {
	g.DatasetRunID = datasetRunID
	g.require(getScoresResponseDataTwoFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetName(name string) {
	g.Name = name
	g.require(getScoresResponseDataTwoFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetSource(source ScoreSource) {
	g.Source = source
	g.require(getScoresResponseDataTwoFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetTimestamp(timestamp time.Time) {
	g.Timestamp = timestamp
	g.require(getScoresResponseDataTwoFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetCreatedAt(createdAt time.Time) {
	g.CreatedAt = createdAt
	g.require(getScoresResponseDataTwoFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetUpdatedAt(updatedAt time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getScoresResponseDataTwoFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetAuthorUserID(authorUserID *string) {
	g.AuthorUserID = authorUserID
	g.require(getScoresResponseDataTwoFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetComment(comment *string) {
	g.Comment = comment
	g.require(getScoresResponseDataTwoFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetMetadata(metadata interface{}) {
	g.Metadata = metadata
	g.require(getScoresResponseDataTwoFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetConfigID(configID *string) {
	g.ConfigID = configID
	g.require(getScoresResponseDataTwoFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetQueueID(queueID *string) {
	g.QueueID = queueID
	g.require(getScoresResponseDataTwoFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetEnvironment(environment string) {
	g.Environment = environment
	g.require(getScoresResponseDataTwoFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetValue(value float64) {
	g.Value = value
	g.require(getScoresResponseDataTwoFieldValue)
}

// SetStringValue sets the StringValue field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetStringValue(stringValue string) {
	g.StringValue = stringValue
	g.require(getScoresResponseDataTwoFieldStringValue)
}

// SetTrace sets the Trace field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetTrace(trace *GetScoresResponseTraceData) {
	g.Trace = trace
	g.require(getScoresResponseDataTwoFieldTrace)
}

// SetDataType sets the DataType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataTwo) SetDataType(dataType *GetScoresResponseDataTwoDataType) {
	g.DataType = dataType
	g.require(getScoresResponseDataTwoFieldDataType)
}

func (g *GetScoresResponseDataTwo) UnmarshalJSON(data []byte) error {
	type embed GetScoresResponseDataTwo
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetScoresResponseDataTwo(unmarshaler.embed)
	g.Timestamp = unmarshaler.Timestamp.Time()
	g.CreatedAt = unmarshaler.CreatedAt.Time()
	g.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetScoresResponseDataTwo) MarshalJSON() ([]byte, error) {
	type embed GetScoresResponseDataTwo
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*g),
		Timestamp: internal.NewDateTime(g.Timestamp),
		CreatedAt: internal.NewDateTime(g.CreatedAt),
		UpdatedAt: internal.NewDateTime(g.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetScoresResponseDataTwo) String() string {
	if len(g.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(g.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(g); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", g)
}

type GetScoresResponseDataTwoDataType string

const (
	GetScoresResponseDataTwoDataTypeBoolean GetScoresResponseDataTwoDataType = "BOOLEAN"
)

func NewGetScoresResponseDataTwoDataTypeFromString(s string) (GetScoresResponseDataTwoDataType, error) {
	switch s {
	case "BOOLEAN":
		return GetScoresResponseDataTwoDataTypeBoolean, nil
	}
	var t GetScoresResponseDataTwoDataType
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (g GetScoresResponseDataTwoDataType) Ptr() *GetScoresResponseDataTwoDataType {
	return &g
}

var (
	getScoresResponseDataZeroFieldID            = big.NewInt(1 << 0)
	getScoresResponseDataZeroFieldTraceID       = big.NewInt(1 << 1)
	getScoresResponseDataZeroFieldSessionID     = big.NewInt(1 << 2)
	getScoresResponseDataZeroFieldObservationID = big.NewInt(1 << 3)
	getScoresResponseDataZeroFieldDatasetRunID  = big.NewInt(1 << 4)
	getScoresResponseDataZeroFieldName          = big.NewInt(1 << 5)
	getScoresResponseDataZeroFieldSource        = big.NewInt(1 << 6)
	getScoresResponseDataZeroFieldTimestamp     = big.NewInt(1 << 7)
	getScoresResponseDataZeroFieldCreatedAt     = big.NewInt(1 << 8)
	getScoresResponseDataZeroFieldUpdatedAt     = big.NewInt(1 << 9)
	getScoresResponseDataZeroFieldAuthorUserID  = big.NewInt(1 << 10)
	getScoresResponseDataZeroFieldComment       = big.NewInt(1 << 11)
	getScoresResponseDataZeroFieldMetadata      = big.NewInt(1 << 12)
	getScoresResponseDataZeroFieldConfigID      = big.NewInt(1 << 13)
	getScoresResponseDataZeroFieldQueueID       = big.NewInt(1 << 14)
	getScoresResponseDataZeroFieldEnvironment   = big.NewInt(1 << 15)
	getScoresResponseDataZeroFieldValue         = big.NewInt(1 << 16)
	getScoresResponseDataZeroFieldTrace         = big.NewInt(1 << 17)
	getScoresResponseDataZeroFieldDataType      = big.NewInt(1 << 18)
)

type GetScoresResponseDataZero struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// The numeric value of the score
	Value    float64                            `json:"value" url:"value"`
	Trace    *GetScoresResponseTraceData        `json:"trace,omitempty" url:"trace,omitempty"`
	DataType *GetScoresResponseDataZeroDataType `json:"dataType,omitempty" url:"dataType,omitempty"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (g *GetScoresResponseDataZero) GetID() string {
	if g == nil {
		return ""
	}
	return g.ID
}

func (g *GetScoresResponseDataZero) GetTraceID() *string {
	if g == nil {
		return nil
	}
	return g.TraceID
}

func (g *GetScoresResponseDataZero) GetSessionID() *string {
	if g == nil {
		return nil
	}
	return g.SessionID
}

func (g *GetScoresResponseDataZero) GetObservationID() *string {
	if g == nil {
		return nil
	}
	return g.ObservationID
}

func (g *GetScoresResponseDataZero) GetDatasetRunID() *string {
	if g == nil {
		return nil
	}
	return g.DatasetRunID
}

func (g *GetScoresResponseDataZero) GetName() string {
	if g == nil {
		return ""
	}
	return g.Name
}

func (g *GetScoresResponseDataZero) GetSource() ScoreSource {
	if g == nil {
		return ""
	}
	return g.Source
}

func (g *GetScoresResponseDataZero) GetTimestamp() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.Timestamp
}

func (g *GetScoresResponseDataZero) GetCreatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.CreatedAt
}

func (g *GetScoresResponseDataZero) GetUpdatedAt() time.Time {
	if g == nil {
		return time.Time{}
	}
	return g.UpdatedAt
}

func (g *GetScoresResponseDataZero) GetAuthorUserID() *string {
	if g == nil {
		return nil
	}
	return g.AuthorUserID
}

func (g *GetScoresResponseDataZero) GetComment() *string {
	if g == nil {
		return nil
	}
	return g.Comment
}

func (g *GetScoresResponseDataZero) GetMetadata() interface{} {
	if g == nil {
		return nil
	}
	return g.Metadata
}

func (g *GetScoresResponseDataZero) GetConfigID() *string {
	if g == nil {
		return nil
	}
	return g.ConfigID
}

func (g *GetScoresResponseDataZero) GetQueueID() *string {
	if g == nil {
		return nil
	}
	return g.QueueID
}

func (g *GetScoresResponseDataZero) GetEnvironment() string {
	if g == nil {
		return ""
	}
	return g.Environment
}

func (g *GetScoresResponseDataZero) GetValue() float64 {
	if g == nil {
		return 0
	}
	return g.Value
}

func (g *GetScoresResponseDataZero) GetTrace() *GetScoresResponseTraceData {
	if g == nil {
		return nil
	}
	return g.Trace
}

func (g *GetScoresResponseDataZero) GetDataType() *GetScoresResponseDataZeroDataType {
	if g == nil {
		return nil
	}
	return g.DataType
}

func (g *GetScoresResponseDataZero) GetExtraProperties() map[string]interface{} {
	return g.extraProperties
}

func (g *GetScoresResponseDataZero) require(field *big.Int) {
	if g.explicitFields == nil {
		g.explicitFields = big.NewInt(0)
	}
	g.explicitFields.Or(g.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetID(id string) {
	g.ID = id
	g.require(getScoresResponseDataZeroFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetTraceID(traceID *string) {
	g.TraceID = traceID
	g.require(getScoresResponseDataZeroFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetSessionID(sessionID *string) {
	g.SessionID = sessionID
	g.require(getScoresResponseDataZeroFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetObservationID(observationID *string) {
	g.ObservationID = observationID
	g.require(getScoresResponseDataZeroFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetDatasetRunID(datasetRunID *string) {
	g.DatasetRunID = datasetRunID
	g.require(getScoresResponseDataZeroFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetName(name string) {
	g.Name = name
	g.require(getScoresResponseDataZeroFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetSource(source ScoreSource) {
	g.Source = source
	g.require(getScoresResponseDataZeroFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetTimestamp(timestamp time.Time) {
	g.Timestamp = timestamp
	g.require(getScoresResponseDataZeroFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetCreatedAt(createdAt time.Time) {
	g.CreatedAt = createdAt
	g.require(getScoresResponseDataZeroFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetUpdatedAt(updatedAt time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getScoresResponseDataZeroFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetAuthorUserID(authorUserID *string) {
	g.AuthorUserID = authorUserID
	g.require(getScoresResponseDataZeroFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetComment(comment *string) {
	g.Comment = comment
	g.require(getScoresResponseDataZeroFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetMetadata(metadata interface{}) {
	g.Metadata = metadata
	g.require(getScoresResponseDataZeroFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetConfigID(configID *string) {
	g.ConfigID = configID
	g.require(getScoresResponseDataZeroFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetQueueID(queueID *string) {
	g.QueueID = queueID
	g.require(getScoresResponseDataZeroFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetEnvironment(environment string) {
	g.Environment = environment
	g.require(getScoresResponseDataZeroFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetValue(value float64) {
	g.Value = value
	g.require(getScoresResponseDataZeroFieldValue)
}

// SetTrace sets the Trace field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetTrace(trace *GetScoresResponseTraceData) {
	g.Trace = trace
	g.require(getScoresResponseDataZeroFieldTrace)
}

// SetDataType sets the DataType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseDataZero) SetDataType(dataType *GetScoresResponseDataZeroDataType) {
	g.DataType = dataType
	g.require(getScoresResponseDataZeroFieldDataType)
}

func (g *GetScoresResponseDataZero) UnmarshalJSON(data []byte) error {
	type embed GetScoresResponseDataZero
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetScoresResponseDataZero(unmarshaler.embed)
	g.Timestamp = unmarshaler.Timestamp.Time()
	g.CreatedAt = unmarshaler.CreatedAt.Time()
	g.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetScoresResponseDataZero) MarshalJSON() ([]byte, error) {
	type embed GetScoresResponseDataZero
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*g),
		Timestamp: internal.NewDateTime(g.Timestamp),
		CreatedAt: internal.NewDateTime(g.CreatedAt),
		UpdatedAt: internal.NewDateTime(g.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetScoresResponseDataZero) String() string {
	if len(g.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(g.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(g); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", g)
}

type GetScoresResponseDataZeroDataType string

const (
	GetScoresResponseDataZeroDataTypeNumeric GetScoresResponseDataZeroDataType = "NUMERIC"
)

func NewGetScoresResponseDataZeroDataTypeFromString(s string) (GetScoresResponseDataZeroDataType, error) {
	switch s {
	case "NUMERIC":
		return GetScoresResponseDataZeroDataTypeNumeric, nil
	}
	var t GetScoresResponseDataZeroDataType
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (g GetScoresResponseDataZeroDataType) Ptr() *GetScoresResponseDataZeroDataType {
	return &g
}

var (
	getScoresResponseTraceDataFieldUserID      = big.NewInt(1 << 0)
	getScoresResponseTraceDataFieldTags        = big.NewInt(1 << 1)
	getScoresResponseTraceDataFieldEnvironment = big.NewInt(1 << 2)
)

type GetScoresResponseTraceData struct {
	// The user ID associated with the trace referenced by score
	UserID *string `json:"userId,omitempty" url:"userId,omitempty"`
	// A list of tags associated with the trace referenced by score
	Tags []string `json:"tags,omitempty" url:"tags,omitempty"`
	// The environment of the trace referenced by score
	Environment *string `json:"environment,omitempty" url:"environment,omitempty"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (g *GetScoresResponseTraceData) GetUserID() *string {
	if g == nil {
		return nil
	}
	return g.UserID
}

func (g *GetScoresResponseTraceData) GetTags() []string {
	if g == nil {
		return nil
	}
	return g.Tags
}

func (g *GetScoresResponseTraceData) GetEnvironment() *string {
	if g == nil {
		return nil
	}
	return g.Environment
}

func (g *GetScoresResponseTraceData) GetExtraProperties() map[string]interface{} {
	return g.extraProperties
}

func (g *GetScoresResponseTraceData) require(field *big.Int) {
	if g.explicitFields == nil {
		g.explicitFields = big.NewInt(0)
	}
	g.explicitFields.Or(g.explicitFields, field)
}

// SetUserID sets the UserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseTraceData) SetUserID(userID *string) {
	g.UserID = userID
	g.require(getScoresResponseTraceDataFieldUserID)
}

// SetTags sets the Tags field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseTraceData) SetTags(tags []string) {
	g.Tags = tags
	g.require(getScoresResponseTraceDataFieldTags)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetScoresResponseTraceData) SetEnvironment(environment *string) {
	g.Environment = environment
	g.require(getScoresResponseTraceDataFieldEnvironment)
}

func (g *GetScoresResponseTraceData) UnmarshalJSON(data []byte) error {
	type unmarshaler GetScoresResponseTraceData
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*g = GetScoresResponseTraceData(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetScoresResponseTraceData) MarshalJSON() ([]byte, error) {
	type embed GetScoresResponseTraceData
	var marshaler = struct {
		embed
	}{
		embed: embed(*g),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetScoresResponseTraceData) String() string {
	if len(g.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(g.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(g); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", g)
}

var (
	numericScoreFieldID            = big.NewInt(1 << 0)
	numericScoreFieldTraceID       = big.NewInt(1 << 1)
	numericScoreFieldSessionID     = big.NewInt(1 << 2)
	numericScoreFieldObservationID = big.NewInt(1 << 3)
	numericScoreFieldDatasetRunID  = big.NewInt(1 << 4)
	numericScoreFieldName          = big.NewInt(1 << 5)
	numericScoreFieldSource        = big.NewInt(1 << 6)
	numericScoreFieldTimestamp     = big.NewInt(1 << 7)
	numericScoreFieldCreatedAt     = big.NewInt(1 << 8)
	numericScoreFieldUpdatedAt     = big.NewInt(1 << 9)
	numericScoreFieldAuthorUserID  = big.NewInt(1 << 10)
	numericScoreFieldComment       = big.NewInt(1 << 11)
	numericScoreFieldMetadata      = big.NewInt(1 << 12)
	numericScoreFieldConfigID      = big.NewInt(1 << 13)
	numericScoreFieldQueueID       = big.NewInt(1 << 14)
	numericScoreFieldEnvironment   = big.NewInt(1 << 15)
	numericScoreFieldValue         = big.NewInt(1 << 16)
)

type NumericScore struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// The numeric value of the score
	Value float64 `json:"value" url:"value"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (n *NumericScore) GetID() string {
	if n == nil {
		return ""
	}
	return n.ID
}

func (n *NumericScore) GetTraceID() *string {
	if n == nil {
		return nil
	}
	return n.TraceID
}

func (n *NumericScore) GetSessionID() *string {
	if n == nil {
		return nil
	}
	return n.SessionID
}

func (n *NumericScore) GetObservationID() *string {
	if n == nil {
		return nil
	}
	return n.ObservationID
}

func (n *NumericScore) GetDatasetRunID() *string {
	if n == nil {
		return nil
	}
	return n.DatasetRunID
}

func (n *NumericScore) GetName() string {
	if n == nil {
		return ""
	}
	return n.Name
}

func (n *NumericScore) GetSource() ScoreSource {
	if n == nil {
		return ""
	}
	return n.Source
}

func (n *NumericScore) GetTimestamp() time.Time {
	if n == nil {
		return time.Time{}
	}
	return n.Timestamp
}

func (n *NumericScore) GetCreatedAt() time.Time {
	if n == nil {
		return time.Time{}
	}
	return n.CreatedAt
}

func (n *NumericScore) GetUpdatedAt() time.Time {
	if n == nil {
		return time.Time{}
	}
	return n.UpdatedAt
}

func (n *NumericScore) GetAuthorUserID() *string {
	if n == nil {
		return nil
	}
	return n.AuthorUserID
}

func (n *NumericScore) GetComment() *string {
	if n == nil {
		return nil
	}
	return n.Comment
}

func (n *NumericScore) GetMetadata() interface{} {
	if n == nil {
		return nil
	}
	return n.Metadata
}

func (n *NumericScore) GetConfigID() *string {
	if n == nil {
		return nil
	}
	return n.ConfigID
}

func (n *NumericScore) GetQueueID() *string {
	if n == nil {
		return nil
	}
	return n.QueueID
}

func (n *NumericScore) GetEnvironment() string {
	if n == nil {
		return ""
	}
	return n.Environment
}

func (n *NumericScore) GetValue() float64 {
	if n == nil {
		return 0
	}
	return n.Value
}

func (n *NumericScore) GetExtraProperties() map[string]interface{} {
	return n.extraProperties
}

func (n *NumericScore) require(field *big.Int) {
	if n.explicitFields == nil {
		n.explicitFields = big.NewInt(0)
	}
	n.explicitFields.Or(n.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetID(id string) {
	n.ID = id
	n.require(numericScoreFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetTraceID(traceID *string) {
	n.TraceID = traceID
	n.require(numericScoreFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetSessionID(sessionID *string) {
	n.SessionID = sessionID
	n.require(numericScoreFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetObservationID(observationID *string) {
	n.ObservationID = observationID
	n.require(numericScoreFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetDatasetRunID(datasetRunID *string) {
	n.DatasetRunID = datasetRunID
	n.require(numericScoreFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetName(name string) {
	n.Name = name
	n.require(numericScoreFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetSource(source ScoreSource) {
	n.Source = source
	n.require(numericScoreFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetTimestamp(timestamp time.Time) {
	n.Timestamp = timestamp
	n.require(numericScoreFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetCreatedAt(createdAt time.Time) {
	n.CreatedAt = createdAt
	n.require(numericScoreFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetUpdatedAt(updatedAt time.Time) {
	n.UpdatedAt = updatedAt
	n.require(numericScoreFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetAuthorUserID(authorUserID *string) {
	n.AuthorUserID = authorUserID
	n.require(numericScoreFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetComment(comment *string) {
	n.Comment = comment
	n.require(numericScoreFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetMetadata(metadata interface{}) {
	n.Metadata = metadata
	n.require(numericScoreFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetConfigID(configID *string) {
	n.ConfigID = configID
	n.require(numericScoreFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetQueueID(queueID *string) {
	n.QueueID = queueID
	n.require(numericScoreFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetEnvironment(environment string) {
	n.Environment = environment
	n.require(numericScoreFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (n *NumericScore) SetValue(value float64) {
	n.Value = value
	n.require(numericScoreFieldValue)
}

func (n *NumericScore) UnmarshalJSON(data []byte) error {
	type embed NumericScore
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*n),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*n = NumericScore(unmarshaler.embed)
	n.Timestamp = unmarshaler.Timestamp.Time()
	n.CreatedAt = unmarshaler.CreatedAt.Time()
	n.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *n)
	if err != nil {
		return err
	}
	n.extraProperties = extraProperties
	n.rawJSON = json.RawMessage(data)
	return nil
}

func (n *NumericScore) MarshalJSON() ([]byte, error) {
	type embed NumericScore
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*n),
		Timestamp: internal.NewDateTime(n.Timestamp),
		CreatedAt: internal.NewDateTime(n.CreatedAt),
		UpdatedAt: internal.NewDateTime(n.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, n.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (n *NumericScore) String() string {
	if len(n.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(n.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(n); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", n)
}

type Score struct {
	ScoreZero  *ScoreZero
	ScoreOne   *ScoreOne
	ScoreTwo   *ScoreTwo
	ScoreThree *ScoreThree

	typ string
}

func (s *Score) GetScoreZero() *ScoreZero {
	if s == nil {
		return nil
	}
	return s.ScoreZero
}

func (s *Score) GetScoreOne() *ScoreOne {
	if s == nil {
		return nil
	}
	return s.ScoreOne
}

func (s *Score) GetScoreTwo() *ScoreTwo {
	if s == nil {
		return nil
	}
	return s.ScoreTwo
}

func (s *Score) GetScoreThree() *ScoreThree {
	if s == nil {
		return nil
	}
	return s.ScoreThree
}

func (s *Score) UnmarshalJSON(data []byte) error {
	valueScoreZero := new(ScoreZero)
	if err := json.Unmarshal(data, &valueScoreZero); err == nil {
		s.typ = "ScoreZero"
		s.ScoreZero = valueScoreZero
		return nil
	}
	valueScoreOne := new(ScoreOne)
	if err := json.Unmarshal(data, &valueScoreOne); err == nil {
		s.typ = "ScoreOne"
		s.ScoreOne = valueScoreOne
		return nil
	}
	valueScoreTwo := new(ScoreTwo)
	if err := json.Unmarshal(data, &valueScoreTwo); err == nil {
		s.typ = "ScoreTwo"
		s.ScoreTwo = valueScoreTwo
		return nil
	}
	valueScoreThree := new(ScoreThree)
	if err := json.Unmarshal(data, &valueScoreThree); err == nil {
		s.typ = "ScoreThree"
		s.ScoreThree = valueScoreThree
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, s)
}

func (s Score) MarshalJSON() ([]byte, error) {
	if s.typ == "ScoreZero" || s.ScoreZero != nil {
		return json.Marshal(s.ScoreZero)
	}
	if s.typ == "ScoreOne" || s.ScoreOne != nil {
		return json.Marshal(s.ScoreOne)
	}
	if s.typ == "ScoreTwo" || s.ScoreTwo != nil {
		return json.Marshal(s.ScoreTwo)
	}
	if s.typ == "ScoreThree" || s.ScoreThree != nil {
		return json.Marshal(s.ScoreThree)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", s)
}

type ScoreVisitor interface {
	VisitScoreZero(*ScoreZero) error
	VisitScoreOne(*ScoreOne) error
	VisitScoreTwo(*ScoreTwo) error
	VisitScoreThree(*ScoreThree) error
}

func (s *Score) Accept(visitor ScoreVisitor) error {
	if s.typ == "ScoreZero" || s.ScoreZero != nil {
		return visitor.VisitScoreZero(s.ScoreZero)
	}
	if s.typ == "ScoreOne" || s.ScoreOne != nil {
		return visitor.VisitScoreOne(s.ScoreOne)
	}
	if s.typ == "ScoreTwo" || s.ScoreTwo != nil {
		return visitor.VisitScoreTwo(s.ScoreTwo)
	}
	if s.typ == "ScoreThree" || s.ScoreThree != nil {
		return visitor.VisitScoreThree(s.ScoreThree)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", s)
}

var (
	scoreOneFieldID            = big.NewInt(1 << 0)
	scoreOneFieldTraceID       = big.NewInt(1 << 1)
	scoreOneFieldSessionID     = big.NewInt(1 << 2)
	scoreOneFieldObservationID = big.NewInt(1 << 3)
	scoreOneFieldDatasetRunID  = big.NewInt(1 << 4)
	scoreOneFieldName          = big.NewInt(1 << 5)
	scoreOneFieldSource        = big.NewInt(1 << 6)
	scoreOneFieldTimestamp     = big.NewInt(1 << 7)
	scoreOneFieldCreatedAt     = big.NewInt(1 << 8)
	scoreOneFieldUpdatedAt     = big.NewInt(1 << 9)
	scoreOneFieldAuthorUserID  = big.NewInt(1 << 10)
	scoreOneFieldComment       = big.NewInt(1 << 11)
	scoreOneFieldMetadata      = big.NewInt(1 << 12)
	scoreOneFieldConfigID      = big.NewInt(1 << 13)
	scoreOneFieldQueueID       = big.NewInt(1 << 14)
	scoreOneFieldEnvironment   = big.NewInt(1 << 15)
	scoreOneFieldValue         = big.NewInt(1 << 16)
	scoreOneFieldStringValue   = big.NewInt(1 << 17)
	scoreOneFieldDataType      = big.NewInt(1 << 18)
)

type ScoreOne struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// Represents the numeric category mapping of the stringValue. If no config is linked, defaults to 0.
	Value float64 `json:"value" url:"value"`
	// The string representation of the score value. If no config is linked, can be any string. Otherwise, must map to a config category
	StringValue string            `json:"stringValue" url:"stringValue"`
	DataType    *ScoreOneDataType `json:"dataType,omitempty" url:"dataType,omitempty"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (s *ScoreOne) GetID() string {
	if s == nil {
		return ""
	}
	return s.ID
}

func (s *ScoreOne) GetTraceID() *string {
	if s == nil {
		return nil
	}
	return s.TraceID
}

func (s *ScoreOne) GetSessionID() *string {
	if s == nil {
		return nil
	}
	return s.SessionID
}

func (s *ScoreOne) GetObservationID() *string {
	if s == nil {
		return nil
	}
	return s.ObservationID
}

func (s *ScoreOne) GetDatasetRunID() *string {
	if s == nil {
		return nil
	}
	return s.DatasetRunID
}

func (s *ScoreOne) GetName() string {
	if s == nil {
		return ""
	}
	return s.Name
}

func (s *ScoreOne) GetSource() ScoreSource {
	if s == nil {
		return ""
	}
	return s.Source
}

func (s *ScoreOne) GetTimestamp() time.Time {
	if s == nil {
		return time.Time{}
	}
	return s.Timestamp
}

func (s *ScoreOne) GetCreatedAt() time.Time {
	if s == nil {
		return time.Time{}
	}
	return s.CreatedAt
}

func (s *ScoreOne) GetUpdatedAt() time.Time {
	if s == nil {
		return time.Time{}
	}
	return s.UpdatedAt
}

func (s *ScoreOne) GetAuthorUserID() *string {
	if s == nil {
		return nil
	}
	return s.AuthorUserID
}

func (s *ScoreOne) GetComment() *string {
	if s == nil {
		return nil
	}
	return s.Comment
}

func (s *ScoreOne) GetMetadata() interface{} {
	if s == nil {
		return nil
	}
	return s.Metadata
}

func (s *ScoreOne) GetConfigID() *string {
	if s == nil {
		return nil
	}
	return s.ConfigID
}

func (s *ScoreOne) GetQueueID() *string {
	if s == nil {
		return nil
	}
	return s.QueueID
}

func (s *ScoreOne) GetEnvironment() string {
	if s == nil {
		return ""
	}
	return s.Environment
}

func (s *ScoreOne) GetValue() float64 {
	if s == nil {
		return 0
	}
	return s.Value
}

func (s *ScoreOne) GetStringValue() string {
	if s == nil {
		return ""
	}
	return s.StringValue
}

func (s *ScoreOne) GetDataType() *ScoreOneDataType {
	if s == nil {
		return nil
	}
	return s.DataType
}

func (s *ScoreOne) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *ScoreOne) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetID(id string) {
	s.ID = id
	s.require(scoreOneFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetTraceID(traceID *string) {
	s.TraceID = traceID
	s.require(scoreOneFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetSessionID(sessionID *string) {
	s.SessionID = sessionID
	s.require(scoreOneFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetObservationID(observationID *string) {
	s.ObservationID = observationID
	s.require(scoreOneFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetDatasetRunID(datasetRunID *string) {
	s.DatasetRunID = datasetRunID
	s.require(scoreOneFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetName(name string) {
	s.Name = name
	s.require(scoreOneFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetSource(source ScoreSource) {
	s.Source = source
	s.require(scoreOneFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetTimestamp(timestamp time.Time) {
	s.Timestamp = timestamp
	s.require(scoreOneFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetCreatedAt(createdAt time.Time) {
	s.CreatedAt = createdAt
	s.require(scoreOneFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetUpdatedAt(updatedAt time.Time) {
	s.UpdatedAt = updatedAt
	s.require(scoreOneFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetAuthorUserID(authorUserID *string) {
	s.AuthorUserID = authorUserID
	s.require(scoreOneFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetComment(comment *string) {
	s.Comment = comment
	s.require(scoreOneFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetMetadata(metadata interface{}) {
	s.Metadata = metadata
	s.require(scoreOneFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetConfigID(configID *string) {
	s.ConfigID = configID
	s.require(scoreOneFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetQueueID(queueID *string) {
	s.QueueID = queueID
	s.require(scoreOneFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetEnvironment(environment string) {
	s.Environment = environment
	s.require(scoreOneFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetValue(value float64) {
	s.Value = value
	s.require(scoreOneFieldValue)
}

// SetStringValue sets the StringValue field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetStringValue(stringValue string) {
	s.StringValue = stringValue
	s.require(scoreOneFieldStringValue)
}

// SetDataType sets the DataType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreOne) SetDataType(dataType *ScoreOneDataType) {
	s.DataType = dataType
	s.require(scoreOneFieldDataType)
}

func (s *ScoreOne) UnmarshalJSON(data []byte) error {
	type embed ScoreOne
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*s),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*s = ScoreOne(unmarshaler.embed)
	s.Timestamp = unmarshaler.Timestamp.Time()
	s.CreatedAt = unmarshaler.CreatedAt.Time()
	s.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *ScoreOne) MarshalJSON() ([]byte, error) {
	type embed ScoreOne
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*s),
		Timestamp: internal.NewDateTime(s.Timestamp),
		CreatedAt: internal.NewDateTime(s.CreatedAt),
		UpdatedAt: internal.NewDateTime(s.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *ScoreOne) String() string {
	if len(s.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(s.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(s); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", s)
}

type ScoreOneDataType string

const (
	ScoreOneDataTypeCategorical ScoreOneDataType = "CATEGORICAL"
)

func NewScoreOneDataTypeFromString(s string) (ScoreOneDataType, error) {
	switch s {
	case "CATEGORICAL":
		return ScoreOneDataTypeCategorical, nil
	}
	var t ScoreOneDataType
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (s ScoreOneDataType) Ptr() *ScoreOneDataType {
	return &s
}

var (
	scoreThreeFieldID            = big.NewInt(1 << 0)
	scoreThreeFieldTraceID       = big.NewInt(1 << 1)
	scoreThreeFieldSessionID     = big.NewInt(1 << 2)
	scoreThreeFieldObservationID = big.NewInt(1 << 3)
	scoreThreeFieldDatasetRunID  = big.NewInt(1 << 4)
	scoreThreeFieldName          = big.NewInt(1 << 5)
	scoreThreeFieldSource        = big.NewInt(1 << 6)
	scoreThreeFieldTimestamp     = big.NewInt(1 << 7)
	scoreThreeFieldCreatedAt     = big.NewInt(1 << 8)
	scoreThreeFieldUpdatedAt     = big.NewInt(1 << 9)
	scoreThreeFieldAuthorUserID  = big.NewInt(1 << 10)
	scoreThreeFieldComment       = big.NewInt(1 << 11)
	scoreThreeFieldMetadata      = big.NewInt(1 << 12)
	scoreThreeFieldConfigID      = big.NewInt(1 << 13)
	scoreThreeFieldQueueID       = big.NewInt(1 << 14)
	scoreThreeFieldEnvironment   = big.NewInt(1 << 15)
	scoreThreeFieldValue         = big.NewInt(1 << 16)
	scoreThreeFieldStringValue   = big.NewInt(1 << 17)
	scoreThreeFieldDataType      = big.NewInt(1 << 18)
)

type ScoreThree struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// The numeric value of the score. Always 0 for correction scores.
	Value float64 `json:"value" url:"value"`
	// The string representation of the correction content
	StringValue string              `json:"stringValue" url:"stringValue"`
	DataType    *ScoreThreeDataType `json:"dataType,omitempty" url:"dataType,omitempty"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (s *ScoreThree) GetID() string {
	if s == nil {
		return ""
	}
	return s.ID
}

func (s *ScoreThree) GetTraceID() *string {
	if s == nil {
		return nil
	}
	return s.TraceID
}

func (s *ScoreThree) GetSessionID() *string {
	if s == nil {
		return nil
	}
	return s.SessionID
}

func (s *ScoreThree) GetObservationID() *string {
	if s == nil {
		return nil
	}
	return s.ObservationID
}

func (s *ScoreThree) GetDatasetRunID() *string {
	if s == nil {
		return nil
	}
	return s.DatasetRunID
}

func (s *ScoreThree) GetName() string {
	if s == nil {
		return ""
	}
	return s.Name
}

func (s *ScoreThree) GetSource() ScoreSource {
	if s == nil {
		return ""
	}
	return s.Source
}

func (s *ScoreThree) GetTimestamp() time.Time {
	if s == nil {
		return time.Time{}
	}
	return s.Timestamp
}

func (s *ScoreThree) GetCreatedAt() time.Time {
	if s == nil {
		return time.Time{}
	}
	return s.CreatedAt
}

func (s *ScoreThree) GetUpdatedAt() time.Time {
	if s == nil {
		return time.Time{}
	}
	return s.UpdatedAt
}

func (s *ScoreThree) GetAuthorUserID() *string {
	if s == nil {
		return nil
	}
	return s.AuthorUserID
}

func (s *ScoreThree) GetComment() *string {
	if s == nil {
		return nil
	}
	return s.Comment
}

func (s *ScoreThree) GetMetadata() interface{} {
	if s == nil {
		return nil
	}
	return s.Metadata
}

func (s *ScoreThree) GetConfigID() *string {
	if s == nil {
		return nil
	}
	return s.ConfigID
}

func (s *ScoreThree) GetQueueID() *string {
	if s == nil {
		return nil
	}
	return s.QueueID
}

func (s *ScoreThree) GetEnvironment() string {
	if s == nil {
		return ""
	}
	return s.Environment
}

func (s *ScoreThree) GetValue() float64 {
	if s == nil {
		return 0
	}
	return s.Value
}

func (s *ScoreThree) GetStringValue() string {
	if s == nil {
		return ""
	}
	return s.StringValue
}

func (s *ScoreThree) GetDataType() *ScoreThreeDataType {
	if s == nil {
		return nil
	}
	return s.DataType
}

func (s *ScoreThree) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *ScoreThree) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetID(id string) {
	s.ID = id
	s.require(scoreThreeFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetTraceID(traceID *string) {
	s.TraceID = traceID
	s.require(scoreThreeFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetSessionID(sessionID *string) {
	s.SessionID = sessionID
	s.require(scoreThreeFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetObservationID(observationID *string) {
	s.ObservationID = observationID
	s.require(scoreThreeFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetDatasetRunID(datasetRunID *string) {
	s.DatasetRunID = datasetRunID
	s.require(scoreThreeFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetName(name string) {
	s.Name = name
	s.require(scoreThreeFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetSource(source ScoreSource) {
	s.Source = source
	s.require(scoreThreeFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetTimestamp(timestamp time.Time) {
	s.Timestamp = timestamp
	s.require(scoreThreeFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetCreatedAt(createdAt time.Time) {
	s.CreatedAt = createdAt
	s.require(scoreThreeFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetUpdatedAt(updatedAt time.Time) {
	s.UpdatedAt = updatedAt
	s.require(scoreThreeFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetAuthorUserID(authorUserID *string) {
	s.AuthorUserID = authorUserID
	s.require(scoreThreeFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetComment(comment *string) {
	s.Comment = comment
	s.require(scoreThreeFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetMetadata(metadata interface{}) {
	s.Metadata = metadata
	s.require(scoreThreeFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetConfigID(configID *string) {
	s.ConfigID = configID
	s.require(scoreThreeFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetQueueID(queueID *string) {
	s.QueueID = queueID
	s.require(scoreThreeFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetEnvironment(environment string) {
	s.Environment = environment
	s.require(scoreThreeFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetValue(value float64) {
	s.Value = value
	s.require(scoreThreeFieldValue)
}

// SetStringValue sets the StringValue field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetStringValue(stringValue string) {
	s.StringValue = stringValue
	s.require(scoreThreeFieldStringValue)
}

// SetDataType sets the DataType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreThree) SetDataType(dataType *ScoreThreeDataType) {
	s.DataType = dataType
	s.require(scoreThreeFieldDataType)
}

func (s *ScoreThree) UnmarshalJSON(data []byte) error {
	type embed ScoreThree
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*s),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*s = ScoreThree(unmarshaler.embed)
	s.Timestamp = unmarshaler.Timestamp.Time()
	s.CreatedAt = unmarshaler.CreatedAt.Time()
	s.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *ScoreThree) MarshalJSON() ([]byte, error) {
	type embed ScoreThree
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*s),
		Timestamp: internal.NewDateTime(s.Timestamp),
		CreatedAt: internal.NewDateTime(s.CreatedAt),
		UpdatedAt: internal.NewDateTime(s.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *ScoreThree) String() string {
	if len(s.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(s.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(s); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", s)
}

type ScoreThreeDataType string

const (
	ScoreThreeDataTypeCorrection ScoreThreeDataType = "CORRECTION"
)

func NewScoreThreeDataTypeFromString(s string) (ScoreThreeDataType, error) {
	switch s {
	case "CORRECTION":
		return ScoreThreeDataTypeCorrection, nil
	}
	var t ScoreThreeDataType
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (s ScoreThreeDataType) Ptr() *ScoreThreeDataType {
	return &s
}

var (
	scoreTwoFieldID            = big.NewInt(1 << 0)
	scoreTwoFieldTraceID       = big.NewInt(1 << 1)
	scoreTwoFieldSessionID     = big.NewInt(1 << 2)
	scoreTwoFieldObservationID = big.NewInt(1 << 3)
	scoreTwoFieldDatasetRunID  = big.NewInt(1 << 4)
	scoreTwoFieldName          = big.NewInt(1 << 5)
	scoreTwoFieldSource        = big.NewInt(1 << 6)
	scoreTwoFieldTimestamp     = big.NewInt(1 << 7)
	scoreTwoFieldCreatedAt     = big.NewInt(1 << 8)
	scoreTwoFieldUpdatedAt     = big.NewInt(1 << 9)
	scoreTwoFieldAuthorUserID  = big.NewInt(1 << 10)
	scoreTwoFieldComment       = big.NewInt(1 << 11)
	scoreTwoFieldMetadata      = big.NewInt(1 << 12)
	scoreTwoFieldConfigID      = big.NewInt(1 << 13)
	scoreTwoFieldQueueID       = big.NewInt(1 << 14)
	scoreTwoFieldEnvironment   = big.NewInt(1 << 15)
	scoreTwoFieldValue         = big.NewInt(1 << 16)
	scoreTwoFieldStringValue   = big.NewInt(1 << 17)
	scoreTwoFieldDataType      = big.NewInt(1 << 18)
)

type ScoreTwo struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// The numeric value of the score. Equals 1 for "True" and 0 for "False"
	Value float64 `json:"value" url:"value"`
	// The string representation of the score value. Is inferred from the numeric value and equals "True" or "False"
	StringValue string            `json:"stringValue" url:"stringValue"`
	DataType    *ScoreTwoDataType `json:"dataType,omitempty" url:"dataType,omitempty"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (s *ScoreTwo) GetID() string {
	if s == nil {
		return ""
	}
	return s.ID
}

func (s *ScoreTwo) GetTraceID() *string {
	if s == nil {
		return nil
	}
	return s.TraceID
}

func (s *ScoreTwo) GetSessionID() *string {
	if s == nil {
		return nil
	}
	return s.SessionID
}

func (s *ScoreTwo) GetObservationID() *string {
	if s == nil {
		return nil
	}
	return s.ObservationID
}

func (s *ScoreTwo) GetDatasetRunID() *string {
	if s == nil {
		return nil
	}
	return s.DatasetRunID
}

func (s *ScoreTwo) GetName() string {
	if s == nil {
		return ""
	}
	return s.Name
}

func (s *ScoreTwo) GetSource() ScoreSource {
	if s == nil {
		return ""
	}
	return s.Source
}

func (s *ScoreTwo) GetTimestamp() time.Time {
	if s == nil {
		return time.Time{}
	}
	return s.Timestamp
}

func (s *ScoreTwo) GetCreatedAt() time.Time {
	if s == nil {
		return time.Time{}
	}
	return s.CreatedAt
}

func (s *ScoreTwo) GetUpdatedAt() time.Time {
	if s == nil {
		return time.Time{}
	}
	return s.UpdatedAt
}

func (s *ScoreTwo) GetAuthorUserID() *string {
	if s == nil {
		return nil
	}
	return s.AuthorUserID
}

func (s *ScoreTwo) GetComment() *string {
	if s == nil {
		return nil
	}
	return s.Comment
}

func (s *ScoreTwo) GetMetadata() interface{} {
	if s == nil {
		return nil
	}
	return s.Metadata
}

func (s *ScoreTwo) GetConfigID() *string {
	if s == nil {
		return nil
	}
	return s.ConfigID
}

func (s *ScoreTwo) GetQueueID() *string {
	if s == nil {
		return nil
	}
	return s.QueueID
}

func (s *ScoreTwo) GetEnvironment() string {
	if s == nil {
		return ""
	}
	return s.Environment
}

func (s *ScoreTwo) GetValue() float64 {
	if s == nil {
		return 0
	}
	return s.Value
}

func (s *ScoreTwo) GetStringValue() string {
	if s == nil {
		return ""
	}
	return s.StringValue
}

func (s *ScoreTwo) GetDataType() *ScoreTwoDataType {
	if s == nil {
		return nil
	}
	return s.DataType
}

func (s *ScoreTwo) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *ScoreTwo) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetID(id string) {
	s.ID = id
	s.require(scoreTwoFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetTraceID(traceID *string) {
	s.TraceID = traceID
	s.require(scoreTwoFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetSessionID(sessionID *string) {
	s.SessionID = sessionID
	s.require(scoreTwoFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetObservationID(observationID *string) {
	s.ObservationID = observationID
	s.require(scoreTwoFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetDatasetRunID(datasetRunID *string) {
	s.DatasetRunID = datasetRunID
	s.require(scoreTwoFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetName(name string) {
	s.Name = name
	s.require(scoreTwoFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetSource(source ScoreSource) {
	s.Source = source
	s.require(scoreTwoFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetTimestamp(timestamp time.Time) {
	s.Timestamp = timestamp
	s.require(scoreTwoFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetCreatedAt(createdAt time.Time) {
	s.CreatedAt = createdAt
	s.require(scoreTwoFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetUpdatedAt(updatedAt time.Time) {
	s.UpdatedAt = updatedAt
	s.require(scoreTwoFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetAuthorUserID(authorUserID *string) {
	s.AuthorUserID = authorUserID
	s.require(scoreTwoFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetComment(comment *string) {
	s.Comment = comment
	s.require(scoreTwoFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetMetadata(metadata interface{}) {
	s.Metadata = metadata
	s.require(scoreTwoFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetConfigID(configID *string) {
	s.ConfigID = configID
	s.require(scoreTwoFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetQueueID(queueID *string) {
	s.QueueID = queueID
	s.require(scoreTwoFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetEnvironment(environment string) {
	s.Environment = environment
	s.require(scoreTwoFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetValue(value float64) {
	s.Value = value
	s.require(scoreTwoFieldValue)
}

// SetStringValue sets the StringValue field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetStringValue(stringValue string) {
	s.StringValue = stringValue
	s.require(scoreTwoFieldStringValue)
}

// SetDataType sets the DataType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreTwo) SetDataType(dataType *ScoreTwoDataType) {
	s.DataType = dataType
	s.require(scoreTwoFieldDataType)
}

func (s *ScoreTwo) UnmarshalJSON(data []byte) error {
	type embed ScoreTwo
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*s),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*s = ScoreTwo(unmarshaler.embed)
	s.Timestamp = unmarshaler.Timestamp.Time()
	s.CreatedAt = unmarshaler.CreatedAt.Time()
	s.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *ScoreTwo) MarshalJSON() ([]byte, error) {
	type embed ScoreTwo
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*s),
		Timestamp: internal.NewDateTime(s.Timestamp),
		CreatedAt: internal.NewDateTime(s.CreatedAt),
		UpdatedAt: internal.NewDateTime(s.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *ScoreTwo) String() string {
	if len(s.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(s.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(s); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", s)
}

type ScoreTwoDataType string

const (
	ScoreTwoDataTypeBoolean ScoreTwoDataType = "BOOLEAN"
)

func NewScoreTwoDataTypeFromString(s string) (ScoreTwoDataType, error) {
	switch s {
	case "BOOLEAN":
		return ScoreTwoDataTypeBoolean, nil
	}
	var t ScoreTwoDataType
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (s ScoreTwoDataType) Ptr() *ScoreTwoDataType {
	return &s
}

var (
	scoreZeroFieldID            = big.NewInt(1 << 0)
	scoreZeroFieldTraceID       = big.NewInt(1 << 1)
	scoreZeroFieldSessionID     = big.NewInt(1 << 2)
	scoreZeroFieldObservationID = big.NewInt(1 << 3)
	scoreZeroFieldDatasetRunID  = big.NewInt(1 << 4)
	scoreZeroFieldName          = big.NewInt(1 << 5)
	scoreZeroFieldSource        = big.NewInt(1 << 6)
	scoreZeroFieldTimestamp     = big.NewInt(1 << 7)
	scoreZeroFieldCreatedAt     = big.NewInt(1 << 8)
	scoreZeroFieldUpdatedAt     = big.NewInt(1 << 9)
	scoreZeroFieldAuthorUserID  = big.NewInt(1 << 10)
	scoreZeroFieldComment       = big.NewInt(1 << 11)
	scoreZeroFieldMetadata      = big.NewInt(1 << 12)
	scoreZeroFieldConfigID      = big.NewInt(1 << 13)
	scoreZeroFieldQueueID       = big.NewInt(1 << 14)
	scoreZeroFieldEnvironment   = big.NewInt(1 << 15)
	scoreZeroFieldValue         = big.NewInt(1 << 16)
	scoreZeroFieldDataType      = big.NewInt(1 << 17)
)

type ScoreZero struct {
	ID string `json:"id" url:"id"`
	// The trace ID associated with the score
	TraceID *string `json:"traceId,omitempty" url:"traceId,omitempty"`
	// The session ID associated with the score
	SessionID *string `json:"sessionId,omitempty" url:"sessionId,omitempty"`
	// The observation ID associated with the score
	ObservationID *string `json:"observationId,omitempty" url:"observationId,omitempty"`
	// The dataset run ID associated with the score
	DatasetRunID *string     `json:"datasetRunId,omitempty" url:"datasetRunId,omitempty"`
	Name         string      `json:"name" url:"name"`
	Source       ScoreSource `json:"source" url:"source"`
	Timestamp    time.Time   `json:"timestamp" url:"timestamp"`
	CreatedAt    time.Time   `json:"createdAt" url:"createdAt"`
	UpdatedAt    time.Time   `json:"updatedAt" url:"updatedAt"`
	// The user ID of the author
	AuthorUserID *string `json:"authorUserId,omitempty" url:"authorUserId,omitempty"`
	// Comment on the score
	Comment  *string     `json:"comment,omitempty" url:"comment,omitempty"`
	Metadata interface{} `json:"metadata" url:"metadata"`
	// Reference a score config on a score. When set, config and score name must be equal and value must comply to optionally defined numerical range
	ConfigID *string `json:"configId,omitempty" url:"configId,omitempty"`
	// The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
	QueueID *string `json:"queueId,omitempty" url:"queueId,omitempty"`
	// The environment from which this score originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'langfuse'.
	Environment string `json:"environment" url:"environment"`
	// The numeric value of the score
	Value    float64            `json:"value" url:"value"`
	DataType *ScoreZeroDataType `json:"dataType,omitempty" url:"dataType,omitempty"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	extraProperties map[string]interface{}
	rawJSON         json.RawMessage
}

func (s *ScoreZero) GetID() string {
	if s == nil {
		return ""
	}
	return s.ID
}

func (s *ScoreZero) GetTraceID() *string {
	if s == nil {
		return nil
	}
	return s.TraceID
}

func (s *ScoreZero) GetSessionID() *string {
	if s == nil {
		return nil
	}
	return s.SessionID
}

func (s *ScoreZero) GetObservationID() *string {
	if s == nil {
		return nil
	}
	return s.ObservationID
}

func (s *ScoreZero) GetDatasetRunID() *string {
	if s == nil {
		return nil
	}
	return s.DatasetRunID
}

func (s *ScoreZero) GetName() string {
	if s == nil {
		return ""
	}
	return s.Name
}

func (s *ScoreZero) GetSource() ScoreSource {
	if s == nil {
		return ""
	}
	return s.Source
}

func (s *ScoreZero) GetTimestamp() time.Time {
	if s == nil {
		return time.Time{}
	}
	return s.Timestamp
}

func (s *ScoreZero) GetCreatedAt() time.Time {
	if s == nil {
		return time.Time{}
	}
	return s.CreatedAt
}

func (s *ScoreZero) GetUpdatedAt() time.Time {
	if s == nil {
		return time.Time{}
	}
	return s.UpdatedAt
}

func (s *ScoreZero) GetAuthorUserID() *string {
	if s == nil {
		return nil
	}
	return s.AuthorUserID
}

func (s *ScoreZero) GetComment() *string {
	if s == nil {
		return nil
	}
	return s.Comment
}

func (s *ScoreZero) GetMetadata() interface{} {
	if s == nil {
		return nil
	}
	return s.Metadata
}

func (s *ScoreZero) GetConfigID() *string {
	if s == nil {
		return nil
	}
	return s.ConfigID
}

func (s *ScoreZero) GetQueueID() *string {
	if s == nil {
		return nil
	}
	return s.QueueID
}

func (s *ScoreZero) GetEnvironment() string {
	if s == nil {
		return ""
	}
	return s.Environment
}

func (s *ScoreZero) GetValue() float64 {
	if s == nil {
		return 0
	}
	return s.Value
}

func (s *ScoreZero) GetDataType() *ScoreZeroDataType {
	if s == nil {
		return nil
	}
	return s.DataType
}

func (s *ScoreZero) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *ScoreZero) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetID sets the ID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetID(id string) {
	s.ID = id
	s.require(scoreZeroFieldID)
}

// SetTraceID sets the TraceID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetTraceID(traceID *string) {
	s.TraceID = traceID
	s.require(scoreZeroFieldTraceID)
}

// SetSessionID sets the SessionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetSessionID(sessionID *string) {
	s.SessionID = sessionID
	s.require(scoreZeroFieldSessionID)
}

// SetObservationID sets the ObservationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetObservationID(observationID *string) {
	s.ObservationID = observationID
	s.require(scoreZeroFieldObservationID)
}

// SetDatasetRunID sets the DatasetRunID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetDatasetRunID(datasetRunID *string) {
	s.DatasetRunID = datasetRunID
	s.require(scoreZeroFieldDatasetRunID)
}

// SetName sets the Name field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetName(name string) {
	s.Name = name
	s.require(scoreZeroFieldName)
}

// SetSource sets the Source field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetSource(source ScoreSource) {
	s.Source = source
	s.require(scoreZeroFieldSource)
}

// SetTimestamp sets the Timestamp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetTimestamp(timestamp time.Time) {
	s.Timestamp = timestamp
	s.require(scoreZeroFieldTimestamp)
}

// SetCreatedAt sets the CreatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetCreatedAt(createdAt time.Time) {
	s.CreatedAt = createdAt
	s.require(scoreZeroFieldCreatedAt)
}

// SetUpdatedAt sets the UpdatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetUpdatedAt(updatedAt time.Time) {
	s.UpdatedAt = updatedAt
	s.require(scoreZeroFieldUpdatedAt)
}

// SetAuthorUserID sets the AuthorUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetAuthorUserID(authorUserID *string) {
	s.AuthorUserID = authorUserID
	s.require(scoreZeroFieldAuthorUserID)
}

// SetComment sets the Comment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetComment(comment *string) {
	s.Comment = comment
	s.require(scoreZeroFieldComment)
}

// SetMetadata sets the Metadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetMetadata(metadata interface{}) {
	s.Metadata = metadata
	s.require(scoreZeroFieldMetadata)
}

// SetConfigID sets the ConfigID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetConfigID(configID *string) {
	s.ConfigID = configID
	s.require(scoreZeroFieldConfigID)
}

// SetQueueID sets the QueueID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetQueueID(queueID *string) {
	s.QueueID = queueID
	s.require(scoreZeroFieldQueueID)
}

// SetEnvironment sets the Environment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetEnvironment(environment string) {
	s.Environment = environment
	s.require(scoreZeroFieldEnvironment)
}

// SetValue sets the Value field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetValue(value float64) {
	s.Value = value
	s.require(scoreZeroFieldValue)
}

// SetDataType sets the DataType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *ScoreZero) SetDataType(dataType *ScoreZeroDataType) {
	s.DataType = dataType
	s.require(scoreZeroFieldDataType)
}

func (s *ScoreZero) UnmarshalJSON(data []byte) error {
	type embed ScoreZero
	var unmarshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed: embed(*s),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*s = ScoreZero(unmarshaler.embed)
	s.Timestamp = unmarshaler.Timestamp.Time()
	s.CreatedAt = unmarshaler.CreatedAt.Time()
	s.UpdatedAt = unmarshaler.UpdatedAt.Time()
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *ScoreZero) MarshalJSON() ([]byte, error) {
	type embed ScoreZero
	var marshaler = struct {
		embed
		Timestamp *internal.DateTime `json:"timestamp"`
		CreatedAt *internal.DateTime `json:"createdAt"`
		UpdatedAt *internal.DateTime `json:"updatedAt"`
	}{
		embed:     embed(*s),
		Timestamp: internal.NewDateTime(s.Timestamp),
		CreatedAt: internal.NewDateTime(s.CreatedAt),
		UpdatedAt: internal.NewDateTime(s.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *ScoreZero) String() string {
	if len(s.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(s.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(s); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", s)
}

type ScoreZeroDataType string

const (
	ScoreZeroDataTypeNumeric ScoreZeroDataType = "NUMERIC"
)

func NewScoreZeroDataTypeFromString(s string) (ScoreZeroDataType, error) {
	switch s {
	case "NUMERIC":
		return ScoreZeroDataTypeNumeric, nil
	}
	var t ScoreZeroDataType
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (s ScoreZeroDataType) Ptr() *ScoreZeroDataType {
	return &s
}
