// Code generated by Fern. DO NOT EDIT.

package management

import (
	json "encoding/json"
	fmt "fmt"
	internal "github.com/auth0/go-auth0/v2/management/internal"
	big "math/big"
	time "time"
)

var (
	actionFieldID                     = big.NewInt(1 << 0)
	actionFieldName                   = big.NewInt(1 << 1)
	actionFieldSupportedTriggers      = big.NewInt(1 << 2)
	actionFieldAllChangesDeployed     = big.NewInt(1 << 3)
	actionFieldCreatedAt              = big.NewInt(1 << 4)
	actionFieldUpdatedAt              = big.NewInt(1 << 5)
	actionFieldCode                   = big.NewInt(1 << 6)
	actionFieldDependencies           = big.NewInt(1 << 7)
	actionFieldRuntime                = big.NewInt(1 << 8)
	actionFieldSecrets                = big.NewInt(1 << 9)
	actionFieldDeployedVersion        = big.NewInt(1 << 10)
	actionFieldInstalledIntegrationID = big.NewInt(1 << 11)
	actionFieldIntegration            = big.NewInt(1 << 12)
	actionFieldStatus                 = big.NewInt(1 << 13)
	actionFieldBuiltAt                = big.NewInt(1 << 14)
	actionFieldDeploy                 = big.NewInt(1 << 15)
)

type Action struct {
	// The unique ID of the action.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name of an action.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// The list of triggers that this action supports. At this time, an action can only target a single trigger at a time.
	SupportedTriggers []*ActionTrigger `json:"supported_triggers,omitempty" url:"supported_triggers,omitempty"`
	// True if all of an Action's contents have been deployed.
	AllChangesDeployed *bool `json:"all_changes_deployed,omitempty" url:"all_changes_deployed,omitempty"`
	// The time when this action was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The time when this action was updated.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,omitempty"`
	// The source code of the action.
	Code *string `json:"code,omitempty" url:"code,omitempty"`
	// The list of third party npm modules, and their versions, that this action depends on.
	Dependencies []*ActionVersionDependency `json:"dependencies,omitempty" url:"dependencies,omitempty"`
	// The Node runtime. For example: `node22`, defaults to `node22`
	Runtime *string `json:"runtime,omitempty" url:"runtime,omitempty"`
	// The list of secrets that are included in an action or a version of an action.
	Secrets         []*ActionSecretResponse `json:"secrets,omitempty" url:"secrets,omitempty"`
	DeployedVersion *ActionDeployedVersion  `json:"deployed_version,omitempty" url:"deployed_version,omitempty"`
	// installed_integration_id is the fk reference to the InstalledIntegration entity.
	InstalledIntegrationID *string                `json:"installed_integration_id,omitempty" url:"installed_integration_id,omitempty"`
	Integration            *Integration           `json:"integration,omitempty" url:"integration,omitempty"`
	Status                 *ActionBuildStatusEnum `json:"status,omitempty" url:"status,omitempty"`
	// The time when this action was built successfully.
	BuiltAt *time.Time `json:"built_at,omitempty" url:"built_at,omitempty"`
	// True if the action should be deployed after creation.
	Deploy *bool `json:"deploy,omitempty" url:"deploy,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 (a *Action) GetID() string {
	if a == nil || a.ID == nil {
		return ""
	}
	return *a.ID
}

func (a *Action) GetName() string {
	if a == nil || a.Name == nil {
		return ""
	}
	return *a.Name
}

func (a *Action) GetSupportedTriggers() []*ActionTrigger {
	if a == nil || a.SupportedTriggers == nil {
		return nil
	}
	return a.SupportedTriggers
}

func (a *Action) GetAllChangesDeployed() bool {
	if a == nil || a.AllChangesDeployed == nil {
		return false
	}
	return *a.AllChangesDeployed
}

func (a *Action) GetCreatedAt() time.Time {
	if a == nil || a.CreatedAt == nil {
		return time.Time{}
	}
	return *a.CreatedAt
}

func (a *Action) GetUpdatedAt() time.Time {
	if a == nil || a.UpdatedAt == nil {
		return time.Time{}
	}
	return *a.UpdatedAt
}

func (a *Action) GetCode() string {
	if a == nil || a.Code == nil {
		return ""
	}
	return *a.Code
}

func (a *Action) GetDependencies() []*ActionVersionDependency {
	if a == nil || a.Dependencies == nil {
		return nil
	}
	return a.Dependencies
}

func (a *Action) GetRuntime() string {
	if a == nil || a.Runtime == nil {
		return ""
	}
	return *a.Runtime
}

func (a *Action) GetSecrets() []*ActionSecretResponse {
	if a == nil || a.Secrets == nil {
		return nil
	}
	return a.Secrets
}

func (a *Action) GetDeployedVersion() ActionDeployedVersion {
	if a == nil || a.DeployedVersion == nil {
		return ActionDeployedVersion{}
	}
	return *a.DeployedVersion
}

func (a *Action) GetInstalledIntegrationID() string {
	if a == nil || a.InstalledIntegrationID == nil {
		return ""
	}
	return *a.InstalledIntegrationID
}

func (a *Action) GetIntegration() Integration {
	if a == nil || a.Integration == nil {
		return Integration{}
	}
	return *a.Integration
}

func (a *Action) GetStatus() ActionBuildStatusEnum {
	if a == nil || a.Status == nil {
		return ""
	}
	return *a.Status
}

func (a *Action) GetBuiltAt() time.Time {
	if a == nil || a.BuiltAt == nil {
		return time.Time{}
	}
	return *a.BuiltAt
}

func (a *Action) GetDeploy() bool {
	if a == nil || a.Deploy == nil {
		return false
	}
	return *a.Deploy
}

func (a *Action) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

func (a *Action) require(field *big.Int) {
	if a.explicitFields == nil {
		a.explicitFields = big.NewInt(0)
	}
	a.explicitFields.Or(a.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 (a *Action) SetID(id *string) {
	a.ID = id
	a.require(actionFieldID)
}

// 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 (a *Action) SetName(name *string) {
	a.Name = name
	a.require(actionFieldName)
}

// SetSupportedTriggers sets the SupportedTriggers field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *Action) SetSupportedTriggers(supportedTriggers []*ActionTrigger) {
	a.SupportedTriggers = supportedTriggers
	a.require(actionFieldSupportedTriggers)
}

// SetAllChangesDeployed sets the AllChangesDeployed field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *Action) SetAllChangesDeployed(allChangesDeployed *bool) {
	a.AllChangesDeployed = allChangesDeployed
	a.require(actionFieldAllChangesDeployed)
}

// 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 (a *Action) SetCreatedAt(createdAt *time.Time) {
	a.CreatedAt = createdAt
	a.require(actionFieldCreatedAt)
}

// 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 (a *Action) SetUpdatedAt(updatedAt *time.Time) {
	a.UpdatedAt = updatedAt
	a.require(actionFieldUpdatedAt)
}

// SetCode sets the Code field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *Action) SetCode(code *string) {
	a.Code = code
	a.require(actionFieldCode)
}

// SetDependencies sets the Dependencies field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *Action) SetDependencies(dependencies []*ActionVersionDependency) {
	a.Dependencies = dependencies
	a.require(actionFieldDependencies)
}

// SetRuntime sets the Runtime field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *Action) SetRuntime(runtime *string) {
	a.Runtime = runtime
	a.require(actionFieldRuntime)
}

// SetSecrets sets the Secrets field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *Action) SetSecrets(secrets []*ActionSecretResponse) {
	a.Secrets = secrets
	a.require(actionFieldSecrets)
}

// SetDeployedVersion sets the DeployedVersion field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *Action) SetDeployedVersion(deployedVersion *ActionDeployedVersion) {
	a.DeployedVersion = deployedVersion
	a.require(actionFieldDeployedVersion)
}

// SetInstalledIntegrationID sets the InstalledIntegrationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *Action) SetInstalledIntegrationID(installedIntegrationID *string) {
	a.InstalledIntegrationID = installedIntegrationID
	a.require(actionFieldInstalledIntegrationID)
}

// SetIntegration sets the Integration field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *Action) SetIntegration(integration *Integration) {
	a.Integration = integration
	a.require(actionFieldIntegration)
}

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *Action) SetStatus(status *ActionBuildStatusEnum) {
	a.Status = status
	a.require(actionFieldStatus)
}

// SetBuiltAt sets the BuiltAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *Action) SetBuiltAt(builtAt *time.Time) {
	a.BuiltAt = builtAt
	a.require(actionFieldBuiltAt)
}

// SetDeploy sets the Deploy field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *Action) SetDeploy(deploy *bool) {
	a.Deploy = deploy
	a.require(actionFieldDeploy)
}

func (a *Action) UnmarshalJSON(data []byte) error {
	type embed Action
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
		BuiltAt   *internal.DateTime `json:"built_at,omitempty"`
	}{
		embed: embed(*a),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*a = Action(unmarshaler.embed)
	a.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	a.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	a.BuiltAt = unmarshaler.BuiltAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *a)
	if err != nil {
		return err
	}
	a.extraProperties = extraProperties
	a.rawJSON = json.RawMessage(data)
	return nil
}

func (a *Action) MarshalJSON() ([]byte, error) {
	type embed Action
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
		BuiltAt   *internal.DateTime `json:"built_at,omitempty"`
	}{
		embed:     embed(*a),
		CreatedAt: internal.NewOptionalDateTime(a.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(a.UpdatedAt),
		BuiltAt:   internal.NewOptionalDateTime(a.BuiltAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, a.explicitFields)
	return json.Marshal(explicitMarshaler)
}

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

// The action to which this version belongs.
var (
	actionBaseFieldID                 = big.NewInt(1 << 0)
	actionBaseFieldName               = big.NewInt(1 << 1)
	actionBaseFieldSupportedTriggers  = big.NewInt(1 << 2)
	actionBaseFieldAllChangesDeployed = big.NewInt(1 << 3)
	actionBaseFieldCreatedAt          = big.NewInt(1 << 4)
	actionBaseFieldUpdatedAt          = big.NewInt(1 << 5)
)

type ActionBase struct {
	// The unique ID of the action.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name of an action.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// The list of triggers that this action supports. At this time, an action can only target a single trigger at a time.
	SupportedTriggers []*ActionTrigger `json:"supported_triggers,omitempty" url:"supported_triggers,omitempty"`
	// True if all of an Action's contents have been deployed.
	AllChangesDeployed *bool `json:"all_changes_deployed,omitempty" url:"all_changes_deployed,omitempty"`
	// The time when this action was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The time when this action was updated.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,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 (a *ActionBase) GetID() string {
	if a == nil || a.ID == nil {
		return ""
	}
	return *a.ID
}

func (a *ActionBase) GetName() string {
	if a == nil || a.Name == nil {
		return ""
	}
	return *a.Name
}

func (a *ActionBase) GetSupportedTriggers() []*ActionTrigger {
	if a == nil || a.SupportedTriggers == nil {
		return nil
	}
	return a.SupportedTriggers
}

func (a *ActionBase) GetAllChangesDeployed() bool {
	if a == nil || a.AllChangesDeployed == nil {
		return false
	}
	return *a.AllChangesDeployed
}

func (a *ActionBase) GetCreatedAt() time.Time {
	if a == nil || a.CreatedAt == nil {
		return time.Time{}
	}
	return *a.CreatedAt
}

func (a *ActionBase) GetUpdatedAt() time.Time {
	if a == nil || a.UpdatedAt == nil {
		return time.Time{}
	}
	return *a.UpdatedAt
}

func (a *ActionBase) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

func (a *ActionBase) require(field *big.Int) {
	if a.explicitFields == nil {
		a.explicitFields = big.NewInt(0)
	}
	a.explicitFields.Or(a.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 (a *ActionBase) SetID(id *string) {
	a.ID = id
	a.require(actionBaseFieldID)
}

// 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 (a *ActionBase) SetName(name *string) {
	a.Name = name
	a.require(actionBaseFieldName)
}

// SetSupportedTriggers sets the SupportedTriggers field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionBase) SetSupportedTriggers(supportedTriggers []*ActionTrigger) {
	a.SupportedTriggers = supportedTriggers
	a.require(actionBaseFieldSupportedTriggers)
}

// SetAllChangesDeployed sets the AllChangesDeployed field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionBase) SetAllChangesDeployed(allChangesDeployed *bool) {
	a.AllChangesDeployed = allChangesDeployed
	a.require(actionBaseFieldAllChangesDeployed)
}

// 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 (a *ActionBase) SetCreatedAt(createdAt *time.Time) {
	a.CreatedAt = createdAt
	a.require(actionBaseFieldCreatedAt)
}

// 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 (a *ActionBase) SetUpdatedAt(updatedAt *time.Time) {
	a.UpdatedAt = updatedAt
	a.require(actionBaseFieldUpdatedAt)
}

func (a *ActionBase) UnmarshalJSON(data []byte) error {
	type embed ActionBase
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*a),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*a = ActionBase(unmarshaler.embed)
	a.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	a.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *a)
	if err != nil {
		return err
	}
	a.extraProperties = extraProperties
	a.rawJSON = json.RawMessage(data)
	return nil
}

func (a *ActionBase) MarshalJSON() ([]byte, error) {
	type embed ActionBase
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*a),
		CreatedAt: internal.NewOptionalDateTime(a.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(a.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, a.explicitFields)
	return json.Marshal(explicitMarshaler)
}

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

// Binding is the associative entity joining a trigger, and an action together.
var (
	actionBindingFieldID          = big.NewInt(1 << 0)
	actionBindingFieldTriggerID   = big.NewInt(1 << 1)
	actionBindingFieldDisplayName = big.NewInt(1 << 2)
	actionBindingFieldAction      = big.NewInt(1 << 3)
	actionBindingFieldCreatedAt   = big.NewInt(1 << 4)
	actionBindingFieldUpdatedAt   = big.NewInt(1 << 5)
)

type ActionBinding struct {
	// The unique ID of this binding.
	ID        *string                `json:"id,omitempty" url:"id,omitempty"`
	TriggerID *ActionTriggerTypeEnum `json:"trigger_id,omitempty" url:"trigger_id,omitempty"`
	// The name of the binding.
	DisplayName *string `json:"display_name,omitempty" url:"display_name,omitempty"`
	Action      *Action `json:"action,omitempty" url:"action,omitempty"`
	// The time when the binding was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The time when the binding was updated.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,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 (a *ActionBinding) GetID() string {
	if a == nil || a.ID == nil {
		return ""
	}
	return *a.ID
}

func (a *ActionBinding) GetTriggerID() ActionTriggerTypeEnum {
	if a == nil || a.TriggerID == nil {
		return ""
	}
	return *a.TriggerID
}

func (a *ActionBinding) GetDisplayName() string {
	if a == nil || a.DisplayName == nil {
		return ""
	}
	return *a.DisplayName
}

func (a *ActionBinding) GetAction() Action {
	if a == nil || a.Action == nil {
		return Action{}
	}
	return *a.Action
}

func (a *ActionBinding) GetCreatedAt() time.Time {
	if a == nil || a.CreatedAt == nil {
		return time.Time{}
	}
	return *a.CreatedAt
}

func (a *ActionBinding) GetUpdatedAt() time.Time {
	if a == nil || a.UpdatedAt == nil {
		return time.Time{}
	}
	return *a.UpdatedAt
}

func (a *ActionBinding) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

func (a *ActionBinding) require(field *big.Int) {
	if a.explicitFields == nil {
		a.explicitFields = big.NewInt(0)
	}
	a.explicitFields.Or(a.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 (a *ActionBinding) SetID(id *string) {
	a.ID = id
	a.require(actionBindingFieldID)
}

// SetTriggerID sets the TriggerID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionBinding) SetTriggerID(triggerID *ActionTriggerTypeEnum) {
	a.TriggerID = triggerID
	a.require(actionBindingFieldTriggerID)
}

// SetDisplayName sets the DisplayName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionBinding) SetDisplayName(displayName *string) {
	a.DisplayName = displayName
	a.require(actionBindingFieldDisplayName)
}

// SetAction sets the Action field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionBinding) SetAction(action *Action) {
	a.Action = action
	a.require(actionBindingFieldAction)
}

// 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 (a *ActionBinding) SetCreatedAt(createdAt *time.Time) {
	a.CreatedAt = createdAt
	a.require(actionBindingFieldCreatedAt)
}

// 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 (a *ActionBinding) SetUpdatedAt(updatedAt *time.Time) {
	a.UpdatedAt = updatedAt
	a.require(actionBindingFieldUpdatedAt)
}

func (a *ActionBinding) UnmarshalJSON(data []byte) error {
	type embed ActionBinding
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*a),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*a = ActionBinding(unmarshaler.embed)
	a.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	a.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *a)
	if err != nil {
		return err
	}
	a.extraProperties = extraProperties
	a.rawJSON = json.RawMessage(data)
	return nil
}

func (a *ActionBinding) MarshalJSON() ([]byte, error) {
	type embed ActionBinding
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*a),
		CreatedAt: internal.NewOptionalDateTime(a.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(a.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, a.explicitFields)
	return json.Marshal(explicitMarshaler)
}

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

// A reference to an action. An action can be referred to by ID or by Name.
var (
	actionBindingRefFieldType  = big.NewInt(1 << 0)
	actionBindingRefFieldValue = big.NewInt(1 << 1)
)

type ActionBindingRef struct {
	Type *ActionBindingRefTypeEnum `json:"type,omitempty" url:"type,omitempty"`
	// The id or name of an action that is being bound to a trigger.
	Value *string `json:"value,omitempty" url:"value,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (a *ActionBindingRef) GetType() ActionBindingRefTypeEnum {
	if a == nil || a.Type == nil {
		return ""
	}
	return *a.Type
}

func (a *ActionBindingRef) GetValue() string {
	if a == nil || a.Value == nil {
		return ""
	}
	return *a.Value
}

func (a *ActionBindingRef) GetExtraProperties() map[string]interface{} {
	return a.ExtraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionBindingRef) SetType(type_ *ActionBindingRefTypeEnum) {
	a.Type = type_
	a.require(actionBindingRefFieldType)
}

// 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 (a *ActionBindingRef) SetValue(value *string) {
	a.Value = value
	a.require(actionBindingRefFieldValue)
}

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

func (a *ActionBindingRef) MarshalJSON() ([]byte, error) {
	type embed ActionBindingRef
	var marshaler = struct {
		embed
	}{
		embed: embed(*a),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, a.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, a.ExtraProperties)
}

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

// How the action is being referred to: `action_id` or `action_name`.
type ActionBindingRefTypeEnum string

const (
	ActionBindingRefTypeEnumBindingID  ActionBindingRefTypeEnum = "binding_id"
	ActionBindingRefTypeEnumActionID   ActionBindingRefTypeEnum = "action_id"
	ActionBindingRefTypeEnumActionName ActionBindingRefTypeEnum = "action_name"
)

func NewActionBindingRefTypeEnumFromString(s string) (ActionBindingRefTypeEnum, error) {
	switch s {
	case "binding_id":
		return ActionBindingRefTypeEnumBindingID, nil
	case "action_id":
		return ActionBindingRefTypeEnumActionID, nil
	case "action_name":
		return ActionBindingRefTypeEnumActionName, nil
	}
	var t ActionBindingRefTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (a ActionBindingRefTypeEnum) Ptr() *ActionBindingRefTypeEnum {
	return &a
}

// In order to execute an Action, it must be bound to a trigger using a binding. `trigger-bound` means that bindings are managed by the tenant. `entity-bound` means that the bindings are automatically managed by Auth0 and other internal resouces will control those bindings. Tenants cannot manage `entity-bound` bindings.
type ActionBindingTypeEnum string

const (
	ActionBindingTypeEnumTriggerBound ActionBindingTypeEnum = "trigger-bound"
	ActionBindingTypeEnumEntityBound  ActionBindingTypeEnum = "entity-bound"
)

func NewActionBindingTypeEnumFromString(s string) (ActionBindingTypeEnum, error) {
	switch s {
	case "trigger-bound":
		return ActionBindingTypeEnumTriggerBound, nil
	case "entity-bound":
		return ActionBindingTypeEnumEntityBound, nil
	}
	var t ActionBindingTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (a ActionBindingTypeEnum) Ptr() *ActionBindingTypeEnum {
	return &a
}

var (
	actionBindingWithRefFieldRef         = big.NewInt(1 << 0)
	actionBindingWithRefFieldDisplayName = big.NewInt(1 << 1)
	actionBindingWithRefFieldSecrets     = big.NewInt(1 << 2)
)

type ActionBindingWithRef struct {
	Ref *ActionBindingRef `json:"ref" url:"ref"`
	// The name of the binding.
	DisplayName *string `json:"display_name,omitempty" url:"display_name,omitempty"`
	// The list of secrets that are included in an action or a version of an action.
	Secrets []*ActionSecretRequest `json:"secrets,omitempty" url:"secrets,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 (a *ActionBindingWithRef) GetRef() *ActionBindingRef {
	if a == nil {
		return nil
	}
	return a.Ref
}

func (a *ActionBindingWithRef) GetDisplayName() string {
	if a == nil || a.DisplayName == nil {
		return ""
	}
	return *a.DisplayName
}

func (a *ActionBindingWithRef) GetSecrets() []*ActionSecretRequest {
	if a == nil || a.Secrets == nil {
		return nil
	}
	return a.Secrets
}

func (a *ActionBindingWithRef) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

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

// SetRef sets the Ref field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionBindingWithRef) SetRef(ref *ActionBindingRef) {
	a.Ref = ref
	a.require(actionBindingWithRefFieldRef)
}

// SetDisplayName sets the DisplayName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionBindingWithRef) SetDisplayName(displayName *string) {
	a.DisplayName = displayName
	a.require(actionBindingWithRefFieldDisplayName)
}

// SetSecrets sets the Secrets field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionBindingWithRef) SetSecrets(secrets []*ActionSecretRequest) {
	a.Secrets = secrets
	a.require(actionBindingWithRefFieldSecrets)
}

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

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

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

// The build status of this action.
type ActionBuildStatusEnum string

const (
	ActionBuildStatusEnumPending  ActionBuildStatusEnum = "pending"
	ActionBuildStatusEnumBuilding ActionBuildStatusEnum = "building"
	ActionBuildStatusEnumPackaged ActionBuildStatusEnum = "packaged"
	ActionBuildStatusEnumBuilt    ActionBuildStatusEnum = "built"
	ActionBuildStatusEnumRetrying ActionBuildStatusEnum = "retrying"
	ActionBuildStatusEnumFailed   ActionBuildStatusEnum = "failed"
)

func NewActionBuildStatusEnumFromString(s string) (ActionBuildStatusEnum, error) {
	switch s {
	case "pending":
		return ActionBuildStatusEnumPending, nil
	case "building":
		return ActionBuildStatusEnumBuilding, nil
	case "packaged":
		return ActionBuildStatusEnumPackaged, nil
	case "built":
		return ActionBuildStatusEnumBuilt, nil
	case "retrying":
		return ActionBuildStatusEnumRetrying, nil
	case "failed":
		return ActionBuildStatusEnumFailed, nil
	}
	var t ActionBuildStatusEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (a ActionBuildStatusEnum) Ptr() *ActionBuildStatusEnum {
	return &a
}

// The version of the action that is currently deployed.
var (
	actionDeployedVersionFieldID                = big.NewInt(1 << 0)
	actionDeployedVersionFieldActionID          = big.NewInt(1 << 1)
	actionDeployedVersionFieldCode              = big.NewInt(1 << 2)
	actionDeployedVersionFieldDependencies      = big.NewInt(1 << 3)
	actionDeployedVersionFieldDeployed          = big.NewInt(1 << 4)
	actionDeployedVersionFieldRuntime           = big.NewInt(1 << 5)
	actionDeployedVersionFieldSecrets           = big.NewInt(1 << 6)
	actionDeployedVersionFieldStatus            = big.NewInt(1 << 7)
	actionDeployedVersionFieldNumber            = big.NewInt(1 << 8)
	actionDeployedVersionFieldErrors            = big.NewInt(1 << 9)
	actionDeployedVersionFieldAction            = big.NewInt(1 << 10)
	actionDeployedVersionFieldBuiltAt           = big.NewInt(1 << 11)
	actionDeployedVersionFieldCreatedAt         = big.NewInt(1 << 12)
	actionDeployedVersionFieldUpdatedAt         = big.NewInt(1 << 13)
	actionDeployedVersionFieldSupportedTriggers = big.NewInt(1 << 14)
)

type ActionDeployedVersion struct {
	// The unique id of an action version.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The id of the action to which this version belongs.
	ActionID *string `json:"action_id,omitempty" url:"action_id,omitempty"`
	// The source code of this specific version of the action.
	Code *string `json:"code,omitempty" url:"code,omitempty"`
	// The list of third party npm modules, and their versions, that this specific version depends on.
	Dependencies []*ActionVersionDependency `json:"dependencies,omitempty" url:"dependencies,omitempty"`
	// Indicates if this specific version is the currently one deployed.
	Deployed *bool `json:"deployed,omitempty" url:"deployed,omitempty"`
	// The Node runtime. For example: `node22`
	Runtime *string `json:"runtime,omitempty" url:"runtime,omitempty"`
	// The list of secrets that are included in an action or a version of an action.
	Secrets []*ActionSecretResponse       `json:"secrets,omitempty" url:"secrets,omitempty"`
	Status  *ActionVersionBuildStatusEnum `json:"status,omitempty" url:"status,omitempty"`
	// The index of this version in list of versions for the action.
	Number *float64 `json:"number,omitempty" url:"number,omitempty"`
	// Any errors that occurred while the version was being built.
	Errors []*ActionError `json:"errors,omitempty" url:"errors,omitempty"`
	Action *ActionBase    `json:"action,omitempty" url:"action,omitempty"`
	// The time when this version was built successfully.
	BuiltAt *time.Time `json:"built_at,omitempty" url:"built_at,omitempty"`
	// The time when this version was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The time when a version was updated. Versions are never updated externally. Only Auth0 will update an action version as it is being built.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,omitempty"`
	// The list of triggers that this version supports. At this time, a version can only target a single trigger at a time.
	SupportedTriggers []*ActionTrigger `json:"supported_triggers,omitempty" url:"supported_triggers,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 (a *ActionDeployedVersion) GetID() string {
	if a == nil || a.ID == nil {
		return ""
	}
	return *a.ID
}

func (a *ActionDeployedVersion) GetActionID() string {
	if a == nil || a.ActionID == nil {
		return ""
	}
	return *a.ActionID
}

func (a *ActionDeployedVersion) GetCode() string {
	if a == nil || a.Code == nil {
		return ""
	}
	return *a.Code
}

func (a *ActionDeployedVersion) GetDependencies() []*ActionVersionDependency {
	if a == nil || a.Dependencies == nil {
		return nil
	}
	return a.Dependencies
}

func (a *ActionDeployedVersion) GetDeployed() bool {
	if a == nil || a.Deployed == nil {
		return false
	}
	return *a.Deployed
}

func (a *ActionDeployedVersion) GetRuntime() string {
	if a == nil || a.Runtime == nil {
		return ""
	}
	return *a.Runtime
}

func (a *ActionDeployedVersion) GetSecrets() []*ActionSecretResponse {
	if a == nil || a.Secrets == nil {
		return nil
	}
	return a.Secrets
}

func (a *ActionDeployedVersion) GetStatus() ActionVersionBuildStatusEnum {
	if a == nil || a.Status == nil {
		return ""
	}
	return *a.Status
}

func (a *ActionDeployedVersion) GetNumber() float64 {
	if a == nil || a.Number == nil {
		return 0
	}
	return *a.Number
}

func (a *ActionDeployedVersion) GetErrors() []*ActionError {
	if a == nil || a.Errors == nil {
		return nil
	}
	return a.Errors
}

func (a *ActionDeployedVersion) GetAction() ActionBase {
	if a == nil || a.Action == nil {
		return ActionBase{}
	}
	return *a.Action
}

func (a *ActionDeployedVersion) GetBuiltAt() time.Time {
	if a == nil || a.BuiltAt == nil {
		return time.Time{}
	}
	return *a.BuiltAt
}

func (a *ActionDeployedVersion) GetCreatedAt() time.Time {
	if a == nil || a.CreatedAt == nil {
		return time.Time{}
	}
	return *a.CreatedAt
}

func (a *ActionDeployedVersion) GetUpdatedAt() time.Time {
	if a == nil || a.UpdatedAt == nil {
		return time.Time{}
	}
	return *a.UpdatedAt
}

func (a *ActionDeployedVersion) GetSupportedTriggers() []*ActionTrigger {
	if a == nil || a.SupportedTriggers == nil {
		return nil
	}
	return a.SupportedTriggers
}

func (a *ActionDeployedVersion) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

func (a *ActionDeployedVersion) require(field *big.Int) {
	if a.explicitFields == nil {
		a.explicitFields = big.NewInt(0)
	}
	a.explicitFields.Or(a.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 (a *ActionDeployedVersion) SetID(id *string) {
	a.ID = id
	a.require(actionDeployedVersionFieldID)
}

// SetActionID sets the ActionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionDeployedVersion) SetActionID(actionID *string) {
	a.ActionID = actionID
	a.require(actionDeployedVersionFieldActionID)
}

// SetCode sets the Code field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionDeployedVersion) SetCode(code *string) {
	a.Code = code
	a.require(actionDeployedVersionFieldCode)
}

// SetDependencies sets the Dependencies field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionDeployedVersion) SetDependencies(dependencies []*ActionVersionDependency) {
	a.Dependencies = dependencies
	a.require(actionDeployedVersionFieldDependencies)
}

// SetDeployed sets the Deployed field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionDeployedVersion) SetDeployed(deployed *bool) {
	a.Deployed = deployed
	a.require(actionDeployedVersionFieldDeployed)
}

// SetRuntime sets the Runtime field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionDeployedVersion) SetRuntime(runtime *string) {
	a.Runtime = runtime
	a.require(actionDeployedVersionFieldRuntime)
}

// SetSecrets sets the Secrets field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionDeployedVersion) SetSecrets(secrets []*ActionSecretResponse) {
	a.Secrets = secrets
	a.require(actionDeployedVersionFieldSecrets)
}

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionDeployedVersion) SetStatus(status *ActionVersionBuildStatusEnum) {
	a.Status = status
	a.require(actionDeployedVersionFieldStatus)
}

// SetNumber sets the Number field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionDeployedVersion) SetNumber(number *float64) {
	a.Number = number
	a.require(actionDeployedVersionFieldNumber)
}

// SetErrors sets the Errors field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionDeployedVersion) SetErrors(errors []*ActionError) {
	a.Errors = errors
	a.require(actionDeployedVersionFieldErrors)
}

// SetAction sets the Action field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionDeployedVersion) SetAction(action *ActionBase) {
	a.Action = action
	a.require(actionDeployedVersionFieldAction)
}

// SetBuiltAt sets the BuiltAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionDeployedVersion) SetBuiltAt(builtAt *time.Time) {
	a.BuiltAt = builtAt
	a.require(actionDeployedVersionFieldBuiltAt)
}

// 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 (a *ActionDeployedVersion) SetCreatedAt(createdAt *time.Time) {
	a.CreatedAt = createdAt
	a.require(actionDeployedVersionFieldCreatedAt)
}

// 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 (a *ActionDeployedVersion) SetUpdatedAt(updatedAt *time.Time) {
	a.UpdatedAt = updatedAt
	a.require(actionDeployedVersionFieldUpdatedAt)
}

// SetSupportedTriggers sets the SupportedTriggers field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionDeployedVersion) SetSupportedTriggers(supportedTriggers []*ActionTrigger) {
	a.SupportedTriggers = supportedTriggers
	a.require(actionDeployedVersionFieldSupportedTriggers)
}

func (a *ActionDeployedVersion) UnmarshalJSON(data []byte) error {
	type embed ActionDeployedVersion
	var unmarshaler = struct {
		embed
		BuiltAt   *internal.DateTime `json:"built_at,omitempty"`
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*a),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*a = ActionDeployedVersion(unmarshaler.embed)
	a.BuiltAt = unmarshaler.BuiltAt.TimePtr()
	a.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	a.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *a)
	if err != nil {
		return err
	}
	a.extraProperties = extraProperties
	a.rawJSON = json.RawMessage(data)
	return nil
}

func (a *ActionDeployedVersion) MarshalJSON() ([]byte, error) {
	type embed ActionDeployedVersion
	var marshaler = struct {
		embed
		BuiltAt   *internal.DateTime `json:"built_at,omitempty"`
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*a),
		BuiltAt:   internal.NewOptionalDateTime(a.BuiltAt),
		CreatedAt: internal.NewOptionalDateTime(a.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(a.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, a.explicitFields)
	return json.Marshal(explicitMarshaler)
}

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

// Error is a generic error with a human readable id which should be easily referenced in support tickets.
var (
	actionErrorFieldID  = big.NewInt(1 << 0)
	actionErrorFieldMsg = big.NewInt(1 << 1)
	actionErrorFieldURL = big.NewInt(1 << 2)
)

type ActionError struct {
	ID  *string `json:"id,omitempty" url:"id,omitempty"`
	Msg *string `json:"msg,omitempty" url:"msg,omitempty"`
	URL *string `json:"url,omitempty" url:"url,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 (a *ActionError) GetID() string {
	if a == nil || a.ID == nil {
		return ""
	}
	return *a.ID
}

func (a *ActionError) GetMsg() string {
	if a == nil || a.Msg == nil {
		return ""
	}
	return *a.Msg
}

func (a *ActionError) GetURL() string {
	if a == nil || a.URL == nil {
		return ""
	}
	return *a.URL
}

func (a *ActionError) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

func (a *ActionError) require(field *big.Int) {
	if a.explicitFields == nil {
		a.explicitFields = big.NewInt(0)
	}
	a.explicitFields.Or(a.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 (a *ActionError) SetID(id *string) {
	a.ID = id
	a.require(actionErrorFieldID)
}

// SetMsg sets the Msg field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionError) SetMsg(msg *string) {
	a.Msg = msg
	a.require(actionErrorFieldMsg)
}

// SetURL sets the URL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionError) SetURL(url *string) {
	a.URL = url
	a.require(actionErrorFieldURL)
}

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

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

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

// Captures the results of a single action being executed.
var (
	actionExecutionResultFieldActionName = big.NewInt(1 << 0)
	actionExecutionResultFieldError      = big.NewInt(1 << 1)
	actionExecutionResultFieldStartedAt  = big.NewInt(1 << 2)
	actionExecutionResultFieldEndedAt    = big.NewInt(1 << 3)
)

type ActionExecutionResult struct {
	// The name of the action that was executed.
	ActionName *string      `json:"action_name,omitempty" url:"action_name,omitempty"`
	Error      *ActionError `json:"error,omitempty" url:"error,omitempty"`
	// The time when the action was started.
	StartedAt *time.Time `json:"started_at,omitempty" url:"started_at,omitempty"`
	// The time when the action finished executing.
	EndedAt *time.Time `json:"ended_at,omitempty" url:"ended_at,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 (a *ActionExecutionResult) GetActionName() string {
	if a == nil || a.ActionName == nil {
		return ""
	}
	return *a.ActionName
}

func (a *ActionExecutionResult) GetError() ActionError {
	if a == nil || a.Error == nil {
		return ActionError{}
	}
	return *a.Error
}

func (a *ActionExecutionResult) GetStartedAt() time.Time {
	if a == nil || a.StartedAt == nil {
		return time.Time{}
	}
	return *a.StartedAt
}

func (a *ActionExecutionResult) GetEndedAt() time.Time {
	if a == nil || a.EndedAt == nil {
		return time.Time{}
	}
	return *a.EndedAt
}

func (a *ActionExecutionResult) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

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

// SetActionName sets the ActionName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionExecutionResult) SetActionName(actionName *string) {
	a.ActionName = actionName
	a.require(actionExecutionResultFieldActionName)
}

// SetError sets the Error field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionExecutionResult) SetError(error_ *ActionError) {
	a.Error = error_
	a.require(actionExecutionResultFieldError)
}

// SetStartedAt sets the StartedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionExecutionResult) SetStartedAt(startedAt *time.Time) {
	a.StartedAt = startedAt
	a.require(actionExecutionResultFieldStartedAt)
}

// SetEndedAt sets the EndedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionExecutionResult) SetEndedAt(endedAt *time.Time) {
	a.EndedAt = endedAt
	a.require(actionExecutionResultFieldEndedAt)
}

func (a *ActionExecutionResult) UnmarshalJSON(data []byte) error {
	type embed ActionExecutionResult
	var unmarshaler = struct {
		embed
		StartedAt *internal.DateTime `json:"started_at,omitempty"`
		EndedAt   *internal.DateTime `json:"ended_at,omitempty"`
	}{
		embed: embed(*a),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*a = ActionExecutionResult(unmarshaler.embed)
	a.StartedAt = unmarshaler.StartedAt.TimePtr()
	a.EndedAt = unmarshaler.EndedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *a)
	if err != nil {
		return err
	}
	a.extraProperties = extraProperties
	a.rawJSON = json.RawMessage(data)
	return nil
}

func (a *ActionExecutionResult) MarshalJSON() ([]byte, error) {
	type embed ActionExecutionResult
	var marshaler = struct {
		embed
		StartedAt *internal.DateTime `json:"started_at,omitempty"`
		EndedAt   *internal.DateTime `json:"ended_at,omitempty"`
	}{
		embed:     embed(*a),
		StartedAt: internal.NewOptionalDateTime(a.StartedAt),
		EndedAt:   internal.NewOptionalDateTime(a.EndedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, a.explicitFields)
	return json.Marshal(explicitMarshaler)
}

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

// The overall status of an execution.
type ActionExecutionStatusEnum string

const (
	ActionExecutionStatusEnumUnspecified ActionExecutionStatusEnum = "unspecified"
	ActionExecutionStatusEnumPending     ActionExecutionStatusEnum = "pending"
	ActionExecutionStatusEnumFinal       ActionExecutionStatusEnum = "final"
	ActionExecutionStatusEnumPartial     ActionExecutionStatusEnum = "partial"
	ActionExecutionStatusEnumCanceled    ActionExecutionStatusEnum = "canceled"
	ActionExecutionStatusEnumSuspended   ActionExecutionStatusEnum = "suspended"
)

func NewActionExecutionStatusEnumFromString(s string) (ActionExecutionStatusEnum, error) {
	switch s {
	case "unspecified":
		return ActionExecutionStatusEnumUnspecified, nil
	case "pending":
		return ActionExecutionStatusEnumPending, nil
	case "final":
		return ActionExecutionStatusEnumFinal, nil
	case "partial":
		return ActionExecutionStatusEnumPartial, nil
	case "canceled":
		return ActionExecutionStatusEnumCanceled, nil
	case "suspended":
		return ActionExecutionStatusEnumSuspended, nil
	}
	var t ActionExecutionStatusEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (a ActionExecutionStatusEnum) Ptr() *ActionExecutionStatusEnum {
	return &a
}

var (
	actionSecretRequestFieldName  = big.NewInt(1 << 0)
	actionSecretRequestFieldValue = big.NewInt(1 << 1)
)

type ActionSecretRequest struct {
	// The name of the particular secret, e.g. API_KEY.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// The value of the particular secret, e.g. secret123. A secret's value can only be set upon creation. A secret's value will never be returned by the API.
	Value *string `json:"value,omitempty" url:"value,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (a *ActionSecretRequest) GetName() string {
	if a == nil || a.Name == nil {
		return ""
	}
	return *a.Name
}

func (a *ActionSecretRequest) GetValue() string {
	if a == nil || a.Value == nil {
		return ""
	}
	return *a.Value
}

func (a *ActionSecretRequest) GetExtraProperties() map[string]interface{} {
	return a.ExtraProperties
}

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

// 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 (a *ActionSecretRequest) SetName(name *string) {
	a.Name = name
	a.require(actionSecretRequestFieldName)
}

// 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 (a *ActionSecretRequest) SetValue(value *string) {
	a.Value = value
	a.require(actionSecretRequestFieldValue)
}

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

func (a *ActionSecretRequest) MarshalJSON() ([]byte, error) {
	type embed ActionSecretRequest
	var marshaler = struct {
		embed
	}{
		embed: embed(*a),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, a.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, a.ExtraProperties)
}

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

var (
	actionSecretResponseFieldName      = big.NewInt(1 << 0)
	actionSecretResponseFieldUpdatedAt = big.NewInt(1 << 1)
)

type ActionSecretResponse struct {
	// The name of the particular secret, e.g. API_KEY.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// The time when the secret was last updated.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (a *ActionSecretResponse) GetName() string {
	if a == nil || a.Name == nil {
		return ""
	}
	return *a.Name
}

func (a *ActionSecretResponse) GetUpdatedAt() time.Time {
	if a == nil || a.UpdatedAt == nil {
		return time.Time{}
	}
	return *a.UpdatedAt
}

func (a *ActionSecretResponse) GetExtraProperties() map[string]interface{} {
	return a.ExtraProperties
}

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

// 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 (a *ActionSecretResponse) SetName(name *string) {
	a.Name = name
	a.require(actionSecretResponseFieldName)
}

// 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 (a *ActionSecretResponse) SetUpdatedAt(updatedAt *time.Time) {
	a.UpdatedAt = updatedAt
	a.require(actionSecretResponseFieldUpdatedAt)
}

func (a *ActionSecretResponse) UnmarshalJSON(data []byte) error {
	type embed ActionSecretResponse
	var unmarshaler = struct {
		embed
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*a),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*a = ActionSecretResponse(unmarshaler.embed)
	a.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *a)
	if err != nil {
		return err
	}
	a.ExtraProperties = extraProperties
	a.rawJSON = json.RawMessage(data)
	return nil
}

func (a *ActionSecretResponse) MarshalJSON() ([]byte, error) {
	type embed ActionSecretResponse
	var marshaler = struct {
		embed
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*a),
		UpdatedAt: internal.NewOptionalDateTime(a.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, a.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, a.ExtraProperties)
}

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

var (
	actionTriggerFieldID                 = big.NewInt(1 << 0)
	actionTriggerFieldVersion            = big.NewInt(1 << 1)
	actionTriggerFieldStatus             = big.NewInt(1 << 2)
	actionTriggerFieldRuntimes           = big.NewInt(1 << 3)
	actionTriggerFieldDefaultRuntime     = big.NewInt(1 << 4)
	actionTriggerFieldCompatibleTriggers = big.NewInt(1 << 5)
	actionTriggerFieldBindingPolicy      = big.NewInt(1 << 6)
)

type ActionTrigger struct {
	ID ActionTriggerTypeEnum `json:"id" url:"id"`
	// The version of a trigger. v1, v2, etc.
	Version *string `json:"version,omitempty" url:"version,omitempty"`
	// status points to the trigger status.
	Status *string `json:"status,omitempty" url:"status,omitempty"`
	// runtimes supported by this trigger.
	Runtimes []string `json:"runtimes,omitempty" url:"runtimes,omitempty"`
	// Runtime that will be used when none is specified when creating an action.
	DefaultRuntime *string `json:"default_runtime,omitempty" url:"default_runtime,omitempty"`
	// compatible_triggers informs which other trigger supports the same event and api.
	CompatibleTriggers []*ActionTriggerCompatibleTrigger `json:"compatible_triggers,omitempty" url:"compatible_triggers,omitempty"`
	BindingPolicy      *ActionBindingTypeEnum            `json:"binding_policy,omitempty" url:"binding_policy,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 (a *ActionTrigger) GetID() ActionTriggerTypeEnum {
	if a == nil {
		return ""
	}
	return a.ID
}

func (a *ActionTrigger) GetVersion() string {
	if a == nil || a.Version == nil {
		return ""
	}
	return *a.Version
}

func (a *ActionTrigger) GetStatus() string {
	if a == nil || a.Status == nil {
		return ""
	}
	return *a.Status
}

func (a *ActionTrigger) GetRuntimes() []string {
	if a == nil || a.Runtimes == nil {
		return nil
	}
	return a.Runtimes
}

func (a *ActionTrigger) GetDefaultRuntime() string {
	if a == nil || a.DefaultRuntime == nil {
		return ""
	}
	return *a.DefaultRuntime
}

func (a *ActionTrigger) GetCompatibleTriggers() []*ActionTriggerCompatibleTrigger {
	if a == nil || a.CompatibleTriggers == nil {
		return nil
	}
	return a.CompatibleTriggers
}

func (a *ActionTrigger) GetBindingPolicy() ActionBindingTypeEnum {
	if a == nil || a.BindingPolicy == nil {
		return ""
	}
	return *a.BindingPolicy
}

func (a *ActionTrigger) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

func (a *ActionTrigger) require(field *big.Int) {
	if a.explicitFields == nil {
		a.explicitFields = big.NewInt(0)
	}
	a.explicitFields.Or(a.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 (a *ActionTrigger) SetID(id ActionTriggerTypeEnum) {
	a.ID = id
	a.require(actionTriggerFieldID)
}

// SetVersion sets the Version field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionTrigger) SetVersion(version *string) {
	a.Version = version
	a.require(actionTriggerFieldVersion)
}

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionTrigger) SetStatus(status *string) {
	a.Status = status
	a.require(actionTriggerFieldStatus)
}

// SetRuntimes sets the Runtimes field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionTrigger) SetRuntimes(runtimes []string) {
	a.Runtimes = runtimes
	a.require(actionTriggerFieldRuntimes)
}

// SetDefaultRuntime sets the DefaultRuntime field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionTrigger) SetDefaultRuntime(defaultRuntime *string) {
	a.DefaultRuntime = defaultRuntime
	a.require(actionTriggerFieldDefaultRuntime)
}

// SetCompatibleTriggers sets the CompatibleTriggers field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionTrigger) SetCompatibleTriggers(compatibleTriggers []*ActionTriggerCompatibleTrigger) {
	a.CompatibleTriggers = compatibleTriggers
	a.require(actionTriggerFieldCompatibleTriggers)
}

// SetBindingPolicy sets the BindingPolicy field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionTrigger) SetBindingPolicy(bindingPolicy *ActionBindingTypeEnum) {
	a.BindingPolicy = bindingPolicy
	a.require(actionTriggerFieldBindingPolicy)
}

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

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

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

var (
	actionTriggerCompatibleTriggerFieldID      = big.NewInt(1 << 0)
	actionTriggerCompatibleTriggerFieldVersion = big.NewInt(1 << 1)
)

type ActionTriggerCompatibleTrigger struct {
	ID ActionTriggerTypeEnum `json:"id" url:"id"`
	// The version of a trigger. v1, v2, etc.
	Version string `json:"version" url:"version"`

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

	ExtraProperties map[string]interface{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (a *ActionTriggerCompatibleTrigger) GetID() ActionTriggerTypeEnum {
	if a == nil {
		return ""
	}
	return a.ID
}

func (a *ActionTriggerCompatibleTrigger) GetVersion() string {
	if a == nil {
		return ""
	}
	return a.Version
}

func (a *ActionTriggerCompatibleTrigger) GetExtraProperties() map[string]interface{} {
	return a.ExtraProperties
}

func (a *ActionTriggerCompatibleTrigger) require(field *big.Int) {
	if a.explicitFields == nil {
		a.explicitFields = big.NewInt(0)
	}
	a.explicitFields.Or(a.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 (a *ActionTriggerCompatibleTrigger) SetID(id ActionTriggerTypeEnum) {
	a.ID = id
	a.require(actionTriggerCompatibleTriggerFieldID)
}

// SetVersion sets the Version field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionTriggerCompatibleTrigger) SetVersion(version string) {
	a.Version = version
	a.require(actionTriggerCompatibleTriggerFieldVersion)
}

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

func (a *ActionTriggerCompatibleTrigger) MarshalJSON() ([]byte, error) {
	type embed ActionTriggerCompatibleTrigger
	var marshaler = struct {
		embed
	}{
		embed: embed(*a),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, a.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, a.ExtraProperties)
}

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

// An actions extensibility point.
type ActionTriggerTypeEnum = string

var (
	actionVersionFieldID                = big.NewInt(1 << 0)
	actionVersionFieldActionID          = big.NewInt(1 << 1)
	actionVersionFieldCode              = big.NewInt(1 << 2)
	actionVersionFieldDependencies      = big.NewInt(1 << 3)
	actionVersionFieldDeployed          = big.NewInt(1 << 4)
	actionVersionFieldRuntime           = big.NewInt(1 << 5)
	actionVersionFieldSecrets           = big.NewInt(1 << 6)
	actionVersionFieldStatus            = big.NewInt(1 << 7)
	actionVersionFieldNumber            = big.NewInt(1 << 8)
	actionVersionFieldErrors            = big.NewInt(1 << 9)
	actionVersionFieldAction            = big.NewInt(1 << 10)
	actionVersionFieldBuiltAt           = big.NewInt(1 << 11)
	actionVersionFieldCreatedAt         = big.NewInt(1 << 12)
	actionVersionFieldUpdatedAt         = big.NewInt(1 << 13)
	actionVersionFieldSupportedTriggers = big.NewInt(1 << 14)
)

type ActionVersion struct {
	// The unique id of an action version.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The id of the action to which this version belongs.
	ActionID *string `json:"action_id,omitempty" url:"action_id,omitempty"`
	// The source code of this specific version of the action.
	Code *string `json:"code,omitempty" url:"code,omitempty"`
	// The list of third party npm modules, and their versions, that this specific version depends on.
	Dependencies []*ActionVersionDependency `json:"dependencies,omitempty" url:"dependencies,omitempty"`
	// Indicates if this specific version is the currently one deployed.
	Deployed *bool `json:"deployed,omitempty" url:"deployed,omitempty"`
	// The Node runtime. For example: `node22`
	Runtime *string `json:"runtime,omitempty" url:"runtime,omitempty"`
	// The list of secrets that are included in an action or a version of an action.
	Secrets []*ActionSecretResponse       `json:"secrets,omitempty" url:"secrets,omitempty"`
	Status  *ActionVersionBuildStatusEnum `json:"status,omitempty" url:"status,omitempty"`
	// The index of this version in list of versions for the action.
	Number *float64 `json:"number,omitempty" url:"number,omitempty"`
	// Any errors that occurred while the version was being built.
	Errors []*ActionError `json:"errors,omitempty" url:"errors,omitempty"`
	Action *ActionBase    `json:"action,omitempty" url:"action,omitempty"`
	// The time when this version was built successfully.
	BuiltAt *time.Time `json:"built_at,omitempty" url:"built_at,omitempty"`
	// The time when this version was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The time when a version was updated. Versions are never updated externally. Only Auth0 will update an action version as it is being built.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,omitempty"`
	// The list of triggers that this version supports. At this time, a version can only target a single trigger at a time.
	SupportedTriggers []*ActionTrigger `json:"supported_triggers,omitempty" url:"supported_triggers,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 (a *ActionVersion) GetID() string {
	if a == nil || a.ID == nil {
		return ""
	}
	return *a.ID
}

func (a *ActionVersion) GetActionID() string {
	if a == nil || a.ActionID == nil {
		return ""
	}
	return *a.ActionID
}

func (a *ActionVersion) GetCode() string {
	if a == nil || a.Code == nil {
		return ""
	}
	return *a.Code
}

func (a *ActionVersion) GetDependencies() []*ActionVersionDependency {
	if a == nil || a.Dependencies == nil {
		return nil
	}
	return a.Dependencies
}

func (a *ActionVersion) GetDeployed() bool {
	if a == nil || a.Deployed == nil {
		return false
	}
	return *a.Deployed
}

func (a *ActionVersion) GetRuntime() string {
	if a == nil || a.Runtime == nil {
		return ""
	}
	return *a.Runtime
}

func (a *ActionVersion) GetSecrets() []*ActionSecretResponse {
	if a == nil || a.Secrets == nil {
		return nil
	}
	return a.Secrets
}

func (a *ActionVersion) GetStatus() ActionVersionBuildStatusEnum {
	if a == nil || a.Status == nil {
		return ""
	}
	return *a.Status
}

func (a *ActionVersion) GetNumber() float64 {
	if a == nil || a.Number == nil {
		return 0
	}
	return *a.Number
}

func (a *ActionVersion) GetErrors() []*ActionError {
	if a == nil || a.Errors == nil {
		return nil
	}
	return a.Errors
}

func (a *ActionVersion) GetAction() ActionBase {
	if a == nil || a.Action == nil {
		return ActionBase{}
	}
	return *a.Action
}

func (a *ActionVersion) GetBuiltAt() time.Time {
	if a == nil || a.BuiltAt == nil {
		return time.Time{}
	}
	return *a.BuiltAt
}

func (a *ActionVersion) GetCreatedAt() time.Time {
	if a == nil || a.CreatedAt == nil {
		return time.Time{}
	}
	return *a.CreatedAt
}

func (a *ActionVersion) GetUpdatedAt() time.Time {
	if a == nil || a.UpdatedAt == nil {
		return time.Time{}
	}
	return *a.UpdatedAt
}

func (a *ActionVersion) GetSupportedTriggers() []*ActionTrigger {
	if a == nil || a.SupportedTriggers == nil {
		return nil
	}
	return a.SupportedTriggers
}

func (a *ActionVersion) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

func (a *ActionVersion) require(field *big.Int) {
	if a.explicitFields == nil {
		a.explicitFields = big.NewInt(0)
	}
	a.explicitFields.Or(a.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 (a *ActionVersion) SetID(id *string) {
	a.ID = id
	a.require(actionVersionFieldID)
}

// SetActionID sets the ActionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionVersion) SetActionID(actionID *string) {
	a.ActionID = actionID
	a.require(actionVersionFieldActionID)
}

// SetCode sets the Code field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionVersion) SetCode(code *string) {
	a.Code = code
	a.require(actionVersionFieldCode)
}

// SetDependencies sets the Dependencies field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionVersion) SetDependencies(dependencies []*ActionVersionDependency) {
	a.Dependencies = dependencies
	a.require(actionVersionFieldDependencies)
}

// SetDeployed sets the Deployed field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionVersion) SetDeployed(deployed *bool) {
	a.Deployed = deployed
	a.require(actionVersionFieldDeployed)
}

// SetRuntime sets the Runtime field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionVersion) SetRuntime(runtime *string) {
	a.Runtime = runtime
	a.require(actionVersionFieldRuntime)
}

// SetSecrets sets the Secrets field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionVersion) SetSecrets(secrets []*ActionSecretResponse) {
	a.Secrets = secrets
	a.require(actionVersionFieldSecrets)
}

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionVersion) SetStatus(status *ActionVersionBuildStatusEnum) {
	a.Status = status
	a.require(actionVersionFieldStatus)
}

// SetNumber sets the Number field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionVersion) SetNumber(number *float64) {
	a.Number = number
	a.require(actionVersionFieldNumber)
}

// SetErrors sets the Errors field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionVersion) SetErrors(errors []*ActionError) {
	a.Errors = errors
	a.require(actionVersionFieldErrors)
}

// SetAction sets the Action field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionVersion) SetAction(action *ActionBase) {
	a.Action = action
	a.require(actionVersionFieldAction)
}

// SetBuiltAt sets the BuiltAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionVersion) SetBuiltAt(builtAt *time.Time) {
	a.BuiltAt = builtAt
	a.require(actionVersionFieldBuiltAt)
}

// 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 (a *ActionVersion) SetCreatedAt(createdAt *time.Time) {
	a.CreatedAt = createdAt
	a.require(actionVersionFieldCreatedAt)
}

// 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 (a *ActionVersion) SetUpdatedAt(updatedAt *time.Time) {
	a.UpdatedAt = updatedAt
	a.require(actionVersionFieldUpdatedAt)
}

// SetSupportedTriggers sets the SupportedTriggers field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionVersion) SetSupportedTriggers(supportedTriggers []*ActionTrigger) {
	a.SupportedTriggers = supportedTriggers
	a.require(actionVersionFieldSupportedTriggers)
}

func (a *ActionVersion) UnmarshalJSON(data []byte) error {
	type embed ActionVersion
	var unmarshaler = struct {
		embed
		BuiltAt   *internal.DateTime `json:"built_at,omitempty"`
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*a),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*a = ActionVersion(unmarshaler.embed)
	a.BuiltAt = unmarshaler.BuiltAt.TimePtr()
	a.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	a.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *a)
	if err != nil {
		return err
	}
	a.extraProperties = extraProperties
	a.rawJSON = json.RawMessage(data)
	return nil
}

func (a *ActionVersion) MarshalJSON() ([]byte, error) {
	type embed ActionVersion
	var marshaler = struct {
		embed
		BuiltAt   *internal.DateTime `json:"built_at,omitempty"`
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*a),
		BuiltAt:   internal.NewOptionalDateTime(a.BuiltAt),
		CreatedAt: internal.NewOptionalDateTime(a.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(a.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, a.explicitFields)
	return json.Marshal(explicitMarshaler)
}

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

// The build status of this specific version.
type ActionVersionBuildStatusEnum string

const (
	ActionVersionBuildStatusEnumPending  ActionVersionBuildStatusEnum = "pending"
	ActionVersionBuildStatusEnumBuilding ActionVersionBuildStatusEnum = "building"
	ActionVersionBuildStatusEnumPackaged ActionVersionBuildStatusEnum = "packaged"
	ActionVersionBuildStatusEnumBuilt    ActionVersionBuildStatusEnum = "built"
	ActionVersionBuildStatusEnumRetrying ActionVersionBuildStatusEnum = "retrying"
	ActionVersionBuildStatusEnumFailed   ActionVersionBuildStatusEnum = "failed"
)

func NewActionVersionBuildStatusEnumFromString(s string) (ActionVersionBuildStatusEnum, error) {
	switch s {
	case "pending":
		return ActionVersionBuildStatusEnumPending, nil
	case "building":
		return ActionVersionBuildStatusEnumBuilding, nil
	case "packaged":
		return ActionVersionBuildStatusEnumPackaged, nil
	case "built":
		return ActionVersionBuildStatusEnumBuilt, nil
	case "retrying":
		return ActionVersionBuildStatusEnumRetrying, nil
	case "failed":
		return ActionVersionBuildStatusEnumFailed, nil
	}
	var t ActionVersionBuildStatusEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (a ActionVersionBuildStatusEnum) Ptr() *ActionVersionBuildStatusEnum {
	return &a
}

// Dependency is an npm module. These values are used to produce an immutable artifact, which manifests as a layer_id.
var (
	actionVersionDependencyFieldName        = big.NewInt(1 << 0)
	actionVersionDependencyFieldVersion     = big.NewInt(1 << 1)
	actionVersionDependencyFieldRegistryURL = big.NewInt(1 << 2)
)

type ActionVersionDependency struct {
	// name is the name of the npm module, e.g. lodash
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// description is the version of the npm module, e.g. 4.17.1
	Version *string `json:"version,omitempty" url:"version,omitempty"`
	// registry_url is an optional value used primarily for private npm registries.
	RegistryURL *string `json:"registry_url,omitempty" url:"registry_url,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 (a *ActionVersionDependency) GetName() string {
	if a == nil || a.Name == nil {
		return ""
	}
	return *a.Name
}

func (a *ActionVersionDependency) GetVersion() string {
	if a == nil || a.Version == nil {
		return ""
	}
	return *a.Version
}

func (a *ActionVersionDependency) GetRegistryURL() string {
	if a == nil || a.RegistryURL == nil {
		return ""
	}
	return *a.RegistryURL
}

func (a *ActionVersionDependency) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

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

// 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 (a *ActionVersionDependency) SetName(name *string) {
	a.Name = name
	a.require(actionVersionDependencyFieldName)
}

// SetVersion sets the Version field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionVersionDependency) SetVersion(version *string) {
	a.Version = version
	a.require(actionVersionDependencyFieldVersion)
}

// SetRegistryURL sets the RegistryURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *ActionVersionDependency) SetRegistryURL(registryURL *string) {
	a.RegistryURL = registryURL
	a.require(actionVersionDependencyFieldRegistryURL)
}

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

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

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

// Client array filter items
type AculClientFilter struct {
	AculClientFilterByID       *AculClientFilterByID
	AculClientFilterByMetadata *AculClientFilterByMetadata

	typ string
}

func (a *AculClientFilter) GetAculClientFilterByID() *AculClientFilterByID {
	if a == nil {
		return nil
	}
	return a.AculClientFilterByID
}

func (a *AculClientFilter) GetAculClientFilterByMetadata() *AculClientFilterByMetadata {
	if a == nil {
		return nil
	}
	return a.AculClientFilterByMetadata
}

func (a *AculClientFilter) UnmarshalJSON(data []byte) error {
	valueAculClientFilterByID := new(AculClientFilterByID)
	if err := json.Unmarshal(data, &valueAculClientFilterByID); err == nil {
		a.typ = "AculClientFilterByID"
		a.AculClientFilterByID = valueAculClientFilterByID
		return nil
	}
	valueAculClientFilterByMetadata := new(AculClientFilterByMetadata)
	if err := json.Unmarshal(data, &valueAculClientFilterByMetadata); err == nil {
		a.typ = "AculClientFilterByMetadata"
		a.AculClientFilterByMetadata = valueAculClientFilterByMetadata
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, a)
}

func (a AculClientFilter) MarshalJSON() ([]byte, error) {
	if a.typ == "AculClientFilterByID" || a.AculClientFilterByID != nil {
		return json.Marshal(a.AculClientFilterByID)
	}
	if a.typ == "AculClientFilterByMetadata" || a.AculClientFilterByMetadata != nil {
		return json.Marshal(a.AculClientFilterByMetadata)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", a)
}

type AculClientFilterVisitor interface {
	VisitAculClientFilterByID(*AculClientFilterByID) error
	VisitAculClientFilterByMetadata(*AculClientFilterByMetadata) error
}

func (a *AculClientFilter) Accept(visitor AculClientFilterVisitor) error {
	if a.typ == "AculClientFilterByID" || a.AculClientFilterByID != nil {
		return visitor.VisitAculClientFilterByID(a.AculClientFilterByID)
	}
	if a.typ == "AculClientFilterByMetadata" || a.AculClientFilterByMetadata != nil {
		return visitor.VisitAculClientFilterByMetadata(a.AculClientFilterByMetadata)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", a)
}

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

type AculClientFilterByID struct {
	// Client ID
	ID string `json:"id" url:"id"`

	// 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 (a *AculClientFilterByID) GetID() string {
	if a == nil {
		return ""
	}
	return a.ID
}

func (a *AculClientFilterByID) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

func (a *AculClientFilterByID) require(field *big.Int) {
	if a.explicitFields == nil {
		a.explicitFields = big.NewInt(0)
	}
	a.explicitFields.Or(a.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 (a *AculClientFilterByID) SetID(id string) {
	a.ID = id
	a.require(aculClientFilterByIDFieldID)
}

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

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

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

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

type AculClientFilterByMetadata struct {
	Metadata AculClientMetadata `json:"metadata" url:"metadata"`

	// 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 (a *AculClientFilterByMetadata) GetMetadata() AculClientMetadata {
	if a == nil {
		return nil
	}
	return a.Metadata
}

func (a *AculClientFilterByMetadata) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

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

// 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 (a *AculClientFilterByMetadata) SetMetadata(metadata AculClientMetadata) {
	a.Metadata = metadata
	a.require(aculClientFilterByMetadataFieldMetadata)
}

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

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

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

// Client metadata key/value pairs
type AculClientMetadata = map[string]interface{}

// Domains array filter items
type AculDomainFilter struct {
	AculDomainFilterByID       *AculDomainFilterByID
	AculDomainFilterByMetadata *AculDomainFilterByMetadata

	typ string
}

func (a *AculDomainFilter) GetAculDomainFilterByID() *AculDomainFilterByID {
	if a == nil {
		return nil
	}
	return a.AculDomainFilterByID
}

func (a *AculDomainFilter) GetAculDomainFilterByMetadata() *AculDomainFilterByMetadata {
	if a == nil {
		return nil
	}
	return a.AculDomainFilterByMetadata
}

func (a *AculDomainFilter) UnmarshalJSON(data []byte) error {
	valueAculDomainFilterByID := new(AculDomainFilterByID)
	if err := json.Unmarshal(data, &valueAculDomainFilterByID); err == nil {
		a.typ = "AculDomainFilterByID"
		a.AculDomainFilterByID = valueAculDomainFilterByID
		return nil
	}
	valueAculDomainFilterByMetadata := new(AculDomainFilterByMetadata)
	if err := json.Unmarshal(data, &valueAculDomainFilterByMetadata); err == nil {
		a.typ = "AculDomainFilterByMetadata"
		a.AculDomainFilterByMetadata = valueAculDomainFilterByMetadata
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, a)
}

func (a AculDomainFilter) MarshalJSON() ([]byte, error) {
	if a.typ == "AculDomainFilterByID" || a.AculDomainFilterByID != nil {
		return json.Marshal(a.AculDomainFilterByID)
	}
	if a.typ == "AculDomainFilterByMetadata" || a.AculDomainFilterByMetadata != nil {
		return json.Marshal(a.AculDomainFilterByMetadata)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", a)
}

type AculDomainFilterVisitor interface {
	VisitAculDomainFilterByID(*AculDomainFilterByID) error
	VisitAculDomainFilterByMetadata(*AculDomainFilterByMetadata) error
}

func (a *AculDomainFilter) Accept(visitor AculDomainFilterVisitor) error {
	if a.typ == "AculDomainFilterByID" || a.AculDomainFilterByID != nil {
		return visitor.VisitAculDomainFilterByID(a.AculDomainFilterByID)
	}
	if a.typ == "AculDomainFilterByMetadata" || a.AculDomainFilterByMetadata != nil {
		return visitor.VisitAculDomainFilterByMetadata(a.AculDomainFilterByMetadata)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", a)
}

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

type AculDomainFilterByID struct {
	// Domain ID
	ID string `json:"id" url:"id"`

	// 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 (a *AculDomainFilterByID) GetID() string {
	if a == nil {
		return ""
	}
	return a.ID
}

func (a *AculDomainFilterByID) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

func (a *AculDomainFilterByID) require(field *big.Int) {
	if a.explicitFields == nil {
		a.explicitFields = big.NewInt(0)
	}
	a.explicitFields.Or(a.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 (a *AculDomainFilterByID) SetID(id string) {
	a.ID = id
	a.require(aculDomainFilterByIDFieldID)
}

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

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

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

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

type AculDomainFilterByMetadata struct {
	Metadata AculDomainMetadata `json:"metadata" url:"metadata"`

	// 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 (a *AculDomainFilterByMetadata) GetMetadata() AculDomainMetadata {
	if a == nil {
		return nil
	}
	return a.Metadata
}

func (a *AculDomainFilterByMetadata) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

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

// 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 (a *AculDomainFilterByMetadata) SetMetadata(metadata AculDomainMetadata) {
	a.Metadata = metadata
	a.require(aculDomainFilterByMetadataFieldMetadata)
}

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

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

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

// Domain metadata key/value pairs
type AculDomainMetadata = map[string]interface{}

// Optional filters to apply rendering rules to specific entities
var (
	aculFiltersFieldMatchType     = big.NewInt(1 << 0)
	aculFiltersFieldClients       = big.NewInt(1 << 1)
	aculFiltersFieldOrganizations = big.NewInt(1 << 2)
	aculFiltersFieldDomains       = big.NewInt(1 << 3)
)

type AculFilters struct {
	MatchType *AculMatchTypeEnum `json:"match_type,omitempty" url:"match_type,omitempty"`
	// Clients filter
	Clients []*AculClientFilter `json:"clients,omitempty" url:"clients,omitempty"`
	// Organizations filter
	Organizations []*AculOrganizationFilter `json:"organizations,omitempty" url:"organizations,omitempty"`
	// Domains filter
	Domains []*AculDomainFilter `json:"domains,omitempty" url:"domains,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 (a *AculFilters) GetMatchType() AculMatchTypeEnum {
	if a == nil || a.MatchType == nil {
		return ""
	}
	return *a.MatchType
}

func (a *AculFilters) GetClients() []*AculClientFilter {
	if a == nil || a.Clients == nil {
		return nil
	}
	return a.Clients
}

func (a *AculFilters) GetOrganizations() []*AculOrganizationFilter {
	if a == nil || a.Organizations == nil {
		return nil
	}
	return a.Organizations
}

func (a *AculFilters) GetDomains() []*AculDomainFilter {
	if a == nil || a.Domains == nil {
		return nil
	}
	return a.Domains
}

func (a *AculFilters) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

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

// SetMatchType sets the MatchType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AculFilters) SetMatchType(matchType *AculMatchTypeEnum) {
	a.MatchType = matchType
	a.require(aculFiltersFieldMatchType)
}

// SetClients sets the Clients field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AculFilters) SetClients(clients []*AculClientFilter) {
	a.Clients = clients
	a.require(aculFiltersFieldClients)
}

// SetOrganizations sets the Organizations field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AculFilters) SetOrganizations(organizations []*AculOrganizationFilter) {
	a.Organizations = organizations
	a.require(aculFiltersFieldOrganizations)
}

// SetDomains sets the Domains field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AculFilters) SetDomains(domains []*AculDomainFilter) {
	a.Domains = domains
	a.require(aculFiltersFieldDomains)
}

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

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

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

var (
	aculHeadTagFieldTag        = big.NewInt(1 << 0)
	aculHeadTagFieldAttributes = big.NewInt(1 << 1)
	aculHeadTagFieldContent    = big.NewInt(1 << 2)
)

type AculHeadTag struct {
	// Any HTML element valid for use in the head tag
	Tag        *string                `json:"tag,omitempty" url:"tag,omitempty"`
	Attributes *AculHeadTagAttributes `json:"attributes,omitempty" url:"attributes,omitempty"`
	// Text/content within the opening and closing tags of the element.
	// See <a href="https://auth0.com/docs/customize/login-pages/advanced-customizations/getting-started/configure-acul-screens">documentation</a> on using context variables
	Content *string `json:"content,omitempty" url:"content,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (a *AculHeadTag) GetTag() string {
	if a == nil || a.Tag == nil {
		return ""
	}
	return *a.Tag
}

func (a *AculHeadTag) GetAttributes() AculHeadTagAttributes {
	if a == nil || a.Attributes == nil {
		return AculHeadTagAttributes{}
	}
	return *a.Attributes
}

func (a *AculHeadTag) GetContent() string {
	if a == nil || a.Content == nil {
		return ""
	}
	return *a.Content
}

func (a *AculHeadTag) GetExtraProperties() map[string]interface{} {
	return a.ExtraProperties
}

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

// SetTag sets the Tag field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AculHeadTag) SetTag(tag *string) {
	a.Tag = tag
	a.require(aculHeadTagFieldTag)
}

// SetAttributes sets the Attributes field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AculHeadTag) SetAttributes(attributes *AculHeadTagAttributes) {
	a.Attributes = attributes
	a.require(aculHeadTagFieldAttributes)
}

// SetContent sets the Content field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AculHeadTag) SetContent(content *string) {
	a.Content = content
	a.require(aculHeadTagFieldContent)
}

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

func (a *AculHeadTag) MarshalJSON() ([]byte, error) {
	type embed AculHeadTag
	var marshaler = struct {
		embed
	}{
		embed: embed(*a),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, a.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, a.ExtraProperties)
}

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

// Attributes of the HTML tag
var (
	aculHeadTagAttributesFieldIntegrity = big.NewInt(1 << 0)
)

type AculHeadTagAttributes struct {
	Integrity []string `json:"integrity,omitempty" url:"integrity,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (a *AculHeadTagAttributes) GetIntegrity() []string {
	if a == nil || a.Integrity == nil {
		return nil
	}
	return a.Integrity
}

func (a *AculHeadTagAttributes) GetExtraProperties() map[string]interface{} {
	return a.ExtraProperties
}

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

// SetIntegrity sets the Integrity field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AculHeadTagAttributes) SetIntegrity(integrity []string) {
	a.Integrity = integrity
	a.require(aculHeadTagAttributesFieldIntegrity)
}

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

func (a *AculHeadTagAttributes) MarshalJSON() ([]byte, error) {
	type embed AculHeadTagAttributes
	var marshaler = struct {
		embed
	}{
		embed: embed(*a),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, a.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, a.ExtraProperties)
}

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

// Type of match to apply
type AculMatchTypeEnum string

const (
	AculMatchTypeEnumIncludesAny AculMatchTypeEnum = "includes_any"
	AculMatchTypeEnumExcludesAny AculMatchTypeEnum = "excludes_any"
)

func NewAculMatchTypeEnumFromString(s string) (AculMatchTypeEnum, error) {
	switch s {
	case "includes_any":
		return AculMatchTypeEnumIncludesAny, nil
	case "excludes_any":
		return AculMatchTypeEnumExcludesAny, nil
	}
	var t AculMatchTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (a AculMatchTypeEnum) Ptr() *AculMatchTypeEnum {
	return &a
}

// Organizations array filter items
type AculOrganizationFilter struct {
	AculOrganizationFilterByID       *AculOrganizationFilterByID
	AculOrganizationFilterByMetadata *AculOrganizationFilterByMetadata

	typ string
}

func (a *AculOrganizationFilter) GetAculOrganizationFilterByID() *AculOrganizationFilterByID {
	if a == nil {
		return nil
	}
	return a.AculOrganizationFilterByID
}

func (a *AculOrganizationFilter) GetAculOrganizationFilterByMetadata() *AculOrganizationFilterByMetadata {
	if a == nil {
		return nil
	}
	return a.AculOrganizationFilterByMetadata
}

func (a *AculOrganizationFilter) UnmarshalJSON(data []byte) error {
	valueAculOrganizationFilterByID := new(AculOrganizationFilterByID)
	if err := json.Unmarshal(data, &valueAculOrganizationFilterByID); err == nil {
		a.typ = "AculOrganizationFilterByID"
		a.AculOrganizationFilterByID = valueAculOrganizationFilterByID
		return nil
	}
	valueAculOrganizationFilterByMetadata := new(AculOrganizationFilterByMetadata)
	if err := json.Unmarshal(data, &valueAculOrganizationFilterByMetadata); err == nil {
		a.typ = "AculOrganizationFilterByMetadata"
		a.AculOrganizationFilterByMetadata = valueAculOrganizationFilterByMetadata
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, a)
}

func (a AculOrganizationFilter) MarshalJSON() ([]byte, error) {
	if a.typ == "AculOrganizationFilterByID" || a.AculOrganizationFilterByID != nil {
		return json.Marshal(a.AculOrganizationFilterByID)
	}
	if a.typ == "AculOrganizationFilterByMetadata" || a.AculOrganizationFilterByMetadata != nil {
		return json.Marshal(a.AculOrganizationFilterByMetadata)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", a)
}

type AculOrganizationFilterVisitor interface {
	VisitAculOrganizationFilterByID(*AculOrganizationFilterByID) error
	VisitAculOrganizationFilterByMetadata(*AculOrganizationFilterByMetadata) error
}

func (a *AculOrganizationFilter) Accept(visitor AculOrganizationFilterVisitor) error {
	if a.typ == "AculOrganizationFilterByID" || a.AculOrganizationFilterByID != nil {
		return visitor.VisitAculOrganizationFilterByID(a.AculOrganizationFilterByID)
	}
	if a.typ == "AculOrganizationFilterByMetadata" || a.AculOrganizationFilterByMetadata != nil {
		return visitor.VisitAculOrganizationFilterByMetadata(a.AculOrganizationFilterByMetadata)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", a)
}

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

type AculOrganizationFilterByID struct {
	// Organization ID
	ID string `json:"id" url:"id"`

	// 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 (a *AculOrganizationFilterByID) GetID() string {
	if a == nil {
		return ""
	}
	return a.ID
}

func (a *AculOrganizationFilterByID) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

func (a *AculOrganizationFilterByID) require(field *big.Int) {
	if a.explicitFields == nil {
		a.explicitFields = big.NewInt(0)
	}
	a.explicitFields.Or(a.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 (a *AculOrganizationFilterByID) SetID(id string) {
	a.ID = id
	a.require(aculOrganizationFilterByIDFieldID)
}

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

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

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

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

type AculOrganizationFilterByMetadata struct {
	Metadata AculOrganizationMetadata `json:"metadata" url:"metadata"`

	// 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 (a *AculOrganizationFilterByMetadata) GetMetadata() AculOrganizationMetadata {
	if a == nil {
		return nil
	}
	return a.Metadata
}

func (a *AculOrganizationFilterByMetadata) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

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

// 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 (a *AculOrganizationFilterByMetadata) SetMetadata(metadata AculOrganizationMetadata) {
	a.Metadata = metadata
	a.require(aculOrganizationFilterByMetadataFieldMetadata)
}

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

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

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

// Organization metadata key/value pairs
type AculOrganizationMetadata = map[string]interface{}

// Rendering mode to filter by
type AculRenderingModeEnum string

const (
	AculRenderingModeEnumAdvanced AculRenderingModeEnum = "advanced"
	AculRenderingModeEnumStandard AculRenderingModeEnum = "standard"
)

func NewAculRenderingModeEnumFromString(s string) (AculRenderingModeEnum, error) {
	switch s {
	case "advanced":
		return AculRenderingModeEnumAdvanced, nil
	case "standard":
		return AculRenderingModeEnumStandard, nil
	}
	var t AculRenderingModeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (a AculRenderingModeEnum) Ptr() *AculRenderingModeEnum {
	return &a
}

var (
	aculResponseContentFieldRenderingMode           = big.NewInt(1 << 0)
	aculResponseContentFieldContextConfiguration    = big.NewInt(1 << 1)
	aculResponseContentFieldDefaultHeadTagsDisabled = big.NewInt(1 << 2)
	aculResponseContentFieldHeadTags                = big.NewInt(1 << 3)
	aculResponseContentFieldFilters                 = big.NewInt(1 << 4)
	aculResponseContentFieldUsePageTemplate         = big.NewInt(1 << 5)
)

type AculResponseContent struct {
	RenderingMode *AculRenderingModeEnum `json:"rendering_mode,omitempty" url:"rendering_mode,omitempty"`
	// Context values to make available
	ContextConfiguration []string `json:"context_configuration,omitempty" url:"context_configuration,omitempty"`
	// Override Universal Login default head tags
	DefaultHeadTagsDisabled *bool `json:"default_head_tags_disabled,omitempty" url:"default_head_tags_disabled,omitempty"`
	// An array of head tags
	HeadTags []*AculHeadTag `json:"head_tags,omitempty" url:"head_tags,omitempty"`
	Filters  *AculFilters   `json:"filters,omitempty" url:"filters,omitempty"`
	// Use page template with ACUL
	UsePageTemplate *bool `json:"use_page_template,omitempty" url:"use_page_template,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (a *AculResponseContent) GetRenderingMode() AculRenderingModeEnum {
	if a == nil || a.RenderingMode == nil {
		return ""
	}
	return *a.RenderingMode
}

func (a *AculResponseContent) GetContextConfiguration() []string {
	if a == nil || a.ContextConfiguration == nil {
		return nil
	}
	return a.ContextConfiguration
}

func (a *AculResponseContent) GetDefaultHeadTagsDisabled() bool {
	if a == nil || a.DefaultHeadTagsDisabled == nil {
		return false
	}
	return *a.DefaultHeadTagsDisabled
}

func (a *AculResponseContent) GetHeadTags() []*AculHeadTag {
	if a == nil || a.HeadTags == nil {
		return nil
	}
	return a.HeadTags
}

func (a *AculResponseContent) GetFilters() AculFilters {
	if a == nil || a.Filters == nil {
		return AculFilters{}
	}
	return *a.Filters
}

func (a *AculResponseContent) GetUsePageTemplate() bool {
	if a == nil || a.UsePageTemplate == nil {
		return false
	}
	return *a.UsePageTemplate
}

func (a *AculResponseContent) GetExtraProperties() map[string]interface{} {
	return a.ExtraProperties
}

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

// SetRenderingMode sets the RenderingMode field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AculResponseContent) SetRenderingMode(renderingMode *AculRenderingModeEnum) {
	a.RenderingMode = renderingMode
	a.require(aculResponseContentFieldRenderingMode)
}

// SetContextConfiguration sets the ContextConfiguration field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AculResponseContent) SetContextConfiguration(contextConfiguration []string) {
	a.ContextConfiguration = contextConfiguration
	a.require(aculResponseContentFieldContextConfiguration)
}

// SetDefaultHeadTagsDisabled sets the DefaultHeadTagsDisabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AculResponseContent) SetDefaultHeadTagsDisabled(defaultHeadTagsDisabled *bool) {
	a.DefaultHeadTagsDisabled = defaultHeadTagsDisabled
	a.require(aculResponseContentFieldDefaultHeadTagsDisabled)
}

// SetHeadTags sets the HeadTags field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AculResponseContent) SetHeadTags(headTags []*AculHeadTag) {
	a.HeadTags = headTags
	a.require(aculResponseContentFieldHeadTags)
}

// SetFilters sets the Filters field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AculResponseContent) SetFilters(filters *AculFilters) {
	a.Filters = filters
	a.require(aculResponseContentFieldFilters)
}

// SetUsePageTemplate sets the UsePageTemplate field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AculResponseContent) SetUsePageTemplate(usePageTemplate *bool) {
	a.UsePageTemplate = usePageTemplate
	a.require(aculResponseContentFieldUsePageTemplate)
}

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

func (a *AculResponseContent) MarshalJSON() ([]byte, error) {
	type embed AculResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*a),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, a.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, a.ExtraProperties)
}

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

var (
	addOrganizationConnectionResponseContentFieldConnectionID            = big.NewInt(1 << 0)
	addOrganizationConnectionResponseContentFieldAssignMembershipOnLogin = big.NewInt(1 << 1)
	addOrganizationConnectionResponseContentFieldShowAsButton            = big.NewInt(1 << 2)
	addOrganizationConnectionResponseContentFieldIsSignupEnabled         = big.NewInt(1 << 3)
	addOrganizationConnectionResponseContentFieldConnection              = big.NewInt(1 << 4)
)

type AddOrganizationConnectionResponseContent struct {
	// ID of the connection.
	ConnectionID *string `json:"connection_id,omitempty" url:"connection_id,omitempty"`
	// When true, all users that log in with this connection will be automatically granted membership in the organization. When false, users must be granted membership in the organization before logging in with this connection.
	AssignMembershipOnLogin *bool `json:"assign_membership_on_login,omitempty" url:"assign_membership_on_login,omitempty"`
	// Determines whether a connection should be displayed on this organization’s login prompt. Only applicable for enterprise connections. Default: true.
	ShowAsButton *bool `json:"show_as_button,omitempty" url:"show_as_button,omitempty"`
	// Determines whether organization signup should be enabled for this organization connection. Only applicable for database connections. Default: false.
	IsSignupEnabled *bool                              `json:"is_signup_enabled,omitempty" url:"is_signup_enabled,omitempty"`
	Connection      *OrganizationConnectionInformation `json:"connection,omitempty" url:"connection,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 (a *AddOrganizationConnectionResponseContent) GetConnectionID() string {
	if a == nil || a.ConnectionID == nil {
		return ""
	}
	return *a.ConnectionID
}

func (a *AddOrganizationConnectionResponseContent) GetAssignMembershipOnLogin() bool {
	if a == nil || a.AssignMembershipOnLogin == nil {
		return false
	}
	return *a.AssignMembershipOnLogin
}

func (a *AddOrganizationConnectionResponseContent) GetShowAsButton() bool {
	if a == nil || a.ShowAsButton == nil {
		return false
	}
	return *a.ShowAsButton
}

func (a *AddOrganizationConnectionResponseContent) GetIsSignupEnabled() bool {
	if a == nil || a.IsSignupEnabled == nil {
		return false
	}
	return *a.IsSignupEnabled
}

func (a *AddOrganizationConnectionResponseContent) GetConnection() OrganizationConnectionInformation {
	if a == nil || a.Connection == nil {
		return OrganizationConnectionInformation{}
	}
	return *a.Connection
}

func (a *AddOrganizationConnectionResponseContent) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

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

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AddOrganizationConnectionResponseContent) SetConnectionID(connectionID *string) {
	a.ConnectionID = connectionID
	a.require(addOrganizationConnectionResponseContentFieldConnectionID)
}

// SetAssignMembershipOnLogin sets the AssignMembershipOnLogin field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AddOrganizationConnectionResponseContent) SetAssignMembershipOnLogin(assignMembershipOnLogin *bool) {
	a.AssignMembershipOnLogin = assignMembershipOnLogin
	a.require(addOrganizationConnectionResponseContentFieldAssignMembershipOnLogin)
}

// SetShowAsButton sets the ShowAsButton field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AddOrganizationConnectionResponseContent) SetShowAsButton(showAsButton *bool) {
	a.ShowAsButton = showAsButton
	a.require(addOrganizationConnectionResponseContentFieldShowAsButton)
}

// SetIsSignupEnabled sets the IsSignupEnabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AddOrganizationConnectionResponseContent) SetIsSignupEnabled(isSignupEnabled *bool) {
	a.IsSignupEnabled = isSignupEnabled
	a.require(addOrganizationConnectionResponseContentFieldIsSignupEnabled)
}

// SetConnection sets the Connection field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AddOrganizationConnectionResponseContent) SetConnection(connection *OrganizationConnectionInformation) {
	a.Connection = connection
	a.require(addOrganizationConnectionResponseContentFieldConnection)
}

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

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

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

// IP address to check.
type AnomalyIPFormat = string

// Data related to the user that does affect the application's core functionality.
type AppMetadata = map[string]interface{}

type AssessorsTypeEnum = string

var (
	associateOrganizationClientGrantResponseContentFieldID                   = big.NewInt(1 << 0)
	associateOrganizationClientGrantResponseContentFieldClientID             = big.NewInt(1 << 1)
	associateOrganizationClientGrantResponseContentFieldAudience             = big.NewInt(1 << 2)
	associateOrganizationClientGrantResponseContentFieldScope                = big.NewInt(1 << 3)
	associateOrganizationClientGrantResponseContentFieldOrganizationUsage    = big.NewInt(1 << 4)
	associateOrganizationClientGrantResponseContentFieldAllowAnyOrganization = big.NewInt(1 << 5)
)

type AssociateOrganizationClientGrantResponseContent struct {
	// ID of the client grant.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// ID of the client.
	ClientID *string `json:"client_id,omitempty" url:"client_id,omitempty"`
	// The audience (API identifier) of this client grant
	Audience *string `json:"audience,omitempty" url:"audience,omitempty"`
	// Scopes allowed for this client grant.
	Scope             []string               `json:"scope,omitempty" url:"scope,omitempty"`
	OrganizationUsage *OrganizationUsageEnum `json:"organization_usage,omitempty" url:"organization_usage,omitempty"`
	// If enabled, any organization can be used with this grant. If disabled (default), the grant must be explicitly assigned to the desired organizations.
	AllowAnyOrganization *bool `json:"allow_any_organization,omitempty" url:"allow_any_organization,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 (a *AssociateOrganizationClientGrantResponseContent) GetID() string {
	if a == nil || a.ID == nil {
		return ""
	}
	return *a.ID
}

func (a *AssociateOrganizationClientGrantResponseContent) GetClientID() string {
	if a == nil || a.ClientID == nil {
		return ""
	}
	return *a.ClientID
}

func (a *AssociateOrganizationClientGrantResponseContent) GetAudience() string {
	if a == nil || a.Audience == nil {
		return ""
	}
	return *a.Audience
}

func (a *AssociateOrganizationClientGrantResponseContent) GetScope() []string {
	if a == nil || a.Scope == nil {
		return nil
	}
	return a.Scope
}

func (a *AssociateOrganizationClientGrantResponseContent) GetOrganizationUsage() OrganizationUsageEnum {
	if a == nil || a.OrganizationUsage == nil {
		return ""
	}
	return *a.OrganizationUsage
}

func (a *AssociateOrganizationClientGrantResponseContent) GetAllowAnyOrganization() bool {
	if a == nil || a.AllowAnyOrganization == nil {
		return false
	}
	return *a.AllowAnyOrganization
}

func (a *AssociateOrganizationClientGrantResponseContent) GetExtraProperties() map[string]interface{} {
	return a.extraProperties
}

func (a *AssociateOrganizationClientGrantResponseContent) require(field *big.Int) {
	if a.explicitFields == nil {
		a.explicitFields = big.NewInt(0)
	}
	a.explicitFields.Or(a.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 (a *AssociateOrganizationClientGrantResponseContent) SetID(id *string) {
	a.ID = id
	a.require(associateOrganizationClientGrantResponseContentFieldID)
}

// SetClientID sets the ClientID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AssociateOrganizationClientGrantResponseContent) SetClientID(clientID *string) {
	a.ClientID = clientID
	a.require(associateOrganizationClientGrantResponseContentFieldClientID)
}

// SetAudience sets the Audience field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AssociateOrganizationClientGrantResponseContent) SetAudience(audience *string) {
	a.Audience = audience
	a.require(associateOrganizationClientGrantResponseContentFieldAudience)
}

// SetScope sets the Scope field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AssociateOrganizationClientGrantResponseContent) SetScope(scope []string) {
	a.Scope = scope
	a.require(associateOrganizationClientGrantResponseContentFieldScope)
}

// SetOrganizationUsage sets the OrganizationUsage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AssociateOrganizationClientGrantResponseContent) SetOrganizationUsage(organizationUsage *OrganizationUsageEnum) {
	a.OrganizationUsage = organizationUsage
	a.require(associateOrganizationClientGrantResponseContentFieldOrganizationUsage)
}

// SetAllowAnyOrganization sets the AllowAnyOrganization field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (a *AssociateOrganizationClientGrantResponseContent) SetAllowAnyOrganization(allowAnyOrganization *bool) {
	a.AllowAnyOrganization = allowAnyOrganization
	a.require(associateOrganizationClientGrantResponseContentFieldAllowAnyOrganization)
}

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

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

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

type AuthenticationMethodTypeEnum string

const (
	AuthenticationMethodTypeEnumRecoveryCode      AuthenticationMethodTypeEnum = "recovery-code"
	AuthenticationMethodTypeEnumTotp              AuthenticationMethodTypeEnum = "totp"
	AuthenticationMethodTypeEnumPush              AuthenticationMethodTypeEnum = "push"
	AuthenticationMethodTypeEnumPhone             AuthenticationMethodTypeEnum = "phone"
	AuthenticationMethodTypeEnumEmail             AuthenticationMethodTypeEnum = "email"
	AuthenticationMethodTypeEnumEmailVerification AuthenticationMethodTypeEnum = "email-verification"
	AuthenticationMethodTypeEnumWebauthnRoaming   AuthenticationMethodTypeEnum = "webauthn-roaming"
	AuthenticationMethodTypeEnumWebauthnPlatform  AuthenticationMethodTypeEnum = "webauthn-platform"
	AuthenticationMethodTypeEnumGuardian          AuthenticationMethodTypeEnum = "guardian"
	AuthenticationMethodTypeEnumPasskey           AuthenticationMethodTypeEnum = "passkey"
	AuthenticationMethodTypeEnumPassword          AuthenticationMethodTypeEnum = "password"
)

func NewAuthenticationMethodTypeEnumFromString(s string) (AuthenticationMethodTypeEnum, error) {
	switch s {
	case "recovery-code":
		return AuthenticationMethodTypeEnumRecoveryCode, nil
	case "totp":
		return AuthenticationMethodTypeEnumTotp, nil
	case "push":
		return AuthenticationMethodTypeEnumPush, nil
	case "phone":
		return AuthenticationMethodTypeEnumPhone, nil
	case "email":
		return AuthenticationMethodTypeEnumEmail, nil
	case "email-verification":
		return AuthenticationMethodTypeEnumEmailVerification, nil
	case "webauthn-roaming":
		return AuthenticationMethodTypeEnumWebauthnRoaming, nil
	case "webauthn-platform":
		return AuthenticationMethodTypeEnumWebauthnPlatform, nil
	case "guardian":
		return AuthenticationMethodTypeEnumGuardian, nil
	case "passkey":
		return AuthenticationMethodTypeEnumPasskey, nil
	case "password":
		return AuthenticationMethodTypeEnumPassword, nil
	}
	var t AuthenticationMethodTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (a AuthenticationMethodTypeEnum) Ptr() *AuthenticationMethodTypeEnum {
	return &a
}

type AuthenticationTypeEnum string

const (
	AuthenticationTypeEnumPhone AuthenticationTypeEnum = "phone"
	AuthenticationTypeEnumEmail AuthenticationTypeEnum = "email"
	AuthenticationTypeEnumTotp  AuthenticationTypeEnum = "totp"
)

func NewAuthenticationTypeEnumFromString(s string) (AuthenticationTypeEnum, error) {
	switch s {
	case "phone":
		return AuthenticationTypeEnumPhone, nil
	case "email":
		return AuthenticationTypeEnumEmail, nil
	case "totp":
		return AuthenticationTypeEnumTotp, nil
	}
	var t AuthenticationTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (a AuthenticationTypeEnum) Ptr() *AuthenticationTypeEnum {
	return &a
}

var (
	brandingThemeBordersFieldButtonBorderRadius = big.NewInt(1 << 0)
	brandingThemeBordersFieldButtonBorderWeight = big.NewInt(1 << 1)
	brandingThemeBordersFieldButtonsStyle       = big.NewInt(1 << 2)
	brandingThemeBordersFieldInputBorderRadius  = big.NewInt(1 << 3)
	brandingThemeBordersFieldInputBorderWeight  = big.NewInt(1 << 4)
	brandingThemeBordersFieldInputsStyle        = big.NewInt(1 << 5)
	brandingThemeBordersFieldShowWidgetShadow   = big.NewInt(1 << 6)
	brandingThemeBordersFieldWidgetBorderWeight = big.NewInt(1 << 7)
	brandingThemeBordersFieldWidgetCornerRadius = big.NewInt(1 << 8)
)

type BrandingThemeBorders struct {
	// Button border radius
	ButtonBorderRadius float64 `json:"button_border_radius" url:"button_border_radius"`
	// Button border weight
	ButtonBorderWeight float64                              `json:"button_border_weight" url:"button_border_weight"`
	ButtonsStyle       BrandingThemeBordersButtonsStyleEnum `json:"buttons_style" url:"buttons_style"`
	// Input border radius
	InputBorderRadius float64 `json:"input_border_radius" url:"input_border_radius"`
	// Input border weight
	InputBorderWeight float64                             `json:"input_border_weight" url:"input_border_weight"`
	InputsStyle       BrandingThemeBordersInputsStyleEnum `json:"inputs_style" url:"inputs_style"`
	// Show widget shadow
	ShowWidgetShadow bool `json:"show_widget_shadow" url:"show_widget_shadow"`
	// Widget border weight
	WidgetBorderWeight float64 `json:"widget_border_weight" url:"widget_border_weight"`
	// Widget corner radius
	WidgetCornerRadius float64 `json:"widget_corner_radius" url:"widget_corner_radius"`

	// 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 *BrandingThemeBorders) GetButtonBorderRadius() float64 {
	if b == nil {
		return 0
	}
	return b.ButtonBorderRadius
}

func (b *BrandingThemeBorders) GetButtonBorderWeight() float64 {
	if b == nil {
		return 0
	}
	return b.ButtonBorderWeight
}

func (b *BrandingThemeBorders) GetButtonsStyle() BrandingThemeBordersButtonsStyleEnum {
	if b == nil {
		return ""
	}
	return b.ButtonsStyle
}

func (b *BrandingThemeBorders) GetInputBorderRadius() float64 {
	if b == nil {
		return 0
	}
	return b.InputBorderRadius
}

func (b *BrandingThemeBorders) GetInputBorderWeight() float64 {
	if b == nil {
		return 0
	}
	return b.InputBorderWeight
}

func (b *BrandingThemeBorders) GetInputsStyle() BrandingThemeBordersInputsStyleEnum {
	if b == nil {
		return ""
	}
	return b.InputsStyle
}

func (b *BrandingThemeBorders) GetShowWidgetShadow() bool {
	if b == nil {
		return false
	}
	return b.ShowWidgetShadow
}

func (b *BrandingThemeBorders) GetWidgetBorderWeight() float64 {
	if b == nil {
		return 0
	}
	return b.WidgetBorderWeight
}

func (b *BrandingThemeBorders) GetWidgetCornerRadius() float64 {
	if b == nil {
		return 0
	}
	return b.WidgetCornerRadius
}

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

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

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

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

// SetButtonsStyle sets the ButtonsStyle field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeBorders) SetButtonsStyle(buttonsStyle BrandingThemeBordersButtonsStyleEnum) {
	b.ButtonsStyle = buttonsStyle
	b.require(brandingThemeBordersFieldButtonsStyle)
}

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

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

// SetInputsStyle sets the InputsStyle field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeBorders) SetInputsStyle(inputsStyle BrandingThemeBordersInputsStyleEnum) {
	b.InputsStyle = inputsStyle
	b.require(brandingThemeBordersFieldInputsStyle)
}

// SetShowWidgetShadow sets the ShowWidgetShadow field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeBorders) SetShowWidgetShadow(showWidgetShadow bool) {
	b.ShowWidgetShadow = showWidgetShadow
	b.require(brandingThemeBordersFieldShowWidgetShadow)
}

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

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

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

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

func (b *BrandingThemeBorders) 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)
}

// Buttons style
type BrandingThemeBordersButtonsStyleEnum string

const (
	BrandingThemeBordersButtonsStyleEnumPill    BrandingThemeBordersButtonsStyleEnum = "pill"
	BrandingThemeBordersButtonsStyleEnumRounded BrandingThemeBordersButtonsStyleEnum = "rounded"
	BrandingThemeBordersButtonsStyleEnumSharp   BrandingThemeBordersButtonsStyleEnum = "sharp"
)

func NewBrandingThemeBordersButtonsStyleEnumFromString(s string) (BrandingThemeBordersButtonsStyleEnum, error) {
	switch s {
	case "pill":
		return BrandingThemeBordersButtonsStyleEnumPill, nil
	case "rounded":
		return BrandingThemeBordersButtonsStyleEnumRounded, nil
	case "sharp":
		return BrandingThemeBordersButtonsStyleEnumSharp, nil
	}
	var t BrandingThemeBordersButtonsStyleEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (b BrandingThemeBordersButtonsStyleEnum) Ptr() *BrandingThemeBordersButtonsStyleEnum {
	return &b
}

// Inputs style
type BrandingThemeBordersInputsStyleEnum string

const (
	BrandingThemeBordersInputsStyleEnumPill    BrandingThemeBordersInputsStyleEnum = "pill"
	BrandingThemeBordersInputsStyleEnumRounded BrandingThemeBordersInputsStyleEnum = "rounded"
	BrandingThemeBordersInputsStyleEnumSharp   BrandingThemeBordersInputsStyleEnum = "sharp"
)

func NewBrandingThemeBordersInputsStyleEnumFromString(s string) (BrandingThemeBordersInputsStyleEnum, error) {
	switch s {
	case "pill":
		return BrandingThemeBordersInputsStyleEnumPill, nil
	case "rounded":
		return BrandingThemeBordersInputsStyleEnumRounded, nil
	case "sharp":
		return BrandingThemeBordersInputsStyleEnumSharp, nil
	}
	var t BrandingThemeBordersInputsStyleEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (b BrandingThemeBordersInputsStyleEnum) Ptr() *BrandingThemeBordersInputsStyleEnum {
	return &b
}

var (
	brandingThemeColorsFieldBaseFocusColor          = big.NewInt(1 << 0)
	brandingThemeColorsFieldBaseHoverColor          = big.NewInt(1 << 1)
	brandingThemeColorsFieldBodyText                = big.NewInt(1 << 2)
	brandingThemeColorsFieldCaptchaWidgetTheme      = big.NewInt(1 << 3)
	brandingThemeColorsFieldError                   = big.NewInt(1 << 4)
	brandingThemeColorsFieldHeader                  = big.NewInt(1 << 5)
	brandingThemeColorsFieldIcons                   = big.NewInt(1 << 6)
	brandingThemeColorsFieldInputBackground         = big.NewInt(1 << 7)
	brandingThemeColorsFieldInputBorder             = big.NewInt(1 << 8)
	brandingThemeColorsFieldInputFilledText         = big.NewInt(1 << 9)
	brandingThemeColorsFieldInputLabelsPlaceholders = big.NewInt(1 << 10)
	brandingThemeColorsFieldLinksFocusedComponents  = big.NewInt(1 << 11)
	brandingThemeColorsFieldPrimaryButton           = big.NewInt(1 << 12)
	brandingThemeColorsFieldPrimaryButtonLabel      = big.NewInt(1 << 13)
	brandingThemeColorsFieldReadOnlyBackground      = big.NewInt(1 << 14)
	brandingThemeColorsFieldSecondaryButtonBorder   = big.NewInt(1 << 15)
	brandingThemeColorsFieldSecondaryButtonLabel    = big.NewInt(1 << 16)
	brandingThemeColorsFieldSuccess                 = big.NewInt(1 << 17)
	brandingThemeColorsFieldWidgetBackground        = big.NewInt(1 << 18)
	brandingThemeColorsFieldWidgetBorder            = big.NewInt(1 << 19)
)

type BrandingThemeColors struct {
	// Base Focus Color
	BaseFocusColor *string `json:"base_focus_color,omitempty" url:"base_focus_color,omitempty"`
	// Base Hover Color
	BaseHoverColor *string `json:"base_hover_color,omitempty" url:"base_hover_color,omitempty"`
	// Body text
	BodyText           string                                     `json:"body_text" url:"body_text"`
	CaptchaWidgetTheme *BrandingThemeColorsCaptchaWidgetThemeEnum `json:"captcha_widget_theme,omitempty" url:"captcha_widget_theme,omitempty"`
	// Error
	Error string `json:"error" url:"error"`
	// Header
	Header string `json:"header" url:"header"`
	// Icons
	Icons string `json:"icons" url:"icons"`
	// Input background
	InputBackground string `json:"input_background" url:"input_background"`
	// Input border
	InputBorder string `json:"input_border" url:"input_border"`
	// Input filled text
	InputFilledText string `json:"input_filled_text" url:"input_filled_text"`
	// Input labels & placeholders
	InputLabelsPlaceholders string `json:"input_labels_placeholders" url:"input_labels_placeholders"`
	// Links & focused components
	LinksFocusedComponents string `json:"links_focused_components" url:"links_focused_components"`
	// Primary button
	PrimaryButton string `json:"primary_button" url:"primary_button"`
	// Primary button label
	PrimaryButtonLabel string `json:"primary_button_label" url:"primary_button_label"`
	// Read only background
	ReadOnlyBackground *string `json:"read_only_background,omitempty" url:"read_only_background,omitempty"`
	// Secondary button border
	SecondaryButtonBorder string `json:"secondary_button_border" url:"secondary_button_border"`
	// Secondary button label
	SecondaryButtonLabel string `json:"secondary_button_label" url:"secondary_button_label"`
	// Success
	Success string `json:"success" url:"success"`
	// Widget background
	WidgetBackground string `json:"widget_background" url:"widget_background"`
	// Widget border
	WidgetBorder string `json:"widget_border" url:"widget_border"`

	// 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 *BrandingThemeColors) GetBaseFocusColor() string {
	if b == nil || b.BaseFocusColor == nil {
		return ""
	}
	return *b.BaseFocusColor
}

func (b *BrandingThemeColors) GetBaseHoverColor() string {
	if b == nil || b.BaseHoverColor == nil {
		return ""
	}
	return *b.BaseHoverColor
}

func (b *BrandingThemeColors) GetBodyText() string {
	if b == nil {
		return ""
	}
	return b.BodyText
}

func (b *BrandingThemeColors) GetCaptchaWidgetTheme() BrandingThemeColorsCaptchaWidgetThemeEnum {
	if b == nil || b.CaptchaWidgetTheme == nil {
		return ""
	}
	return *b.CaptchaWidgetTheme
}

func (b *BrandingThemeColors) GetError() string {
	if b == nil {
		return ""
	}
	return b.Error
}

func (b *BrandingThemeColors) GetHeader() string {
	if b == nil {
		return ""
	}
	return b.Header
}

func (b *BrandingThemeColors) GetIcons() string {
	if b == nil {
		return ""
	}
	return b.Icons
}

func (b *BrandingThemeColors) GetInputBackground() string {
	if b == nil {
		return ""
	}
	return b.InputBackground
}

func (b *BrandingThemeColors) GetInputBorder() string {
	if b == nil {
		return ""
	}
	return b.InputBorder
}

func (b *BrandingThemeColors) GetInputFilledText() string {
	if b == nil {
		return ""
	}
	return b.InputFilledText
}

func (b *BrandingThemeColors) GetInputLabelsPlaceholders() string {
	if b == nil {
		return ""
	}
	return b.InputLabelsPlaceholders
}

func (b *BrandingThemeColors) GetLinksFocusedComponents() string {
	if b == nil {
		return ""
	}
	return b.LinksFocusedComponents
}

func (b *BrandingThemeColors) GetPrimaryButton() string {
	if b == nil {
		return ""
	}
	return b.PrimaryButton
}

func (b *BrandingThemeColors) GetPrimaryButtonLabel() string {
	if b == nil {
		return ""
	}
	return b.PrimaryButtonLabel
}

func (b *BrandingThemeColors) GetReadOnlyBackground() string {
	if b == nil || b.ReadOnlyBackground == nil {
		return ""
	}
	return *b.ReadOnlyBackground
}

func (b *BrandingThemeColors) GetSecondaryButtonBorder() string {
	if b == nil {
		return ""
	}
	return b.SecondaryButtonBorder
}

func (b *BrandingThemeColors) GetSecondaryButtonLabel() string {
	if b == nil {
		return ""
	}
	return b.SecondaryButtonLabel
}

func (b *BrandingThemeColors) GetSuccess() string {
	if b == nil {
		return ""
	}
	return b.Success
}

func (b *BrandingThemeColors) GetWidgetBackground() string {
	if b == nil {
		return ""
	}
	return b.WidgetBackground
}

func (b *BrandingThemeColors) GetWidgetBorder() string {
	if b == nil {
		return ""
	}
	return b.WidgetBorder
}

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

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

// SetBaseFocusColor sets the BaseFocusColor field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetBaseFocusColor(baseFocusColor *string) {
	b.BaseFocusColor = baseFocusColor
	b.require(brandingThemeColorsFieldBaseFocusColor)
}

// SetBaseHoverColor sets the BaseHoverColor field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetBaseHoverColor(baseHoverColor *string) {
	b.BaseHoverColor = baseHoverColor
	b.require(brandingThemeColorsFieldBaseHoverColor)
}

// SetBodyText sets the BodyText field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetBodyText(bodyText string) {
	b.BodyText = bodyText
	b.require(brandingThemeColorsFieldBodyText)
}

// SetCaptchaWidgetTheme sets the CaptchaWidgetTheme field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetCaptchaWidgetTheme(captchaWidgetTheme *BrandingThemeColorsCaptchaWidgetThemeEnum) {
	b.CaptchaWidgetTheme = captchaWidgetTheme
	b.require(brandingThemeColorsFieldCaptchaWidgetTheme)
}

// SetError sets the Error field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetError(error_ string) {
	b.Error = error_
	b.require(brandingThemeColorsFieldError)
}

// SetHeader sets the Header field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetHeader(header string) {
	b.Header = header
	b.require(brandingThemeColorsFieldHeader)
}

// SetIcons sets the Icons field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetIcons(icons string) {
	b.Icons = icons
	b.require(brandingThemeColorsFieldIcons)
}

// SetInputBackground sets the InputBackground field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetInputBackground(inputBackground string) {
	b.InputBackground = inputBackground
	b.require(brandingThemeColorsFieldInputBackground)
}

// SetInputBorder sets the InputBorder field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetInputBorder(inputBorder string) {
	b.InputBorder = inputBorder
	b.require(brandingThemeColorsFieldInputBorder)
}

// SetInputFilledText sets the InputFilledText field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetInputFilledText(inputFilledText string) {
	b.InputFilledText = inputFilledText
	b.require(brandingThemeColorsFieldInputFilledText)
}

// SetInputLabelsPlaceholders sets the InputLabelsPlaceholders field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetInputLabelsPlaceholders(inputLabelsPlaceholders string) {
	b.InputLabelsPlaceholders = inputLabelsPlaceholders
	b.require(brandingThemeColorsFieldInputLabelsPlaceholders)
}

// SetLinksFocusedComponents sets the LinksFocusedComponents field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetLinksFocusedComponents(linksFocusedComponents string) {
	b.LinksFocusedComponents = linksFocusedComponents
	b.require(brandingThemeColorsFieldLinksFocusedComponents)
}

// SetPrimaryButton sets the PrimaryButton field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetPrimaryButton(primaryButton string) {
	b.PrimaryButton = primaryButton
	b.require(brandingThemeColorsFieldPrimaryButton)
}

// SetPrimaryButtonLabel sets the PrimaryButtonLabel field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetPrimaryButtonLabel(primaryButtonLabel string) {
	b.PrimaryButtonLabel = primaryButtonLabel
	b.require(brandingThemeColorsFieldPrimaryButtonLabel)
}

// SetReadOnlyBackground sets the ReadOnlyBackground field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetReadOnlyBackground(readOnlyBackground *string) {
	b.ReadOnlyBackground = readOnlyBackground
	b.require(brandingThemeColorsFieldReadOnlyBackground)
}

// SetSecondaryButtonBorder sets the SecondaryButtonBorder field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetSecondaryButtonBorder(secondaryButtonBorder string) {
	b.SecondaryButtonBorder = secondaryButtonBorder
	b.require(brandingThemeColorsFieldSecondaryButtonBorder)
}

// SetSecondaryButtonLabel sets the SecondaryButtonLabel field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetSecondaryButtonLabel(secondaryButtonLabel string) {
	b.SecondaryButtonLabel = secondaryButtonLabel
	b.require(brandingThemeColorsFieldSecondaryButtonLabel)
}

// SetSuccess sets the Success field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetSuccess(success string) {
	b.Success = success
	b.require(brandingThemeColorsFieldSuccess)
}

// SetWidgetBackground sets the WidgetBackground field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetWidgetBackground(widgetBackground string) {
	b.WidgetBackground = widgetBackground
	b.require(brandingThemeColorsFieldWidgetBackground)
}

// SetWidgetBorder sets the WidgetBorder field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeColors) SetWidgetBorder(widgetBorder string) {
	b.WidgetBorder = widgetBorder
	b.require(brandingThemeColorsFieldWidgetBorder)
}

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

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

func (b *BrandingThemeColors) 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)
}

// Captcha Widget Theme
type BrandingThemeColorsCaptchaWidgetThemeEnum string

const (
	BrandingThemeColorsCaptchaWidgetThemeEnumAuto  BrandingThemeColorsCaptchaWidgetThemeEnum = "auto"
	BrandingThemeColorsCaptchaWidgetThemeEnumDark  BrandingThemeColorsCaptchaWidgetThemeEnum = "dark"
	BrandingThemeColorsCaptchaWidgetThemeEnumLight BrandingThemeColorsCaptchaWidgetThemeEnum = "light"
)

func NewBrandingThemeColorsCaptchaWidgetThemeEnumFromString(s string) (BrandingThemeColorsCaptchaWidgetThemeEnum, error) {
	switch s {
	case "auto":
		return BrandingThemeColorsCaptchaWidgetThemeEnumAuto, nil
	case "dark":
		return BrandingThemeColorsCaptchaWidgetThemeEnumDark, nil
	case "light":
		return BrandingThemeColorsCaptchaWidgetThemeEnumLight, nil
	}
	var t BrandingThemeColorsCaptchaWidgetThemeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (b BrandingThemeColorsCaptchaWidgetThemeEnum) Ptr() *BrandingThemeColorsCaptchaWidgetThemeEnum {
	return &b
}

// Body text
var (
	brandingThemeFontBodyTextFieldBold = big.NewInt(1 << 0)
	brandingThemeFontBodyTextFieldSize = big.NewInt(1 << 1)
)

type BrandingThemeFontBodyText struct {
	// Body text bold
	Bold bool `json:"bold" url:"bold"`
	// Body text size
	Size float64 `json:"size" url:"size"`

	// 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 *BrandingThemeFontBodyText) GetBold() bool {
	if b == nil {
		return false
	}
	return b.Bold
}

func (b *BrandingThemeFontBodyText) GetSize() float64 {
	if b == nil {
		return 0
	}
	return b.Size
}

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

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

// SetBold sets the Bold field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeFontBodyText) SetBold(bold bool) {
	b.Bold = bold
	b.require(brandingThemeFontBodyTextFieldBold)
}

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

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

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

func (b *BrandingThemeFontBodyText) 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)
}

// Buttons text
var (
	brandingThemeFontButtonsTextFieldBold = big.NewInt(1 << 0)
	brandingThemeFontButtonsTextFieldSize = big.NewInt(1 << 1)
)

type BrandingThemeFontButtonsText struct {
	// Buttons text bold
	Bold bool `json:"bold" url:"bold"`
	// Buttons text size
	Size float64 `json:"size" url:"size"`

	// 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 *BrandingThemeFontButtonsText) GetBold() bool {
	if b == nil {
		return false
	}
	return b.Bold
}

func (b *BrandingThemeFontButtonsText) GetSize() float64 {
	if b == nil {
		return 0
	}
	return b.Size
}

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

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

// SetBold sets the Bold field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeFontButtonsText) SetBold(bold bool) {
	b.Bold = bold
	b.require(brandingThemeFontButtonsTextFieldBold)
}

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

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

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

func (b *BrandingThemeFontButtonsText) 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)
}

// Input Labels
var (
	brandingThemeFontInputLabelsFieldBold = big.NewInt(1 << 0)
	brandingThemeFontInputLabelsFieldSize = big.NewInt(1 << 1)
)

type BrandingThemeFontInputLabels struct {
	// Input Labels bold
	Bold bool `json:"bold" url:"bold"`
	// Input Labels size
	Size float64 `json:"size" url:"size"`

	// 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 *BrandingThemeFontInputLabels) GetBold() bool {
	if b == nil {
		return false
	}
	return b.Bold
}

func (b *BrandingThemeFontInputLabels) GetSize() float64 {
	if b == nil {
		return 0
	}
	return b.Size
}

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

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

// SetBold sets the Bold field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeFontInputLabels) SetBold(bold bool) {
	b.Bold = bold
	b.require(brandingThemeFontInputLabelsFieldBold)
}

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

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

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

func (b *BrandingThemeFontInputLabels) 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)
}

// Links
var (
	brandingThemeFontLinksFieldBold = big.NewInt(1 << 0)
	brandingThemeFontLinksFieldSize = big.NewInt(1 << 1)
)

type BrandingThemeFontLinks struct {
	// Links bold
	Bold bool `json:"bold" url:"bold"`
	// Links size
	Size float64 `json:"size" url:"size"`

	// 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 *BrandingThemeFontLinks) GetBold() bool {
	if b == nil {
		return false
	}
	return b.Bold
}

func (b *BrandingThemeFontLinks) GetSize() float64 {
	if b == nil {
		return 0
	}
	return b.Size
}

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

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

// SetBold sets the Bold field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeFontLinks) SetBold(bold bool) {
	b.Bold = bold
	b.require(brandingThemeFontLinksFieldBold)
}

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

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

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

func (b *BrandingThemeFontLinks) 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)
}

// Links style
type BrandingThemeFontLinksStyleEnum string

const (
	BrandingThemeFontLinksStyleEnumNormal     BrandingThemeFontLinksStyleEnum = "normal"
	BrandingThemeFontLinksStyleEnumUnderlined BrandingThemeFontLinksStyleEnum = "underlined"
)

func NewBrandingThemeFontLinksStyleEnumFromString(s string) (BrandingThemeFontLinksStyleEnum, error) {
	switch s {
	case "normal":
		return BrandingThemeFontLinksStyleEnumNormal, nil
	case "underlined":
		return BrandingThemeFontLinksStyleEnumUnderlined, nil
	}
	var t BrandingThemeFontLinksStyleEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (b BrandingThemeFontLinksStyleEnum) Ptr() *BrandingThemeFontLinksStyleEnum {
	return &b
}

// Subtitle
var (
	brandingThemeFontSubtitleFieldBold = big.NewInt(1 << 0)
	brandingThemeFontSubtitleFieldSize = big.NewInt(1 << 1)
)

type BrandingThemeFontSubtitle struct {
	// Subtitle bold
	Bold bool `json:"bold" url:"bold"`
	// Subtitle size
	Size float64 `json:"size" url:"size"`

	// 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 *BrandingThemeFontSubtitle) GetBold() bool {
	if b == nil {
		return false
	}
	return b.Bold
}

func (b *BrandingThemeFontSubtitle) GetSize() float64 {
	if b == nil {
		return 0
	}
	return b.Size
}

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

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

// SetBold sets the Bold field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeFontSubtitle) SetBold(bold bool) {
	b.Bold = bold
	b.require(brandingThemeFontSubtitleFieldBold)
}

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

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

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

func (b *BrandingThemeFontSubtitle) 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)
}

// Title
var (
	brandingThemeFontTitleFieldBold = big.NewInt(1 << 0)
	brandingThemeFontTitleFieldSize = big.NewInt(1 << 1)
)

type BrandingThemeFontTitle struct {
	// Title bold
	Bold bool `json:"bold" url:"bold"`
	// Title size
	Size float64 `json:"size" url:"size"`

	// 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 *BrandingThemeFontTitle) GetBold() bool {
	if b == nil {
		return false
	}
	return b.Bold
}

func (b *BrandingThemeFontTitle) GetSize() float64 {
	if b == nil {
		return 0
	}
	return b.Size
}

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

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

// SetBold sets the Bold field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeFontTitle) SetBold(bold bool) {
	b.Bold = bold
	b.require(brandingThemeFontTitleFieldBold)
}

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

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

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

func (b *BrandingThemeFontTitle) 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 (
	brandingThemeFontsFieldBodyText          = big.NewInt(1 << 0)
	brandingThemeFontsFieldButtonsText       = big.NewInt(1 << 1)
	brandingThemeFontsFieldFontURL           = big.NewInt(1 << 2)
	brandingThemeFontsFieldInputLabels       = big.NewInt(1 << 3)
	brandingThemeFontsFieldLinks             = big.NewInt(1 << 4)
	brandingThemeFontsFieldLinksStyle        = big.NewInt(1 << 5)
	brandingThemeFontsFieldReferenceTextSize = big.NewInt(1 << 6)
	brandingThemeFontsFieldSubtitle          = big.NewInt(1 << 7)
	brandingThemeFontsFieldTitle             = big.NewInt(1 << 8)
)

type BrandingThemeFonts struct {
	BodyText    *BrandingThemeFontBodyText    `json:"body_text" url:"body_text"`
	ButtonsText *BrandingThemeFontButtonsText `json:"buttons_text" url:"buttons_text"`
	// Font URL
	FontURL     string                          `json:"font_url" url:"font_url"`
	InputLabels *BrandingThemeFontInputLabels   `json:"input_labels" url:"input_labels"`
	Links       *BrandingThemeFontLinks         `json:"links" url:"links"`
	LinksStyle  BrandingThemeFontLinksStyleEnum `json:"links_style" url:"links_style"`
	// Reference text size
	ReferenceTextSize float64                    `json:"reference_text_size" url:"reference_text_size"`
	Subtitle          *BrandingThemeFontSubtitle `json:"subtitle" url:"subtitle"`
	Title             *BrandingThemeFontTitle    `json:"title" url:"title"`

	// 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 *BrandingThemeFonts) GetBodyText() *BrandingThemeFontBodyText {
	if b == nil {
		return nil
	}
	return b.BodyText
}

func (b *BrandingThemeFonts) GetButtonsText() *BrandingThemeFontButtonsText {
	if b == nil {
		return nil
	}
	return b.ButtonsText
}

func (b *BrandingThemeFonts) GetFontURL() string {
	if b == nil {
		return ""
	}
	return b.FontURL
}

func (b *BrandingThemeFonts) GetInputLabels() *BrandingThemeFontInputLabels {
	if b == nil {
		return nil
	}
	return b.InputLabels
}

func (b *BrandingThemeFonts) GetLinks() *BrandingThemeFontLinks {
	if b == nil {
		return nil
	}
	return b.Links
}

func (b *BrandingThemeFonts) GetLinksStyle() BrandingThemeFontLinksStyleEnum {
	if b == nil {
		return ""
	}
	return b.LinksStyle
}

func (b *BrandingThemeFonts) GetReferenceTextSize() float64 {
	if b == nil {
		return 0
	}
	return b.ReferenceTextSize
}

func (b *BrandingThemeFonts) GetSubtitle() *BrandingThemeFontSubtitle {
	if b == nil {
		return nil
	}
	return b.Subtitle
}

func (b *BrandingThemeFonts) GetTitle() *BrandingThemeFontTitle {
	if b == nil {
		return nil
	}
	return b.Title
}

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

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

// SetBodyText sets the BodyText field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeFonts) SetBodyText(bodyText *BrandingThemeFontBodyText) {
	b.BodyText = bodyText
	b.require(brandingThemeFontsFieldBodyText)
}

// SetButtonsText sets the ButtonsText field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeFonts) SetButtonsText(buttonsText *BrandingThemeFontButtonsText) {
	b.ButtonsText = buttonsText
	b.require(brandingThemeFontsFieldButtonsText)
}

// SetFontURL sets the FontURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeFonts) SetFontURL(fontURL string) {
	b.FontURL = fontURL
	b.require(brandingThemeFontsFieldFontURL)
}

// SetInputLabels sets the InputLabels field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeFonts) SetInputLabels(inputLabels *BrandingThemeFontInputLabels) {
	b.InputLabels = inputLabels
	b.require(brandingThemeFontsFieldInputLabels)
}

// SetLinks sets the Links field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeFonts) SetLinks(links *BrandingThemeFontLinks) {
	b.Links = links
	b.require(brandingThemeFontsFieldLinks)
}

// SetLinksStyle sets the LinksStyle field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeFonts) SetLinksStyle(linksStyle BrandingThemeFontLinksStyleEnum) {
	b.LinksStyle = linksStyle
	b.require(brandingThemeFontsFieldLinksStyle)
}

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

// SetSubtitle sets the Subtitle field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeFonts) SetSubtitle(subtitle *BrandingThemeFontSubtitle) {
	b.Subtitle = subtitle
	b.require(brandingThemeFontsFieldSubtitle)
}

// SetTitle sets the Title field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeFonts) SetTitle(title *BrandingThemeFontTitle) {
	b.Title = title
	b.require(brandingThemeFontsFieldTitle)
}

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

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

func (b *BrandingThemeFonts) 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 (
	brandingThemePageBackgroundFieldBackgroundColor    = big.NewInt(1 << 0)
	brandingThemePageBackgroundFieldBackgroundImageURL = big.NewInt(1 << 1)
	brandingThemePageBackgroundFieldPageLayout         = big.NewInt(1 << 2)
)

type BrandingThemePageBackground struct {
	// Background color
	BackgroundColor string `json:"background_color" url:"background_color"`
	// Background image url
	BackgroundImageURL string                                    `json:"background_image_url" url:"background_image_url"`
	PageLayout         BrandingThemePageBackgroundPageLayoutEnum `json:"page_layout" url:"page_layout"`

	// 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 *BrandingThemePageBackground) GetBackgroundColor() string {
	if b == nil {
		return ""
	}
	return b.BackgroundColor
}

func (b *BrandingThemePageBackground) GetBackgroundImageURL() string {
	if b == nil {
		return ""
	}
	return b.BackgroundImageURL
}

func (b *BrandingThemePageBackground) GetPageLayout() BrandingThemePageBackgroundPageLayoutEnum {
	if b == nil {
		return ""
	}
	return b.PageLayout
}

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

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

// SetBackgroundColor sets the BackgroundColor field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemePageBackground) SetBackgroundColor(backgroundColor string) {
	b.BackgroundColor = backgroundColor
	b.require(brandingThemePageBackgroundFieldBackgroundColor)
}

// SetBackgroundImageURL sets the BackgroundImageURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemePageBackground) SetBackgroundImageURL(backgroundImageURL string) {
	b.BackgroundImageURL = backgroundImageURL
	b.require(brandingThemePageBackgroundFieldBackgroundImageURL)
}

// SetPageLayout sets the PageLayout field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemePageBackground) SetPageLayout(pageLayout BrandingThemePageBackgroundPageLayoutEnum) {
	b.PageLayout = pageLayout
	b.require(brandingThemePageBackgroundFieldPageLayout)
}

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

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

func (b *BrandingThemePageBackground) 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)
}

// Page Layout
type BrandingThemePageBackgroundPageLayoutEnum string

const (
	BrandingThemePageBackgroundPageLayoutEnumCenter BrandingThemePageBackgroundPageLayoutEnum = "center"
	BrandingThemePageBackgroundPageLayoutEnumLeft   BrandingThemePageBackgroundPageLayoutEnum = "left"
	BrandingThemePageBackgroundPageLayoutEnumRight  BrandingThemePageBackgroundPageLayoutEnum = "right"
)

func NewBrandingThemePageBackgroundPageLayoutEnumFromString(s string) (BrandingThemePageBackgroundPageLayoutEnum, error) {
	switch s {
	case "center":
		return BrandingThemePageBackgroundPageLayoutEnumCenter, nil
	case "left":
		return BrandingThemePageBackgroundPageLayoutEnumLeft, nil
	case "right":
		return BrandingThemePageBackgroundPageLayoutEnumRight, nil
	}
	var t BrandingThemePageBackgroundPageLayoutEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (b BrandingThemePageBackgroundPageLayoutEnum) Ptr() *BrandingThemePageBackgroundPageLayoutEnum {
	return &b
}

var (
	brandingThemeWidgetFieldHeaderTextAlignment = big.NewInt(1 << 0)
	brandingThemeWidgetFieldLogoHeight          = big.NewInt(1 << 1)
	brandingThemeWidgetFieldLogoPosition        = big.NewInt(1 << 2)
	brandingThemeWidgetFieldLogoURL             = big.NewInt(1 << 3)
	brandingThemeWidgetFieldSocialButtonsLayout = big.NewInt(1 << 4)
)

type BrandingThemeWidget struct {
	HeaderTextAlignment BrandingThemeWidgetHeaderTextAlignmentEnum `json:"header_text_alignment" url:"header_text_alignment"`
	// Logo height
	LogoHeight   float64                             `json:"logo_height" url:"logo_height"`
	LogoPosition BrandingThemeWidgetLogoPositionEnum `json:"logo_position" url:"logo_position"`
	// Logo url
	LogoURL             string                                     `json:"logo_url" url:"logo_url"`
	SocialButtonsLayout BrandingThemeWidgetSocialButtonsLayoutEnum `json:"social_buttons_layout" url:"social_buttons_layout"`

	// 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 *BrandingThemeWidget) GetHeaderTextAlignment() BrandingThemeWidgetHeaderTextAlignmentEnum {
	if b == nil {
		return ""
	}
	return b.HeaderTextAlignment
}

func (b *BrandingThemeWidget) GetLogoHeight() float64 {
	if b == nil {
		return 0
	}
	return b.LogoHeight
}

func (b *BrandingThemeWidget) GetLogoPosition() BrandingThemeWidgetLogoPositionEnum {
	if b == nil {
		return ""
	}
	return b.LogoPosition
}

func (b *BrandingThemeWidget) GetLogoURL() string {
	if b == nil {
		return ""
	}
	return b.LogoURL
}

func (b *BrandingThemeWidget) GetSocialButtonsLayout() BrandingThemeWidgetSocialButtonsLayoutEnum {
	if b == nil {
		return ""
	}
	return b.SocialButtonsLayout
}

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

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

// SetHeaderTextAlignment sets the HeaderTextAlignment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeWidget) SetHeaderTextAlignment(headerTextAlignment BrandingThemeWidgetHeaderTextAlignmentEnum) {
	b.HeaderTextAlignment = headerTextAlignment
	b.require(brandingThemeWidgetFieldHeaderTextAlignment)
}

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

// SetLogoPosition sets the LogoPosition field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeWidget) SetLogoPosition(logoPosition BrandingThemeWidgetLogoPositionEnum) {
	b.LogoPosition = logoPosition
	b.require(brandingThemeWidgetFieldLogoPosition)
}

// SetLogoURL sets the LogoURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeWidget) SetLogoURL(logoURL string) {
	b.LogoURL = logoURL
	b.require(brandingThemeWidgetFieldLogoURL)
}

// SetSocialButtonsLayout sets the SocialButtonsLayout field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BrandingThemeWidget) SetSocialButtonsLayout(socialButtonsLayout BrandingThemeWidgetSocialButtonsLayoutEnum) {
	b.SocialButtonsLayout = socialButtonsLayout
	b.require(brandingThemeWidgetFieldSocialButtonsLayout)
}

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

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

func (b *BrandingThemeWidget) 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)
}

// Header text alignment
type BrandingThemeWidgetHeaderTextAlignmentEnum string

const (
	BrandingThemeWidgetHeaderTextAlignmentEnumCenter BrandingThemeWidgetHeaderTextAlignmentEnum = "center"
	BrandingThemeWidgetHeaderTextAlignmentEnumLeft   BrandingThemeWidgetHeaderTextAlignmentEnum = "left"
	BrandingThemeWidgetHeaderTextAlignmentEnumRight  BrandingThemeWidgetHeaderTextAlignmentEnum = "right"
)

func NewBrandingThemeWidgetHeaderTextAlignmentEnumFromString(s string) (BrandingThemeWidgetHeaderTextAlignmentEnum, error) {
	switch s {
	case "center":
		return BrandingThemeWidgetHeaderTextAlignmentEnumCenter, nil
	case "left":
		return BrandingThemeWidgetHeaderTextAlignmentEnumLeft, nil
	case "right":
		return BrandingThemeWidgetHeaderTextAlignmentEnumRight, nil
	}
	var t BrandingThemeWidgetHeaderTextAlignmentEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (b BrandingThemeWidgetHeaderTextAlignmentEnum) Ptr() *BrandingThemeWidgetHeaderTextAlignmentEnum {
	return &b
}

// Logo position
type BrandingThemeWidgetLogoPositionEnum string

const (
	BrandingThemeWidgetLogoPositionEnumCenter BrandingThemeWidgetLogoPositionEnum = "center"
	BrandingThemeWidgetLogoPositionEnumLeft   BrandingThemeWidgetLogoPositionEnum = "left"
	BrandingThemeWidgetLogoPositionEnumNone   BrandingThemeWidgetLogoPositionEnum = "none"
	BrandingThemeWidgetLogoPositionEnumRight  BrandingThemeWidgetLogoPositionEnum = "right"
)

func NewBrandingThemeWidgetLogoPositionEnumFromString(s string) (BrandingThemeWidgetLogoPositionEnum, error) {
	switch s {
	case "center":
		return BrandingThemeWidgetLogoPositionEnumCenter, nil
	case "left":
		return BrandingThemeWidgetLogoPositionEnumLeft, nil
	case "none":
		return BrandingThemeWidgetLogoPositionEnumNone, nil
	case "right":
		return BrandingThemeWidgetLogoPositionEnumRight, nil
	}
	var t BrandingThemeWidgetLogoPositionEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (b BrandingThemeWidgetLogoPositionEnum) Ptr() *BrandingThemeWidgetLogoPositionEnum {
	return &b
}

// Social buttons layout
type BrandingThemeWidgetSocialButtonsLayoutEnum string

const (
	BrandingThemeWidgetSocialButtonsLayoutEnumBottom BrandingThemeWidgetSocialButtonsLayoutEnum = "bottom"
	BrandingThemeWidgetSocialButtonsLayoutEnumTop    BrandingThemeWidgetSocialButtonsLayoutEnum = "top"
)

func NewBrandingThemeWidgetSocialButtonsLayoutEnumFromString(s string) (BrandingThemeWidgetSocialButtonsLayoutEnum, error) {
	switch s {
	case "bottom":
		return BrandingThemeWidgetSocialButtonsLayoutEnumBottom, nil
	case "top":
		return BrandingThemeWidgetSocialButtonsLayoutEnumTop, nil
	}
	var t BrandingThemeWidgetSocialButtonsLayoutEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (b BrandingThemeWidgetSocialButtonsLayoutEnum) Ptr() *BrandingThemeWidgetSocialButtonsLayoutEnum {
	return &b
}

type BreachedPasswordDetectionAdminNotificationFrequencyEnum string

const (
	BreachedPasswordDetectionAdminNotificationFrequencyEnumImmediately BreachedPasswordDetectionAdminNotificationFrequencyEnum = "immediately"
	BreachedPasswordDetectionAdminNotificationFrequencyEnumDaily       BreachedPasswordDetectionAdminNotificationFrequencyEnum = "daily"
	BreachedPasswordDetectionAdminNotificationFrequencyEnumWeekly      BreachedPasswordDetectionAdminNotificationFrequencyEnum = "weekly"
	BreachedPasswordDetectionAdminNotificationFrequencyEnumMonthly     BreachedPasswordDetectionAdminNotificationFrequencyEnum = "monthly"
)

func NewBreachedPasswordDetectionAdminNotificationFrequencyEnumFromString(s string) (BreachedPasswordDetectionAdminNotificationFrequencyEnum, error) {
	switch s {
	case "immediately":
		return BreachedPasswordDetectionAdminNotificationFrequencyEnumImmediately, nil
	case "daily":
		return BreachedPasswordDetectionAdminNotificationFrequencyEnumDaily, nil
	case "weekly":
		return BreachedPasswordDetectionAdminNotificationFrequencyEnumWeekly, nil
	case "monthly":
		return BreachedPasswordDetectionAdminNotificationFrequencyEnumMonthly, nil
	}
	var t BreachedPasswordDetectionAdminNotificationFrequencyEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (b BreachedPasswordDetectionAdminNotificationFrequencyEnum) Ptr() *BreachedPasswordDetectionAdminNotificationFrequencyEnum {
	return &b
}

// The subscription level for breached password detection methods. Use "enhanced" to enable Credential Guard.
//
//	Possible values: <code>standard</code>, <code>enhanced</code>.
type BreachedPasswordDetectionMethodEnum string

const (
	BreachedPasswordDetectionMethodEnumStandard BreachedPasswordDetectionMethodEnum = "standard"
	BreachedPasswordDetectionMethodEnumEnhanced BreachedPasswordDetectionMethodEnum = "enhanced"
)

func NewBreachedPasswordDetectionMethodEnumFromString(s string) (BreachedPasswordDetectionMethodEnum, error) {
	switch s {
	case "standard":
		return BreachedPasswordDetectionMethodEnumStandard, nil
	case "enhanced":
		return BreachedPasswordDetectionMethodEnumEnhanced, nil
	}
	var t BreachedPasswordDetectionMethodEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (b BreachedPasswordDetectionMethodEnum) Ptr() *BreachedPasswordDetectionMethodEnum {
	return &b
}

type BreachedPasswordDetectionPreChangePasswordShieldsEnum string

const (
	BreachedPasswordDetectionPreChangePasswordShieldsEnumBlock             BreachedPasswordDetectionPreChangePasswordShieldsEnum = "block"
	BreachedPasswordDetectionPreChangePasswordShieldsEnumAdminNotification BreachedPasswordDetectionPreChangePasswordShieldsEnum = "admin_notification"
)

func NewBreachedPasswordDetectionPreChangePasswordShieldsEnumFromString(s string) (BreachedPasswordDetectionPreChangePasswordShieldsEnum, error) {
	switch s {
	case "block":
		return BreachedPasswordDetectionPreChangePasswordShieldsEnumBlock, nil
	case "admin_notification":
		return BreachedPasswordDetectionPreChangePasswordShieldsEnumAdminNotification, nil
	}
	var t BreachedPasswordDetectionPreChangePasswordShieldsEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (b BreachedPasswordDetectionPreChangePasswordShieldsEnum) Ptr() *BreachedPasswordDetectionPreChangePasswordShieldsEnum {
	return &b
}

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

type BreachedPasswordDetectionPreChangePasswordStage struct {
	// Action to take when a breached password is detected during a password reset.
	//
	//	Possible values: <code>block</code>, <code>admin_notification</code>.
	Shields []BreachedPasswordDetectionPreChangePasswordShieldsEnum `json:"shields,omitempty" url:"shields,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 (b *BreachedPasswordDetectionPreChangePasswordStage) GetShields() []BreachedPasswordDetectionPreChangePasswordShieldsEnum {
	if b == nil || b.Shields == nil {
		return nil
	}
	return b.Shields
}

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

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

// SetShields sets the Shields field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BreachedPasswordDetectionPreChangePasswordStage) SetShields(shields []BreachedPasswordDetectionPreChangePasswordShieldsEnum) {
	b.Shields = shields
	b.require(breachedPasswordDetectionPreChangePasswordStageFieldShields)
}

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

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

func (b *BreachedPasswordDetectionPreChangePasswordStage) 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)
}

type BreachedPasswordDetectionPreUserRegistrationShieldsEnum string

const (
	BreachedPasswordDetectionPreUserRegistrationShieldsEnumBlock             BreachedPasswordDetectionPreUserRegistrationShieldsEnum = "block"
	BreachedPasswordDetectionPreUserRegistrationShieldsEnumAdminNotification BreachedPasswordDetectionPreUserRegistrationShieldsEnum = "admin_notification"
)

func NewBreachedPasswordDetectionPreUserRegistrationShieldsEnumFromString(s string) (BreachedPasswordDetectionPreUserRegistrationShieldsEnum, error) {
	switch s {
	case "block":
		return BreachedPasswordDetectionPreUserRegistrationShieldsEnumBlock, nil
	case "admin_notification":
		return BreachedPasswordDetectionPreUserRegistrationShieldsEnumAdminNotification, nil
	}
	var t BreachedPasswordDetectionPreUserRegistrationShieldsEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (b BreachedPasswordDetectionPreUserRegistrationShieldsEnum) Ptr() *BreachedPasswordDetectionPreUserRegistrationShieldsEnum {
	return &b
}

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

type BreachedPasswordDetectionPreUserRegistrationStage struct {
	// Action to take when a breached password is detected during a signup.
	//
	//	Possible values: <code>block</code>, <code>admin_notification</code>.
	Shields []BreachedPasswordDetectionPreUserRegistrationShieldsEnum `json:"shields,omitempty" url:"shields,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 (b *BreachedPasswordDetectionPreUserRegistrationStage) GetShields() []BreachedPasswordDetectionPreUserRegistrationShieldsEnum {
	if b == nil || b.Shields == nil {
		return nil
	}
	return b.Shields
}

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

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

// SetShields sets the Shields field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BreachedPasswordDetectionPreUserRegistrationStage) SetShields(shields []BreachedPasswordDetectionPreUserRegistrationShieldsEnum) {
	b.Shields = shields
	b.require(breachedPasswordDetectionPreUserRegistrationStageFieldShields)
}

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

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

func (b *BreachedPasswordDetectionPreUserRegistrationStage) 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)
}

type BreachedPasswordDetectionShieldsEnum string

const (
	BreachedPasswordDetectionShieldsEnumBlock             BreachedPasswordDetectionShieldsEnum = "block"
	BreachedPasswordDetectionShieldsEnumUserNotification  BreachedPasswordDetectionShieldsEnum = "user_notification"
	BreachedPasswordDetectionShieldsEnumAdminNotification BreachedPasswordDetectionShieldsEnum = "admin_notification"
)

func NewBreachedPasswordDetectionShieldsEnumFromString(s string) (BreachedPasswordDetectionShieldsEnum, error) {
	switch s {
	case "block":
		return BreachedPasswordDetectionShieldsEnumBlock, nil
	case "user_notification":
		return BreachedPasswordDetectionShieldsEnumUserNotification, nil
	case "admin_notification":
		return BreachedPasswordDetectionShieldsEnumAdminNotification, nil
	}
	var t BreachedPasswordDetectionShieldsEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (b BreachedPasswordDetectionShieldsEnum) Ptr() *BreachedPasswordDetectionShieldsEnum {
	return &b
}

var (
	breachedPasswordDetectionStageFieldPreUserRegistration = big.NewInt(1 << 0)
	breachedPasswordDetectionStageFieldPreChangePassword   = big.NewInt(1 << 1)
)

type BreachedPasswordDetectionStage struct {
	PreUserRegistration *BreachedPasswordDetectionPreUserRegistrationStage `json:"pre-user-registration,omitempty" url:"pre-user-registration,omitempty"`
	PreChangePassword   *BreachedPasswordDetectionPreChangePasswordStage   `json:"pre-change-password,omitempty" url:"pre-change-password,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 (b *BreachedPasswordDetectionStage) GetPreUserRegistration() BreachedPasswordDetectionPreUserRegistrationStage {
	if b == nil || b.PreUserRegistration == nil {
		return BreachedPasswordDetectionPreUserRegistrationStage{}
	}
	return *b.PreUserRegistration
}

func (b *BreachedPasswordDetectionStage) GetPreChangePassword() BreachedPasswordDetectionPreChangePasswordStage {
	if b == nil || b.PreChangePassword == nil {
		return BreachedPasswordDetectionPreChangePasswordStage{}
	}
	return *b.PreChangePassword
}

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

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

// SetPreUserRegistration sets the PreUserRegistration field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BreachedPasswordDetectionStage) SetPreUserRegistration(preUserRegistration *BreachedPasswordDetectionPreUserRegistrationStage) {
	b.PreUserRegistration = preUserRegistration
	b.require(breachedPasswordDetectionStageFieldPreUserRegistration)
}

// SetPreChangePassword sets the PreChangePassword field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (b *BreachedPasswordDetectionStage) SetPreChangePassword(preChangePassword *BreachedPasswordDetectionPreChangePasswordStage) {
	b.PreChangePassword = preChangePassword
	b.require(breachedPasswordDetectionStageFieldPreChangePassword)
}

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

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

func (b *BreachedPasswordDetectionStage) 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 (
	clientCredentialFieldID               = big.NewInt(1 << 0)
	clientCredentialFieldName             = big.NewInt(1 << 1)
	clientCredentialFieldKid              = big.NewInt(1 << 2)
	clientCredentialFieldAlg              = big.NewInt(1 << 3)
	clientCredentialFieldCredentialType   = big.NewInt(1 << 4)
	clientCredentialFieldSubjectDn        = big.NewInt(1 << 5)
	clientCredentialFieldThumbprintSha256 = big.NewInt(1 << 6)
	clientCredentialFieldCreatedAt        = big.NewInt(1 << 7)
	clientCredentialFieldUpdatedAt        = big.NewInt(1 << 8)
	clientCredentialFieldExpiresAt        = big.NewInt(1 << 9)
)

type ClientCredential struct {
	// ID of the credential. Generated on creation.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name given to the credential by the user.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// The key identifier of the credential, generated on creation.
	Kid            *string                        `json:"kid,omitempty" url:"kid,omitempty"`
	Alg            *ClientCredentialAlgorithmEnum `json:"alg,omitempty" url:"alg,omitempty"`
	CredentialType *ClientCredentialTypeEnum      `json:"credential_type,omitempty" url:"credential_type,omitempty"`
	// The X509 certificate's Subject Distinguished Name
	SubjectDn *string `json:"subject_dn,omitempty" url:"subject_dn,omitempty"`
	// The X509 certificate's SHA256 thumbprint
	ThumbprintSha256 *string `json:"thumbprint_sha256,omitempty" url:"thumbprint_sha256,omitempty"`
	// The ISO 8601 formatted date the credential was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The ISO 8601 formatted date the credential was updated.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,omitempty"`
	// The ISO 8601 formatted date representing the expiration of the credential.
	ExpiresAt *time.Time `json:"expires_at,omitempty" url:"expires_at,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

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

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

func (c *ClientCredential) GetKid() string {
	if c == nil || c.Kid == nil {
		return ""
	}
	return *c.Kid
}

func (c *ClientCredential) GetAlg() ClientCredentialAlgorithmEnum {
	if c == nil || c.Alg == nil {
		return ""
	}
	return *c.Alg
}

func (c *ClientCredential) GetCredentialType() ClientCredentialTypeEnum {
	if c == nil || c.CredentialType == nil {
		return ""
	}
	return *c.CredentialType
}

func (c *ClientCredential) GetSubjectDn() string {
	if c == nil || c.SubjectDn == nil {
		return ""
	}
	return *c.SubjectDn
}

func (c *ClientCredential) GetThumbprintSha256() string {
	if c == nil || c.ThumbprintSha256 == nil {
		return ""
	}
	return *c.ThumbprintSha256
}

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

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

func (c *ClientCredential) GetExpiresAt() time.Time {
	if c == nil || c.ExpiresAt == nil {
		return time.Time{}
	}
	return *c.ExpiresAt
}

func (c *ClientCredential) GetExtraProperties() map[string]interface{} {
	return c.ExtraProperties
}

func (c *ClientCredential) 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 *ClientCredential) SetID(id *string) {
	c.ID = id
	c.require(clientCredentialFieldID)
}

// 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 *ClientCredential) SetName(name *string) {
	c.Name = name
	c.require(clientCredentialFieldName)
}

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ClientCredential) SetKid(kid *string) {
	c.Kid = kid
	c.require(clientCredentialFieldKid)
}

// SetAlg sets the Alg field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ClientCredential) SetAlg(alg *ClientCredentialAlgorithmEnum) {
	c.Alg = alg
	c.require(clientCredentialFieldAlg)
}

// SetCredentialType sets the CredentialType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ClientCredential) SetCredentialType(credentialType *ClientCredentialTypeEnum) {
	c.CredentialType = credentialType
	c.require(clientCredentialFieldCredentialType)
}

// SetSubjectDn sets the SubjectDn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ClientCredential) SetSubjectDn(subjectDn *string) {
	c.SubjectDn = subjectDn
	c.require(clientCredentialFieldSubjectDn)
}

// SetThumbprintSha256 sets the ThumbprintSha256 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ClientCredential) SetThumbprintSha256(thumbprintSha256 *string) {
	c.ThumbprintSha256 = thumbprintSha256
	c.require(clientCredentialFieldThumbprintSha256)
}

// 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 *ClientCredential) SetCreatedAt(createdAt *time.Time) {
	c.CreatedAt = createdAt
	c.require(clientCredentialFieldCreatedAt)
}

// 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 *ClientCredential) SetUpdatedAt(updatedAt *time.Time) {
	c.UpdatedAt = updatedAt
	c.require(clientCredentialFieldUpdatedAt)
}

// SetExpiresAt sets the ExpiresAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ClientCredential) SetExpiresAt(expiresAt *time.Time) {
	c.ExpiresAt = expiresAt
	c.require(clientCredentialFieldExpiresAt)
}

func (c *ClientCredential) UnmarshalJSON(data []byte) error {
	type embed ClientCredential
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed: embed(*c),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*c = ClientCredential(unmarshaler.embed)
	c.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	c.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	c.ExpiresAt = unmarshaler.ExpiresAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *c)
	if err != nil {
		return err
	}
	c.ExtraProperties = extraProperties
	c.rawJSON = json.RawMessage(data)
	return nil
}

func (c *ClientCredential) MarshalJSON() ([]byte, error) {
	type embed ClientCredential
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed:     embed(*c),
		CreatedAt: internal.NewOptionalDateTime(c.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(c.UpdatedAt),
		ExpiresAt: internal.NewOptionalDateTime(c.ExpiresAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, c.ExtraProperties)
}

func (c *ClientCredential) 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)
}

// Algorithm which will be used with the credential. Supported algorithms: RS256,RS384,PS256
type ClientCredentialAlgorithmEnum string

const (
	ClientCredentialAlgorithmEnumRs256 ClientCredentialAlgorithmEnum = "RS256"
	ClientCredentialAlgorithmEnumRs384 ClientCredentialAlgorithmEnum = "RS384"
	ClientCredentialAlgorithmEnumPs256 ClientCredentialAlgorithmEnum = "PS256"
)

func NewClientCredentialAlgorithmEnumFromString(s string) (ClientCredentialAlgorithmEnum, error) {
	switch s {
	case "RS256":
		return ClientCredentialAlgorithmEnumRs256, nil
	case "RS384":
		return ClientCredentialAlgorithmEnumRs384, nil
	case "PS256":
		return ClientCredentialAlgorithmEnumPs256, nil
	}
	var t ClientCredentialAlgorithmEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (c ClientCredentialAlgorithmEnum) Ptr() *ClientCredentialAlgorithmEnum {
	return &c
}

// The type of credential.
type ClientCredentialTypeEnum string

const (
	ClientCredentialTypeEnumPublicKey     ClientCredentialTypeEnum = "public_key"
	ClientCredentialTypeEnumCertSubjectDn ClientCredentialTypeEnum = "cert_subject_dn"
	ClientCredentialTypeEnumX509Cert      ClientCredentialTypeEnum = "x509_cert"
)

func NewClientCredentialTypeEnumFromString(s string) (ClientCredentialTypeEnum, error) {
	switch s {
	case "public_key":
		return ClientCredentialTypeEnumPublicKey, nil
	case "cert_subject_dn":
		return ClientCredentialTypeEnumCertSubjectDn, nil
	case "x509_cert":
		return ClientCredentialTypeEnumX509Cert, nil
	}
	var t ClientCredentialTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (c ClientCredentialTypeEnum) Ptr() *ClientCredentialTypeEnum {
	return &c
}

var (
	connectedAccountFieldID           = big.NewInt(1 << 0)
	connectedAccountFieldConnection   = big.NewInt(1 << 1)
	connectedAccountFieldConnectionID = big.NewInt(1 << 2)
	connectedAccountFieldStrategy     = big.NewInt(1 << 3)
	connectedAccountFieldAccessType   = big.NewInt(1 << 4)
	connectedAccountFieldScopes       = big.NewInt(1 << 5)
	connectedAccountFieldCreatedAt    = big.NewInt(1 << 6)
	connectedAccountFieldExpiresAt    = big.NewInt(1 << 7)
)

type ConnectedAccount struct {
	// The unique identifier for the connected account.
	ID string `json:"id" url:"id"`
	// The name of the connection associated with the account.
	Connection string `json:"connection" url:"connection"`
	// The unique identifier of the connection associated with the account.
	ConnectionID string `json:"connection_id" url:"connection_id"`
	// The authentication strategy used by the connection.
	Strategy   string                         `json:"strategy" url:"strategy"`
	AccessType ConnectedAccountAccessTypeEnum `json:"access_type" url:"access_type"`
	// The scopes granted for this connected account.
	Scopes []string `json:"scopes,omitempty" url:"scopes,omitempty"`
	// ISO 8601 timestamp when the connected account was created.
	CreatedAt time.Time `json:"created_at" url:"created_at"`
	// ISO 8601 timestamp when the connected account expires.
	ExpiresAt *time.Time `json:"expires_at,omitempty" url:"expires_at,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 (c *ConnectedAccount) GetID() string {
	if c == nil {
		return ""
	}
	return c.ID
}

func (c *ConnectedAccount) GetConnection() string {
	if c == nil {
		return ""
	}
	return c.Connection
}

func (c *ConnectedAccount) GetConnectionID() string {
	if c == nil {
		return ""
	}
	return c.ConnectionID
}

func (c *ConnectedAccount) GetStrategy() string {
	if c == nil {
		return ""
	}
	return c.Strategy
}

func (c *ConnectedAccount) GetScopes() []string {
	if c == nil || c.Scopes == nil {
		return nil
	}
	return c.Scopes
}

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

func (c *ConnectedAccount) GetExpiresAt() time.Time {
	if c == nil || c.ExpiresAt == nil {
		return time.Time{}
	}
	return *c.ExpiresAt
}

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

func (c *ConnectedAccount) 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 *ConnectedAccount) SetID(id string) {
	c.ID = id
	c.require(connectedAccountFieldID)
}

// SetConnection sets the Connection field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectedAccount) SetConnection(connection string) {
	c.Connection = connection
	c.require(connectedAccountFieldConnection)
}

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectedAccount) SetConnectionID(connectionID string) {
	c.ConnectionID = connectionID
	c.require(connectedAccountFieldConnectionID)
}

// SetStrategy sets the Strategy field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectedAccount) SetStrategy(strategy string) {
	c.Strategy = strategy
	c.require(connectedAccountFieldStrategy)
}

// SetAccessType sets the AccessType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectedAccount) SetAccessType(accessType ConnectedAccountAccessTypeEnum) {
	c.AccessType = accessType
	c.require(connectedAccountFieldAccessType)
}

// SetScopes sets the Scopes field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectedAccount) SetScopes(scopes []string) {
	c.Scopes = scopes
	c.require(connectedAccountFieldScopes)
}

// 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 *ConnectedAccount) SetCreatedAt(createdAt time.Time) {
	c.CreatedAt = createdAt
	c.require(connectedAccountFieldCreatedAt)
}

// SetExpiresAt sets the ExpiresAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectedAccount) SetExpiresAt(expiresAt *time.Time) {
	c.ExpiresAt = expiresAt
	c.require(connectedAccountFieldExpiresAt)
}

func (c *ConnectedAccount) UnmarshalJSON(data []byte) error {
	type embed ConnectedAccount
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed: embed(*c),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*c = ConnectedAccount(unmarshaler.embed)
	c.CreatedAt = unmarshaler.CreatedAt.Time()
	c.ExpiresAt = unmarshaler.ExpiresAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *c)
	if err != nil {
		return err
	}
	c.extraProperties = extraProperties
	c.rawJSON = json.RawMessage(data)
	return nil
}

func (c *ConnectedAccount) MarshalJSON() ([]byte, error) {
	type embed ConnectedAccount
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed:     embed(*c),
		CreatedAt: internal.NewDateTime(c.CreatedAt),
		ExpiresAt: internal.NewOptionalDateTime(c.ExpiresAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (c *ConnectedAccount) 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)
}

// The access type for the connected account.
type ConnectedAccountAccessTypeEnum = string

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

type ConnectionEnabledClient struct {
	// The client id
	ClientID string `json:"client_id" url:"client_id"`

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

	ExtraProperties map[string]interface{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (c *ConnectionEnabledClient) GetClientID() string {
	if c == nil {
		return ""
	}
	return c.ClientID
}

func (c *ConnectionEnabledClient) GetExtraProperties() map[string]interface{} {
	return c.ExtraProperties
}

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

// SetClientID sets the ClientID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionEnabledClient) SetClientID(clientID string) {
	c.ClientID = clientID
	c.require(connectionEnabledClientFieldClientID)
}

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

func (c *ConnectionEnabledClient) MarshalJSON() ([]byte, error) {
	type embed ConnectionEnabledClient
	var marshaler = struct {
		embed
	}{
		embed: embed(*c),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, c.ExtraProperties)
}

func (c *ConnectionEnabledClient) 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 (
	connectionForListFieldName               = big.NewInt(1 << 0)
	connectionForListFieldDisplayName        = big.NewInt(1 << 1)
	connectionForListFieldOptions            = big.NewInt(1 << 2)
	connectionForListFieldID                 = big.NewInt(1 << 3)
	connectionForListFieldStrategy           = big.NewInt(1 << 4)
	connectionForListFieldRealms             = big.NewInt(1 << 5)
	connectionForListFieldIsDomainConnection = big.NewInt(1 << 6)
	connectionForListFieldShowAsButton       = big.NewInt(1 << 7)
	connectionForListFieldMetadata           = big.NewInt(1 << 8)
)

type ConnectionForList struct {
	// The name of the connection
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Connection name used in login screen
	DisplayName *string            `json:"display_name,omitempty" url:"display_name,omitempty"`
	Options     *ConnectionOptions `json:"options,omitempty" url:"options,omitempty"`
	// The connection's identifier
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The type of the connection, related to the identity provider
	Strategy *string `json:"strategy,omitempty" url:"strategy,omitempty"`
	// Defines the realms for which the connection will be used (ie: email domains). If the array is empty or the property is not specified, the connection name will be added as realm.
	Realms []string `json:"realms,omitempty" url:"realms,omitempty"`
	// True if the connection is domain level
	IsDomainConnection *bool `json:"is_domain_connection,omitempty" url:"is_domain_connection,omitempty"`
	// Enables showing a button for the connection in the login page (new experience only). If false, it will be usable only by HRD.
	ShowAsButton *bool                `json:"show_as_button,omitempty" url:"show_as_button,omitempty"`
	Metadata     *ConnectionsMetadata `json:"metadata,omitempty" url:"metadata,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 (c *ConnectionForList) GetName() string {
	if c == nil || c.Name == nil {
		return ""
	}
	return *c.Name
}

func (c *ConnectionForList) GetDisplayName() string {
	if c == nil || c.DisplayName == nil {
		return ""
	}
	return *c.DisplayName
}

func (c *ConnectionForList) GetOptions() ConnectionOptions {
	if c == nil || c.Options == nil {
		return nil
	}
	return *c.Options
}

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

func (c *ConnectionForList) GetStrategy() string {
	if c == nil || c.Strategy == nil {
		return ""
	}
	return *c.Strategy
}

func (c *ConnectionForList) GetRealms() []string {
	if c == nil || c.Realms == nil {
		return nil
	}
	return c.Realms
}

func (c *ConnectionForList) GetIsDomainConnection() bool {
	if c == nil || c.IsDomainConnection == nil {
		return false
	}
	return *c.IsDomainConnection
}

func (c *ConnectionForList) GetShowAsButton() bool {
	if c == nil || c.ShowAsButton == nil {
		return false
	}
	return *c.ShowAsButton
}

func (c *ConnectionForList) GetMetadata() ConnectionsMetadata {
	if c == nil || c.Metadata == nil {
		return nil
	}
	return *c.Metadata
}

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

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

// 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 *ConnectionForList) SetName(name *string) {
	c.Name = name
	c.require(connectionForListFieldName)
}

// SetDisplayName sets the DisplayName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionForList) SetDisplayName(displayName *string) {
	c.DisplayName = displayName
	c.require(connectionForListFieldDisplayName)
}

// SetOptions sets the Options field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionForList) SetOptions(options *ConnectionOptions) {
	c.Options = options
	c.require(connectionForListFieldOptions)
}

// 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 *ConnectionForList) SetID(id *string) {
	c.ID = id
	c.require(connectionForListFieldID)
}

// SetStrategy sets the Strategy field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionForList) SetStrategy(strategy *string) {
	c.Strategy = strategy
	c.require(connectionForListFieldStrategy)
}

// SetRealms sets the Realms field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionForList) SetRealms(realms []string) {
	c.Realms = realms
	c.require(connectionForListFieldRealms)
}

// SetIsDomainConnection sets the IsDomainConnection field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionForList) SetIsDomainConnection(isDomainConnection *bool) {
	c.IsDomainConnection = isDomainConnection
	c.require(connectionForListFieldIsDomainConnection)
}

// SetShowAsButton sets the ShowAsButton field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionForList) SetShowAsButton(showAsButton *bool) {
	c.ShowAsButton = showAsButton
	c.require(connectionForListFieldShowAsButton)
}

// 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 *ConnectionForList) SetMetadata(metadata *ConnectionsMetadata) {
	c.Metadata = metadata
	c.require(connectionForListFieldMetadata)
}

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

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

func (c *ConnectionForList) 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 (
	connectionKeyFieldKid          = big.NewInt(1 << 0)
	connectionKeyFieldCert         = big.NewInt(1 << 1)
	connectionKeyFieldPkcs         = big.NewInt(1 << 2)
	connectionKeyFieldCurrent      = big.NewInt(1 << 3)
	connectionKeyFieldNext         = big.NewInt(1 << 4)
	connectionKeyFieldPrevious     = big.NewInt(1 << 5)
	connectionKeyFieldCurrentSince = big.NewInt(1 << 6)
	connectionKeyFieldFingerprint  = big.NewInt(1 << 7)
	connectionKeyFieldThumbprint   = big.NewInt(1 << 8)
	connectionKeyFieldAlgorithm    = big.NewInt(1 << 9)
	connectionKeyFieldKeyUse       = big.NewInt(1 << 10)
	connectionKeyFieldSubjectDn    = big.NewInt(1 << 11)
)

type ConnectionKey struct {
	// The key id of the signing key
	Kid string `json:"kid" url:"kid"`
	// The public certificate of the signing key
	Cert string `json:"cert" url:"cert"`
	// The public certificate of the signing key in pkcs7 format
	Pkcs *string `json:"pkcs,omitempty" url:"pkcs,omitempty"`
	// True if the key is the the current key
	Current *bool `json:"current,omitempty" url:"current,omitempty"`
	// True if the key is the the next key
	Next *bool `json:"next,omitempty" url:"next,omitempty"`
	// True if the key is the the previous key
	Previous *bool `json:"previous,omitempty" url:"previous,omitempty"`
	// The date and time when the key became the current key
	CurrentSince *string `json:"current_since,omitempty" url:"current_since,omitempty"`
	// The cert fingerprint
	Fingerprint string `json:"fingerprint" url:"fingerprint"`
	// The cert thumbprint
	Thumbprint string `json:"thumbprint" url:"thumbprint"`
	// Signing key algorithm
	Algorithm *string               `json:"algorithm,omitempty" url:"algorithm,omitempty"`
	KeyUse    *ConnectionKeyUseEnum `json:"key_use,omitempty" url:"key_use,omitempty"`
	SubjectDn *string               `json:"subject_dn,omitempty" url:"subject_dn,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (c *ConnectionKey) GetKid() string {
	if c == nil {
		return ""
	}
	return c.Kid
}

func (c *ConnectionKey) GetCert() string {
	if c == nil {
		return ""
	}
	return c.Cert
}

func (c *ConnectionKey) GetPkcs() string {
	if c == nil || c.Pkcs == nil {
		return ""
	}
	return *c.Pkcs
}

func (c *ConnectionKey) GetCurrent() bool {
	if c == nil || c.Current == nil {
		return false
	}
	return *c.Current
}

func (c *ConnectionKey) GetNext() bool {
	if c == nil || c.Next == nil {
		return false
	}
	return *c.Next
}

func (c *ConnectionKey) GetPrevious() bool {
	if c == nil || c.Previous == nil {
		return false
	}
	return *c.Previous
}

func (c *ConnectionKey) GetCurrentSince() string {
	if c == nil || c.CurrentSince == nil {
		return ""
	}
	return *c.CurrentSince
}

func (c *ConnectionKey) GetFingerprint() string {
	if c == nil {
		return ""
	}
	return c.Fingerprint
}

func (c *ConnectionKey) GetThumbprint() string {
	if c == nil {
		return ""
	}
	return c.Thumbprint
}

func (c *ConnectionKey) GetAlgorithm() string {
	if c == nil || c.Algorithm == nil {
		return ""
	}
	return *c.Algorithm
}

func (c *ConnectionKey) GetKeyUse() ConnectionKeyUseEnum {
	if c == nil || c.KeyUse == nil {
		return ""
	}
	return *c.KeyUse
}

func (c *ConnectionKey) GetSubjectDn() string {
	if c == nil || c.SubjectDn == nil {
		return ""
	}
	return *c.SubjectDn
}

func (c *ConnectionKey) GetExtraProperties() map[string]interface{} {
	return c.ExtraProperties
}

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

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionKey) SetKid(kid string) {
	c.Kid = kid
	c.require(connectionKeyFieldKid)
}

// SetCert sets the Cert field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionKey) SetCert(cert string) {
	c.Cert = cert
	c.require(connectionKeyFieldCert)
}

// SetPkcs sets the Pkcs field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionKey) SetPkcs(pkcs *string) {
	c.Pkcs = pkcs
	c.require(connectionKeyFieldPkcs)
}

// SetCurrent sets the Current field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionKey) SetCurrent(current *bool) {
	c.Current = current
	c.require(connectionKeyFieldCurrent)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionKey) SetNext(next *bool) {
	c.Next = next
	c.require(connectionKeyFieldNext)
}

// SetPrevious sets the Previous field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionKey) SetPrevious(previous *bool) {
	c.Previous = previous
	c.require(connectionKeyFieldPrevious)
}

// SetCurrentSince sets the CurrentSince field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionKey) SetCurrentSince(currentSince *string) {
	c.CurrentSince = currentSince
	c.require(connectionKeyFieldCurrentSince)
}

// SetFingerprint sets the Fingerprint field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionKey) SetFingerprint(fingerprint string) {
	c.Fingerprint = fingerprint
	c.require(connectionKeyFieldFingerprint)
}

// SetThumbprint sets the Thumbprint field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionKey) SetThumbprint(thumbprint string) {
	c.Thumbprint = thumbprint
	c.require(connectionKeyFieldThumbprint)
}

// SetAlgorithm sets the Algorithm field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionKey) SetAlgorithm(algorithm *string) {
	c.Algorithm = algorithm
	c.require(connectionKeyFieldAlgorithm)
}

// SetKeyUse sets the KeyUse field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionKey) SetKeyUse(keyUse *ConnectionKeyUseEnum) {
	c.KeyUse = keyUse
	c.require(connectionKeyFieldKeyUse)
}

// SetSubjectDn sets the SubjectDn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *ConnectionKey) SetSubjectDn(subjectDn *string) {
	c.SubjectDn = subjectDn
	c.require(connectionKeyFieldSubjectDn)
}

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

func (c *ConnectionKey) MarshalJSON() ([]byte, error) {
	type embed ConnectionKey
	var marshaler = struct {
		embed
	}{
		embed: embed(*c),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, c.ExtraProperties)
}

func (c *ConnectionKey) 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)
}

// Signing key use, whether for encryption or signing
type ConnectionKeyUseEnum string

const (
	ConnectionKeyUseEnumEncryption ConnectionKeyUseEnum = "encryption"
	ConnectionKeyUseEnumSigning    ConnectionKeyUseEnum = "signing"
)

func NewConnectionKeyUseEnumFromString(s string) (ConnectionKeyUseEnum, error) {
	switch s {
	case "encryption":
		return ConnectionKeyUseEnumEncryption, nil
	case "signing":
		return ConnectionKeyUseEnumSigning, nil
	}
	var t ConnectionKeyUseEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (c ConnectionKeyUseEnum) Ptr() *ConnectionKeyUseEnum {
	return &c
}

// In order to return options in the response, the `read:connections_options` scope must be present
type ConnectionOptions = map[string]interface{}

type ConnectionStrategyEnum string

const (
	ConnectionStrategyEnumAd                  ConnectionStrategyEnum = "ad"
	ConnectionStrategyEnumAdfs                ConnectionStrategyEnum = "adfs"
	ConnectionStrategyEnumAmazon              ConnectionStrategyEnum = "amazon"
	ConnectionStrategyEnumApple               ConnectionStrategyEnum = "apple"
	ConnectionStrategyEnumDropbox             ConnectionStrategyEnum = "dropbox"
	ConnectionStrategyEnumBitbucket           ConnectionStrategyEnum = "bitbucket"
	ConnectionStrategyEnumAol                 ConnectionStrategyEnum = "aol"
	ConnectionStrategyEnumAuth0Oidc           ConnectionStrategyEnum = "auth0-oidc"
	ConnectionStrategyEnumAuth0               ConnectionStrategyEnum = "auth0"
	ConnectionStrategyEnumBaidu               ConnectionStrategyEnum = "baidu"
	ConnectionStrategyEnumBitly               ConnectionStrategyEnum = "bitly"
	ConnectionStrategyEnumBox                 ConnectionStrategyEnum = "box"
	ConnectionStrategyEnumCustom              ConnectionStrategyEnum = "custom"
	ConnectionStrategyEnumDaccount            ConnectionStrategyEnum = "daccount"
	ConnectionStrategyEnumDwolla              ConnectionStrategyEnum = "dwolla"
	ConnectionStrategyEnumEmail               ConnectionStrategyEnum = "email"
	ConnectionStrategyEnumEvernoteSandbox     ConnectionStrategyEnum = "evernote-sandbox"
	ConnectionStrategyEnumEvernote            ConnectionStrategyEnum = "evernote"
	ConnectionStrategyEnumExact               ConnectionStrategyEnum = "exact"
	ConnectionStrategyEnumFacebook            ConnectionStrategyEnum = "facebook"
	ConnectionStrategyEnumFitbit              ConnectionStrategyEnum = "fitbit"
	ConnectionStrategyEnumFlickr              ConnectionStrategyEnum = "flickr"
	ConnectionStrategyEnumGithub              ConnectionStrategyEnum = "github"
	ConnectionStrategyEnumGoogleApps          ConnectionStrategyEnum = "google-apps"
	ConnectionStrategyEnumGoogleOauth2        ConnectionStrategyEnum = "google-oauth2"
	ConnectionStrategyEnumInstagram           ConnectionStrategyEnum = "instagram"
	ConnectionStrategyEnumIP                  ConnectionStrategyEnum = "ip"
	ConnectionStrategyEnumLine                ConnectionStrategyEnum = "line"
	ConnectionStrategyEnumLinkedin            ConnectionStrategyEnum = "linkedin"
	ConnectionStrategyEnumMiicard             ConnectionStrategyEnum = "miicard"
	ConnectionStrategyEnumOauth1              ConnectionStrategyEnum = "oauth1"
	ConnectionStrategyEnumOauth2              ConnectionStrategyEnum = "oauth2"
	ConnectionStrategyEnumOffice365           ConnectionStrategyEnum = "office365"
	ConnectionStrategyEnumOidc                ConnectionStrategyEnum = "oidc"
	ConnectionStrategyEnumOkta                ConnectionStrategyEnum = "okta"
	ConnectionStrategyEnumPaypal              ConnectionStrategyEnum = "paypal"
	ConnectionStrategyEnumPaypalSandbox       ConnectionStrategyEnum = "paypal-sandbox"
	ConnectionStrategyEnumPingfederate        ConnectionStrategyEnum = "pingfederate"
	ConnectionStrategyEnumPlanningcenter      ConnectionStrategyEnum = "planningcenter"
	ConnectionStrategyEnumRenren              ConnectionStrategyEnum = "renren"
	ConnectionStrategyEnumSalesforceCommunity ConnectionStrategyEnum = "salesforce-community"
	ConnectionStrategyEnumSalesforceSandbox   ConnectionStrategyEnum = "salesforce-sandbox"
	ConnectionStrategyEnumSalesforce          ConnectionStrategyEnum = "salesforce"
	ConnectionStrategyEnumSamlp               ConnectionStrategyEnum = "samlp"
	ConnectionStrategyEnumSharepoint          ConnectionStrategyEnum = "sharepoint"
	ConnectionStrategyEnumShopify             ConnectionStrategyEnum = "shopify"
	ConnectionStrategyEnumShop                ConnectionStrategyEnum = "shop"
	ConnectionStrategyEnumSms                 ConnectionStrategyEnum = "sms"
	ConnectionStrategyEnumSoundcloud          ConnectionStrategyEnum = "soundcloud"
	ConnectionStrategyEnumThecitySandbox      ConnectionStrategyEnum = "thecity-sandbox"
	ConnectionStrategyEnumThecity             ConnectionStrategyEnum = "thecity"
	ConnectionStrategyEnumThirtysevensignals  ConnectionStrategyEnum = "thirtysevensignals"
	ConnectionStrategyEnumTwitter             ConnectionStrategyEnum = "twitter"
	ConnectionStrategyEnumUntappd             ConnectionStrategyEnum = "untappd"
	ConnectionStrategyEnumVkontakte           ConnectionStrategyEnum = "vkontakte"
	ConnectionStrategyEnumWaad                ConnectionStrategyEnum = "waad"
	ConnectionStrategyEnumWeibo               ConnectionStrategyEnum = "weibo"
	ConnectionStrategyEnumWindowslive         ConnectionStrategyEnum = "windowslive"
	ConnectionStrategyEnumWordpress           ConnectionStrategyEnum = "wordpress"
	ConnectionStrategyEnumYahoo               ConnectionStrategyEnum = "yahoo"
	ConnectionStrategyEnumYammer              ConnectionStrategyEnum = "yammer"
	ConnectionStrategyEnumYandex              ConnectionStrategyEnum = "yandex"
	ConnectionStrategyEnumAuth0Adldap         ConnectionStrategyEnum = "auth0-adldap"
)

func NewConnectionStrategyEnumFromString(s string) (ConnectionStrategyEnum, error) {
	switch s {
	case "ad":
		return ConnectionStrategyEnumAd, nil
	case "adfs":
		return ConnectionStrategyEnumAdfs, nil
	case "amazon":
		return ConnectionStrategyEnumAmazon, nil
	case "apple":
		return ConnectionStrategyEnumApple, nil
	case "dropbox":
		return ConnectionStrategyEnumDropbox, nil
	case "bitbucket":
		return ConnectionStrategyEnumBitbucket, nil
	case "aol":
		return ConnectionStrategyEnumAol, nil
	case "auth0-oidc":
		return ConnectionStrategyEnumAuth0Oidc, nil
	case "auth0":
		return ConnectionStrategyEnumAuth0, nil
	case "baidu":
		return ConnectionStrategyEnumBaidu, nil
	case "bitly":
		return ConnectionStrategyEnumBitly, nil
	case "box":
		return ConnectionStrategyEnumBox, nil
	case "custom":
		return ConnectionStrategyEnumCustom, nil
	case "daccount":
		return ConnectionStrategyEnumDaccount, nil
	case "dwolla":
		return ConnectionStrategyEnumDwolla, nil
	case "email":
		return ConnectionStrategyEnumEmail, nil
	case "evernote-sandbox":
		return ConnectionStrategyEnumEvernoteSandbox, nil
	case "evernote":
		return ConnectionStrategyEnumEvernote, nil
	case "exact":
		return ConnectionStrategyEnumExact, nil
	case "facebook":
		return ConnectionStrategyEnumFacebook, nil
	case "fitbit":
		return ConnectionStrategyEnumFitbit, nil
	case "flickr":
		return ConnectionStrategyEnumFlickr, nil
	case "github":
		return ConnectionStrategyEnumGithub, nil
	case "google-apps":
		return ConnectionStrategyEnumGoogleApps, nil
	case "google-oauth2":
		return ConnectionStrategyEnumGoogleOauth2, nil
	case "instagram":
		return ConnectionStrategyEnumInstagram, nil
	case "ip":
		return ConnectionStrategyEnumIP, nil
	case "line":
		return ConnectionStrategyEnumLine, nil
	case "linkedin":
		return ConnectionStrategyEnumLinkedin, nil
	case "miicard":
		return ConnectionStrategyEnumMiicard, nil
	case "oauth1":
		return ConnectionStrategyEnumOauth1, nil
	case "oauth2":
		return ConnectionStrategyEnumOauth2, nil
	case "office365":
		return ConnectionStrategyEnumOffice365, nil
	case "oidc":
		return ConnectionStrategyEnumOidc, nil
	case "okta":
		return ConnectionStrategyEnumOkta, nil
	case "paypal":
		return ConnectionStrategyEnumPaypal, nil
	case "paypal-sandbox":
		return ConnectionStrategyEnumPaypalSandbox, nil
	case "pingfederate":
		return ConnectionStrategyEnumPingfederate, nil
	case "planningcenter":
		return ConnectionStrategyEnumPlanningcenter, nil
	case "renren":
		return ConnectionStrategyEnumRenren, nil
	case "salesforce-community":
		return ConnectionStrategyEnumSalesforceCommunity, nil
	case "salesforce-sandbox":
		return ConnectionStrategyEnumSalesforceSandbox, nil
	case "salesforce":
		return ConnectionStrategyEnumSalesforce, nil
	case "samlp":
		return ConnectionStrategyEnumSamlp, nil
	case "sharepoint":
		return ConnectionStrategyEnumSharepoint, nil
	case "shopify":
		return ConnectionStrategyEnumShopify, nil
	case "shop":
		return ConnectionStrategyEnumShop, nil
	case "sms":
		return ConnectionStrategyEnumSms, nil
	case "soundcloud":
		return ConnectionStrategyEnumSoundcloud, nil
	case "thecity-sandbox":
		return ConnectionStrategyEnumThecitySandbox, nil
	case "thecity":
		return ConnectionStrategyEnumThecity, nil
	case "thirtysevensignals":
		return ConnectionStrategyEnumThirtysevensignals, nil
	case "twitter":
		return ConnectionStrategyEnumTwitter, nil
	case "untappd":
		return ConnectionStrategyEnumUntappd, nil
	case "vkontakte":
		return ConnectionStrategyEnumVkontakte, nil
	case "waad":
		return ConnectionStrategyEnumWaad, nil
	case "weibo":
		return ConnectionStrategyEnumWeibo, nil
	case "windowslive":
		return ConnectionStrategyEnumWindowslive, nil
	case "wordpress":
		return ConnectionStrategyEnumWordpress, nil
	case "yahoo":
		return ConnectionStrategyEnumYahoo, nil
	case "yammer":
		return ConnectionStrategyEnumYammer, nil
	case "yandex":
		return ConnectionStrategyEnumYandex, nil
	case "auth0-adldap":
		return ConnectionStrategyEnumAuth0Adldap, nil
	}
	var t ConnectionStrategyEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (c ConnectionStrategyEnum) Ptr() *ConnectionStrategyEnum {
	return &c
}

// Metadata associated with the connection in the form of an object with string values (max 255 chars).  Maximum of 10 metadata properties allowed.
type ConnectionsMetadata = map[string]*string

// Phone provider configuration schema
var (
	createBrandingPhoneProviderResponseContentFieldID            = big.NewInt(1 << 0)
	createBrandingPhoneProviderResponseContentFieldTenant        = big.NewInt(1 << 1)
	createBrandingPhoneProviderResponseContentFieldName          = big.NewInt(1 << 2)
	createBrandingPhoneProviderResponseContentFieldChannel       = big.NewInt(1 << 3)
	createBrandingPhoneProviderResponseContentFieldDisabled      = big.NewInt(1 << 4)
	createBrandingPhoneProviderResponseContentFieldConfiguration = big.NewInt(1 << 5)
	createBrandingPhoneProviderResponseContentFieldCreatedAt     = big.NewInt(1 << 6)
	createBrandingPhoneProviderResponseContentFieldUpdatedAt     = big.NewInt(1 << 7)
)

type CreateBrandingPhoneProviderResponseContent struct {
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name of the tenant
	Tenant  *string                   `json:"tenant,omitempty" url:"tenant,omitempty"`
	Name    PhoneProviderNameEnum     `json:"name" url:"name"`
	Channel *PhoneProviderChannelEnum `json:"channel,omitempty" url:"channel,omitempty"`
	// Whether the provider is enabled (false) or disabled (true).
	Disabled      *bool                       `json:"disabled,omitempty" url:"disabled,omitempty"`
	Configuration *PhoneProviderConfiguration `json:"configuration,omitempty" url:"configuration,omitempty"`
	// The provider's creation date and time in ISO 8601 format
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The date and time of the last update to the provider in ISO 8601 format
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,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 (c *CreateBrandingPhoneProviderResponseContent) GetID() string {
	if c == nil || c.ID == nil {
		return ""
	}
	return *c.ID
}

func (c *CreateBrandingPhoneProviderResponseContent) GetTenant() string {
	if c == nil || c.Tenant == nil {
		return ""
	}
	return *c.Tenant
}

func (c *CreateBrandingPhoneProviderResponseContent) GetName() PhoneProviderNameEnum {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateBrandingPhoneProviderResponseContent) GetDisabled() bool {
	if c == nil || c.Disabled == nil {
		return false
	}
	return *c.Disabled
}

func (c *CreateBrandingPhoneProviderResponseContent) GetConfiguration() PhoneProviderConfiguration {
	if c == nil || c.Configuration == nil {
		return PhoneProviderConfiguration{}
	}
	return *c.Configuration
}

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

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

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

func (c *CreateBrandingPhoneProviderResponseContent) 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 *CreateBrandingPhoneProviderResponseContent) SetID(id *string) {
	c.ID = id
	c.require(createBrandingPhoneProviderResponseContentFieldID)
}

// SetTenant sets the Tenant field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateBrandingPhoneProviderResponseContent) SetTenant(tenant *string) {
	c.Tenant = tenant
	c.require(createBrandingPhoneProviderResponseContentFieldTenant)
}

// 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 *CreateBrandingPhoneProviderResponseContent) SetName(name PhoneProviderNameEnum) {
	c.Name = name
	c.require(createBrandingPhoneProviderResponseContentFieldName)
}

// SetChannel sets the Channel field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateBrandingPhoneProviderResponseContent) SetChannel(channel *PhoneProviderChannelEnum) {
	c.Channel = channel
	c.require(createBrandingPhoneProviderResponseContentFieldChannel)
}

// SetDisabled sets the Disabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateBrandingPhoneProviderResponseContent) SetDisabled(disabled *bool) {
	c.Disabled = disabled
	c.require(createBrandingPhoneProviderResponseContentFieldDisabled)
}

// SetConfiguration sets the Configuration field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateBrandingPhoneProviderResponseContent) SetConfiguration(configuration *PhoneProviderConfiguration) {
	c.Configuration = configuration
	c.require(createBrandingPhoneProviderResponseContentFieldConfiguration)
}

// 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 *CreateBrandingPhoneProviderResponseContent) SetCreatedAt(createdAt *time.Time) {
	c.CreatedAt = createdAt
	c.require(createBrandingPhoneProviderResponseContentFieldCreatedAt)
}

// 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 *CreateBrandingPhoneProviderResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	c.UpdatedAt = updatedAt
	c.require(createBrandingPhoneProviderResponseContentFieldUpdatedAt)
}

func (c *CreateBrandingPhoneProviderResponseContent) UnmarshalJSON(data []byte) error {
	type embed CreateBrandingPhoneProviderResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*c),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*c = CreateBrandingPhoneProviderResponseContent(unmarshaler.embed)
	c.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	c.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *c)
	if err != nil {
		return err
	}
	c.extraProperties = extraProperties
	c.rawJSON = json.RawMessage(data)
	return nil
}

func (c *CreateBrandingPhoneProviderResponseContent) MarshalJSON() ([]byte, error) {
	type embed CreateBrandingPhoneProviderResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*c),
		CreatedAt: internal.NewOptionalDateTime(c.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(c.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (c *CreateBrandingPhoneProviderResponseContent) 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 (
	createBrandingThemeResponseContentFieldBorders        = big.NewInt(1 << 0)
	createBrandingThemeResponseContentFieldColors         = big.NewInt(1 << 1)
	createBrandingThemeResponseContentFieldDisplayName    = big.NewInt(1 << 2)
	createBrandingThemeResponseContentFieldFonts          = big.NewInt(1 << 3)
	createBrandingThemeResponseContentFieldPageBackground = big.NewInt(1 << 4)
	createBrandingThemeResponseContentFieldThemeID        = big.NewInt(1 << 5)
	createBrandingThemeResponseContentFieldWidget         = big.NewInt(1 << 6)
)

type CreateBrandingThemeResponseContent struct {
	Borders *BrandingThemeBorders `json:"borders" url:"borders"`
	Colors  *BrandingThemeColors  `json:"colors" url:"colors"`
	// Display Name
	DisplayName    string                       `json:"displayName" url:"displayName"`
	Fonts          *BrandingThemeFonts          `json:"fonts" url:"fonts"`
	PageBackground *BrandingThemePageBackground `json:"page_background" url:"page_background"`
	// Theme Id
	ThemeID string               `json:"themeId" url:"themeId"`
	Widget  *BrandingThemeWidget `json:"widget" url:"widget"`

	// 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 *CreateBrandingThemeResponseContent) GetBorders() *BrandingThemeBorders {
	if c == nil {
		return nil
	}
	return c.Borders
}

func (c *CreateBrandingThemeResponseContent) GetColors() *BrandingThemeColors {
	if c == nil {
		return nil
	}
	return c.Colors
}

func (c *CreateBrandingThemeResponseContent) GetDisplayName() string {
	if c == nil {
		return ""
	}
	return c.DisplayName
}

func (c *CreateBrandingThemeResponseContent) GetFonts() *BrandingThemeFonts {
	if c == nil {
		return nil
	}
	return c.Fonts
}

func (c *CreateBrandingThemeResponseContent) GetPageBackground() *BrandingThemePageBackground {
	if c == nil {
		return nil
	}
	return c.PageBackground
}

func (c *CreateBrandingThemeResponseContent) GetThemeID() string {
	if c == nil {
		return ""
	}
	return c.ThemeID
}

func (c *CreateBrandingThemeResponseContent) GetWidget() *BrandingThemeWidget {
	if c == nil {
		return nil
	}
	return c.Widget
}

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

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

// SetBorders sets the Borders field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateBrandingThemeResponseContent) SetBorders(borders *BrandingThemeBorders) {
	c.Borders = borders
	c.require(createBrandingThemeResponseContentFieldBorders)
}

// SetColors sets the Colors field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateBrandingThemeResponseContent) SetColors(colors *BrandingThemeColors) {
	c.Colors = colors
	c.require(createBrandingThemeResponseContentFieldColors)
}

// SetDisplayName sets the DisplayName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateBrandingThemeResponseContent) SetDisplayName(displayName string) {
	c.DisplayName = displayName
	c.require(createBrandingThemeResponseContentFieldDisplayName)
}

// SetFonts sets the Fonts field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateBrandingThemeResponseContent) SetFonts(fonts *BrandingThemeFonts) {
	c.Fonts = fonts
	c.require(createBrandingThemeResponseContentFieldFonts)
}

// SetPageBackground sets the PageBackground field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateBrandingThemeResponseContent) SetPageBackground(pageBackground *BrandingThemePageBackground) {
	c.PageBackground = pageBackground
	c.require(createBrandingThemeResponseContentFieldPageBackground)
}

// SetThemeID sets the ThemeID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateBrandingThemeResponseContent) SetThemeID(themeID string) {
	c.ThemeID = themeID
	c.require(createBrandingThemeResponseContentFieldThemeID)
}

// SetWidget sets the Widget field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateBrandingThemeResponseContent) SetWidget(widget *BrandingThemeWidget) {
	c.Widget = widget
	c.require(createBrandingThemeResponseContentFieldWidget)
}

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

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

func (c *CreateBrandingThemeResponseContent) 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 (
	createEmailProviderResponseContentFieldName               = big.NewInt(1 << 0)
	createEmailProviderResponseContentFieldEnabled            = big.NewInt(1 << 1)
	createEmailProviderResponseContentFieldDefaultFromAddress = big.NewInt(1 << 2)
	createEmailProviderResponseContentFieldCredentials        = big.NewInt(1 << 3)
	createEmailProviderResponseContentFieldSettings           = big.NewInt(1 << 4)
)

type CreateEmailProviderResponseContent struct {
	// Name of the email provider. Can be `mailgun`, `mandrill`, `sendgrid`, `ses`, `sparkpost`, `smtp`, `azure_cs`, `ms365`, or `custom`.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Whether the provider is enabled (true) or disabled (false).
	Enabled *bool `json:"enabled,omitempty" url:"enabled,omitempty"`
	// Email address to use as "from" when no other address specified.
	DefaultFromAddress *string                   `json:"default_from_address,omitempty" url:"default_from_address,omitempty"`
	Credentials        *EmailProviderCredentials `json:"credentials,omitempty" url:"credentials,omitempty"`
	Settings           *EmailProviderSettings    `json:"settings,omitempty" url:"settings,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 (c *CreateEmailProviderResponseContent) GetName() string {
	if c == nil || c.Name == nil {
		return ""
	}
	return *c.Name
}

func (c *CreateEmailProviderResponseContent) GetEnabled() bool {
	if c == nil || c.Enabled == nil {
		return false
	}
	return *c.Enabled
}

func (c *CreateEmailProviderResponseContent) GetDefaultFromAddress() string {
	if c == nil || c.DefaultFromAddress == nil {
		return ""
	}
	return *c.DefaultFromAddress
}

func (c *CreateEmailProviderResponseContent) GetCredentials() EmailProviderCredentials {
	if c == nil || c.Credentials == nil {
		return EmailProviderCredentials{}
	}
	return *c.Credentials
}

func (c *CreateEmailProviderResponseContent) GetSettings() EmailProviderSettings {
	if c == nil || c.Settings == nil {
		return nil
	}
	return *c.Settings
}

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

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

// 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 *CreateEmailProviderResponseContent) SetName(name *string) {
	c.Name = name
	c.require(createEmailProviderResponseContentFieldName)
}

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEmailProviderResponseContent) SetEnabled(enabled *bool) {
	c.Enabled = enabled
	c.require(createEmailProviderResponseContentFieldEnabled)
}

// SetDefaultFromAddress sets the DefaultFromAddress field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEmailProviderResponseContent) SetDefaultFromAddress(defaultFromAddress *string) {
	c.DefaultFromAddress = defaultFromAddress
	c.require(createEmailProviderResponseContentFieldDefaultFromAddress)
}

// SetCredentials sets the Credentials field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEmailProviderResponseContent) SetCredentials(credentials *EmailProviderCredentials) {
	c.Credentials = credentials
	c.require(createEmailProviderResponseContentFieldCredentials)
}

// SetSettings sets the Settings field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEmailProviderResponseContent) SetSettings(settings *EmailProviderSettings) {
	c.Settings = settings
	c.require(createEmailProviderResponseContentFieldSettings)
}

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

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

func (c *CreateEmailProviderResponseContent) 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 (
	createEncryptionKeyPublicWrappingResponseContentFieldPublicKey = big.NewInt(1 << 0)
	createEncryptionKeyPublicWrappingResponseContentFieldAlgorithm = big.NewInt(1 << 1)
)

type CreateEncryptionKeyPublicWrappingResponseContent struct {
	// Public wrapping key in PEM format
	PublicKey string                               `json:"public_key" url:"public_key"`
	Algorithm EncryptionKeyPublicWrappingAlgorithm `json:"algorithm" url:"algorithm"`

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

	ExtraProperties map[string]interface{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (c *CreateEncryptionKeyPublicWrappingResponseContent) GetPublicKey() string {
	if c == nil {
		return ""
	}
	return c.PublicKey
}

func (c *CreateEncryptionKeyPublicWrappingResponseContent) GetExtraProperties() map[string]interface{} {
	return c.ExtraProperties
}

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

// SetPublicKey sets the PublicKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEncryptionKeyPublicWrappingResponseContent) SetPublicKey(publicKey string) {
	c.PublicKey = publicKey
	c.require(createEncryptionKeyPublicWrappingResponseContentFieldPublicKey)
}

// SetAlgorithm sets the Algorithm field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEncryptionKeyPublicWrappingResponseContent) SetAlgorithm(algorithm EncryptionKeyPublicWrappingAlgorithm) {
	c.Algorithm = algorithm
	c.require(createEncryptionKeyPublicWrappingResponseContentFieldAlgorithm)
}

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

func (c *CreateEncryptionKeyPublicWrappingResponseContent) MarshalJSON() ([]byte, error) {
	type embed CreateEncryptionKeyPublicWrappingResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*c),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, c.ExtraProperties)
}

func (c *CreateEncryptionKeyPublicWrappingResponseContent) 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)
}

// Encryption key
var (
	createEncryptionKeyResponseContentFieldKid       = big.NewInt(1 << 0)
	createEncryptionKeyResponseContentFieldType      = big.NewInt(1 << 1)
	createEncryptionKeyResponseContentFieldState     = big.NewInt(1 << 2)
	createEncryptionKeyResponseContentFieldCreatedAt = big.NewInt(1 << 3)
	createEncryptionKeyResponseContentFieldUpdatedAt = big.NewInt(1 << 4)
	createEncryptionKeyResponseContentFieldParentKid = big.NewInt(1 << 5)
	createEncryptionKeyResponseContentFieldPublicKey = big.NewInt(1 << 6)
)

type CreateEncryptionKeyResponseContent struct {
	// Key ID
	Kid   string             `json:"kid" url:"kid"`
	Type  EncryptionKeyType  `json:"type" url:"type"`
	State EncryptionKeyState `json:"state" url:"state"`
	// Key creation timestamp
	CreatedAt time.Time `json:"created_at" url:"created_at"`
	// Key update timestamp
	UpdatedAt time.Time `json:"updated_at" url:"updated_at"`
	// ID of parent wrapping key
	ParentKid string `json:"parent_kid" url:"parent_kid"`
	// Public key in PEM format
	PublicKey *string `json:"public_key,omitempty" url:"public_key,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 (c *CreateEncryptionKeyResponseContent) GetKid() string {
	if c == nil {
		return ""
	}
	return c.Kid
}

func (c *CreateEncryptionKeyResponseContent) GetType() EncryptionKeyType {
	if c == nil {
		return ""
	}
	return c.Type
}

func (c *CreateEncryptionKeyResponseContent) GetState() EncryptionKeyState {
	if c == nil {
		return ""
	}
	return c.State
}

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

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

func (c *CreateEncryptionKeyResponseContent) GetParentKid() string {
	if c == nil {
		return ""
	}
	return c.ParentKid
}

func (c *CreateEncryptionKeyResponseContent) GetPublicKey() string {
	if c == nil || c.PublicKey == nil {
		return ""
	}
	return *c.PublicKey
}

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

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

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEncryptionKeyResponseContent) SetKid(kid string) {
	c.Kid = kid
	c.require(createEncryptionKeyResponseContentFieldKid)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEncryptionKeyResponseContent) SetType(type_ EncryptionKeyType) {
	c.Type = type_
	c.require(createEncryptionKeyResponseContentFieldType)
}

// SetState sets the State field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEncryptionKeyResponseContent) SetState(state EncryptionKeyState) {
	c.State = state
	c.require(createEncryptionKeyResponseContentFieldState)
}

// 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 *CreateEncryptionKeyResponseContent) SetCreatedAt(createdAt time.Time) {
	c.CreatedAt = createdAt
	c.require(createEncryptionKeyResponseContentFieldCreatedAt)
}

// 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 *CreateEncryptionKeyResponseContent) SetUpdatedAt(updatedAt time.Time) {
	c.UpdatedAt = updatedAt
	c.require(createEncryptionKeyResponseContentFieldUpdatedAt)
}

// SetParentKid sets the ParentKid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEncryptionKeyResponseContent) SetParentKid(parentKid string) {
	c.ParentKid = parentKid
	c.require(createEncryptionKeyResponseContentFieldParentKid)
}

// SetPublicKey sets the PublicKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEncryptionKeyResponseContent) SetPublicKey(publicKey *string) {
	c.PublicKey = publicKey
	c.require(createEncryptionKeyResponseContentFieldPublicKey)
}

func (c *CreateEncryptionKeyResponseContent) UnmarshalJSON(data []byte) error {
	type embed CreateEncryptionKeyResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at"`
		UpdatedAt *internal.DateTime `json:"updated_at"`
	}{
		embed: embed(*c),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*c = CreateEncryptionKeyResponseContent(unmarshaler.embed)
	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 *CreateEncryptionKeyResponseContent) MarshalJSON() ([]byte, error) {
	type embed CreateEncryptionKeyResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at"`
		UpdatedAt *internal.DateTime `json:"updated_at"`
	}{
		embed:     embed(*c),
		CreatedAt: internal.NewDateTime(c.CreatedAt),
		UpdatedAt: internal.NewDateTime(c.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (c *CreateEncryptionKeyResponseContent) 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)
}

// Type of the encryption key to be created.
type CreateEncryptionKeyType string

const (
	CreateEncryptionKeyTypeCustomerProvidedRootKey CreateEncryptionKeyType = "customer-provided-root-key"
	CreateEncryptionKeyTypeTenantEncryptionKey     CreateEncryptionKeyType = "tenant-encryption-key"
)

func NewCreateEncryptionKeyTypeFromString(s string) (CreateEncryptionKeyType, error) {
	switch s {
	case "customer-provided-root-key":
		return CreateEncryptionKeyTypeCustomerProvidedRootKey, nil
	case "tenant-encryption-key":
		return CreateEncryptionKeyTypeTenantEncryptionKey, nil
	}
	var t CreateEncryptionKeyType
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (c CreateEncryptionKeyType) Ptr() *CreateEncryptionKeyType {
	return &c
}

var (
	createEventStreamRedeliveryResponseContentFieldDateFrom   = big.NewInt(1 << 0)
	createEventStreamRedeliveryResponseContentFieldDateTo     = big.NewInt(1 << 1)
	createEventStreamRedeliveryResponseContentFieldStatuses   = big.NewInt(1 << 2)
	createEventStreamRedeliveryResponseContentFieldEventTypes = big.NewInt(1 << 3)
)

type CreateEventStreamRedeliveryResponseContent struct {
	// An RFC-3339 date-time for redelivery start, inclusive. Does not allow sub-second precision.
	DateFrom *time.Time `json:"date_from,omitempty" url:"date_from,omitempty"`
	// An RFC-3339 date-time for redelivery end, exclusive. Does not allow sub-second precision.
	DateTo *time.Time `json:"date_to,omitempty" url:"date_to,omitempty"`
	// Filter by status
	Statuses []EventStreamDeliveryStatusEnum `json:"statuses,omitempty" url:"statuses,omitempty"`
	// Filter by event type
	EventTypes []EventStreamEventTypeEnum `json:"event_types,omitempty" url:"event_types,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 (c *CreateEventStreamRedeliveryResponseContent) GetDateFrom() time.Time {
	if c == nil || c.DateFrom == nil {
		return time.Time{}
	}
	return *c.DateFrom
}

func (c *CreateEventStreamRedeliveryResponseContent) GetDateTo() time.Time {
	if c == nil || c.DateTo == nil {
		return time.Time{}
	}
	return *c.DateTo
}

func (c *CreateEventStreamRedeliveryResponseContent) GetStatuses() []EventStreamDeliveryStatusEnum {
	if c == nil || c.Statuses == nil {
		return nil
	}
	return c.Statuses
}

func (c *CreateEventStreamRedeliveryResponseContent) GetEventTypes() []EventStreamEventTypeEnum {
	if c == nil || c.EventTypes == nil {
		return nil
	}
	return c.EventTypes
}

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

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

// SetDateFrom sets the DateFrom field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEventStreamRedeliveryResponseContent) SetDateFrom(dateFrom *time.Time) {
	c.DateFrom = dateFrom
	c.require(createEventStreamRedeliveryResponseContentFieldDateFrom)
}

// SetDateTo sets the DateTo field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEventStreamRedeliveryResponseContent) SetDateTo(dateTo *time.Time) {
	c.DateTo = dateTo
	c.require(createEventStreamRedeliveryResponseContentFieldDateTo)
}

// SetStatuses sets the Statuses field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEventStreamRedeliveryResponseContent) SetStatuses(statuses []EventStreamDeliveryStatusEnum) {
	c.Statuses = statuses
	c.require(createEventStreamRedeliveryResponseContentFieldStatuses)
}

// SetEventTypes sets the EventTypes field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateEventStreamRedeliveryResponseContent) SetEventTypes(eventTypes []EventStreamEventTypeEnum) {
	c.EventTypes = eventTypes
	c.require(createEventStreamRedeliveryResponseContentFieldEventTypes)
}

func (c *CreateEventStreamRedeliveryResponseContent) UnmarshalJSON(data []byte) error {
	type embed CreateEventStreamRedeliveryResponseContent
	var unmarshaler = struct {
		embed
		DateFrom *internal.DateTime `json:"date_from,omitempty"`
		DateTo   *internal.DateTime `json:"date_to,omitempty"`
	}{
		embed: embed(*c),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*c = CreateEventStreamRedeliveryResponseContent(unmarshaler.embed)
	c.DateFrom = unmarshaler.DateFrom.TimePtr()
	c.DateTo = unmarshaler.DateTo.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *c)
	if err != nil {
		return err
	}
	c.extraProperties = extraProperties
	c.rawJSON = json.RawMessage(data)
	return nil
}

func (c *CreateEventStreamRedeliveryResponseContent) MarshalJSON() ([]byte, error) {
	type embed CreateEventStreamRedeliveryResponseContent
	var marshaler = struct {
		embed
		DateFrom *internal.DateTime `json:"date_from,omitempty"`
		DateTo   *internal.DateTime `json:"date_to,omitempty"`
	}{
		embed:    embed(*c),
		DateFrom: internal.NewOptionalDateTime(c.DateFrom),
		DateTo:   internal.NewOptionalDateTime(c.DateTo),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (c *CreateEventStreamRedeliveryResponseContent) 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 (
	createExportUsersFieldsFieldName     = big.NewInt(1 << 0)
	createExportUsersFieldsFieldExportAs = big.NewInt(1 << 1)
)

type CreateExportUsersFields struct {
	// Name of the field in the profile.
	Name string `json:"name" url:"name"`
	// Title of the column in the exported CSV.
	ExportAs *string `json:"export_as,omitempty" url:"export_as,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 (c *CreateExportUsersFields) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateExportUsersFields) GetExportAs() string {
	if c == nil || c.ExportAs == nil {
		return ""
	}
	return *c.ExportAs
}

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

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

// 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 *CreateExportUsersFields) SetName(name string) {
	c.Name = name
	c.require(createExportUsersFieldsFieldName)
}

// SetExportAs sets the ExportAs field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateExportUsersFields) SetExportAs(exportAs *string) {
	c.ExportAs = exportAs
	c.require(createExportUsersFieldsFieldExportAs)
}

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

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

func (c *CreateExportUsersFields) 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 (
	createExportUsersResponseContentFieldStatus       = big.NewInt(1 << 0)
	createExportUsersResponseContentFieldType         = big.NewInt(1 << 1)
	createExportUsersResponseContentFieldCreatedAt    = big.NewInt(1 << 2)
	createExportUsersResponseContentFieldID           = big.NewInt(1 << 3)
	createExportUsersResponseContentFieldConnectionID = big.NewInt(1 << 4)
	createExportUsersResponseContentFieldFormat       = big.NewInt(1 << 5)
	createExportUsersResponseContentFieldLimit        = big.NewInt(1 << 6)
	createExportUsersResponseContentFieldFields       = big.NewInt(1 << 7)
)

type CreateExportUsersResponseContent struct {
	// Status of this job.
	Status string `json:"status" url:"status"`
	// Type of job this is.
	Type string `json:"type" url:"type"`
	// When this job was created.
	CreatedAt *string `json:"created_at,omitempty" url:"created_at,omitempty"`
	// ID of this job.
	ID string `json:"id" url:"id"`
	// connection_id of the connection from which users will be exported.
	ConnectionID *string            `json:"connection_id,omitempty" url:"connection_id,omitempty"`
	Format       *JobFileFormatEnum `json:"format,omitempty" url:"format,omitempty"`
	// Limit the number of records.
	Limit *int `json:"limit,omitempty" url:"limit,omitempty"`
	// List of fields to be included in the CSV. Defaults to a predefined set of fields.
	Fields []*CreateExportUsersFields `json:"fields,omitempty" url:"fields,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (c *CreateExportUsersResponseContent) GetStatus() string {
	if c == nil {
		return ""
	}
	return c.Status
}

func (c *CreateExportUsersResponseContent) GetType() string {
	if c == nil {
		return ""
	}
	return c.Type
}

func (c *CreateExportUsersResponseContent) GetCreatedAt() string {
	if c == nil || c.CreatedAt == nil {
		return ""
	}
	return *c.CreatedAt
}

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

func (c *CreateExportUsersResponseContent) GetConnectionID() string {
	if c == nil || c.ConnectionID == nil {
		return ""
	}
	return *c.ConnectionID
}

func (c *CreateExportUsersResponseContent) GetFormat() JobFileFormatEnum {
	if c == nil || c.Format == nil {
		return ""
	}
	return *c.Format
}

func (c *CreateExportUsersResponseContent) GetLimit() int {
	if c == nil || c.Limit == nil {
		return 0
	}
	return *c.Limit
}

func (c *CreateExportUsersResponseContent) GetFields() []*CreateExportUsersFields {
	if c == nil || c.Fields == nil {
		return nil
	}
	return c.Fields
}

func (c *CreateExportUsersResponseContent) GetExtraProperties() map[string]interface{} {
	return c.ExtraProperties
}

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

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateExportUsersResponseContent) SetStatus(status string) {
	c.Status = status
	c.require(createExportUsersResponseContentFieldStatus)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateExportUsersResponseContent) SetType(type_ string) {
	c.Type = type_
	c.require(createExportUsersResponseContentFieldType)
}

// 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 *CreateExportUsersResponseContent) SetCreatedAt(createdAt *string) {
	c.CreatedAt = createdAt
	c.require(createExportUsersResponseContentFieldCreatedAt)
}

// 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 *CreateExportUsersResponseContent) SetID(id string) {
	c.ID = id
	c.require(createExportUsersResponseContentFieldID)
}

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateExportUsersResponseContent) SetConnectionID(connectionID *string) {
	c.ConnectionID = connectionID
	c.require(createExportUsersResponseContentFieldConnectionID)
}

// SetFormat sets the Format field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateExportUsersResponseContent) SetFormat(format *JobFileFormatEnum) {
	c.Format = format
	c.require(createExportUsersResponseContentFieldFormat)
}

// 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 (c *CreateExportUsersResponseContent) SetLimit(limit *int) {
	c.Limit = limit
	c.require(createExportUsersResponseContentFieldLimit)
}

// 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 (c *CreateExportUsersResponseContent) SetFields(fields []*CreateExportUsersFields) {
	c.Fields = fields
	c.require(createExportUsersResponseContentFieldFields)
}

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

func (c *CreateExportUsersResponseContent) MarshalJSON() ([]byte, error) {
	type embed CreateExportUsersResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*c),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, c.ExtraProperties)
}

func (c *CreateExportUsersResponseContent) 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)
}

type CreateFlowsVaultConnectionActivecampaign struct {
	CreateFlowsVaultConnectionActivecampaignAPIKey        *CreateFlowsVaultConnectionActivecampaignAPIKey
	CreateFlowsVaultConnectionActivecampaignUninitialized *CreateFlowsVaultConnectionActivecampaignUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionActivecampaign) GetCreateFlowsVaultConnectionActivecampaignAPIKey() *CreateFlowsVaultConnectionActivecampaignAPIKey {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionActivecampaignAPIKey
}

func (c *CreateFlowsVaultConnectionActivecampaign) GetCreateFlowsVaultConnectionActivecampaignUninitialized() *CreateFlowsVaultConnectionActivecampaignUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionActivecampaignUninitialized
}

func (c *CreateFlowsVaultConnectionActivecampaign) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionActivecampaignAPIKey := new(CreateFlowsVaultConnectionActivecampaignAPIKey)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionActivecampaignAPIKey); err == nil {
		c.typ = "CreateFlowsVaultConnectionActivecampaignAPIKey"
		c.CreateFlowsVaultConnectionActivecampaignAPIKey = valueCreateFlowsVaultConnectionActivecampaignAPIKey
		return nil
	}
	valueCreateFlowsVaultConnectionActivecampaignUninitialized := new(CreateFlowsVaultConnectionActivecampaignUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionActivecampaignUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionActivecampaignUninitialized"
		c.CreateFlowsVaultConnectionActivecampaignUninitialized = valueCreateFlowsVaultConnectionActivecampaignUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionActivecampaign) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionActivecampaignAPIKey" || c.CreateFlowsVaultConnectionActivecampaignAPIKey != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionActivecampaignAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionActivecampaignUninitialized" || c.CreateFlowsVaultConnectionActivecampaignUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionActivecampaignUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionActivecampaignVisitor interface {
	VisitCreateFlowsVaultConnectionActivecampaignAPIKey(*CreateFlowsVaultConnectionActivecampaignAPIKey) error
	VisitCreateFlowsVaultConnectionActivecampaignUninitialized(*CreateFlowsVaultConnectionActivecampaignUninitialized) error
}

func (c *CreateFlowsVaultConnectionActivecampaign) Accept(visitor CreateFlowsVaultConnectionActivecampaignVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionActivecampaignAPIKey" || c.CreateFlowsVaultConnectionActivecampaignAPIKey != nil {
		return visitor.VisitCreateFlowsVaultConnectionActivecampaignAPIKey(c.CreateFlowsVaultConnectionActivecampaignAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionActivecampaignUninitialized" || c.CreateFlowsVaultConnectionActivecampaignUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionActivecampaignUninitialized(c.CreateFlowsVaultConnectionActivecampaignUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionActivecampaignAPIKeyFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionActivecampaignAPIKeyFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionActivecampaignAPIKeyFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionActivecampaignAPIKey struct {
	// Flows Vault Connection name.
	Name  string                                      `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDActivecampaignEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupAPIKeyWithBaseURL  `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionActivecampaignAPIKey) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionActivecampaignAPIKey) GetSetup() *FlowsVaultConnectioSetupAPIKeyWithBaseURL {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionActivecampaignAPIKey) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionActivecampaignAPIKeyFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionActivecampaignAPIKey) SetAppID(appID FlowsVaultConnectionAppIDActivecampaignEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionActivecampaignAPIKeyFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionActivecampaignAPIKey) SetSetup(setup *FlowsVaultConnectioSetupAPIKeyWithBaseURL) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionActivecampaignAPIKeyFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionActivecampaignAPIKey) 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 (
	createFlowsVaultConnectionActivecampaignUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionActivecampaignUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionActivecampaignUninitialized struct {
	// Flows Vault Connection name.
	Name  string                                      `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDActivecampaignEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionActivecampaignUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionActivecampaignUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionActivecampaignUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionActivecampaignUninitialized) SetAppID(appID FlowsVaultConnectionAppIDActivecampaignEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionActivecampaignUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionActivecampaignUninitialized) 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)
}

type CreateFlowsVaultConnectionAirtable struct {
	CreateFlowsVaultConnectionAirtableAPIKey        *CreateFlowsVaultConnectionAirtableAPIKey
	CreateFlowsVaultConnectionAirtableUninitialized *CreateFlowsVaultConnectionAirtableUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionAirtable) GetCreateFlowsVaultConnectionAirtableAPIKey() *CreateFlowsVaultConnectionAirtableAPIKey {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionAirtableAPIKey
}

func (c *CreateFlowsVaultConnectionAirtable) GetCreateFlowsVaultConnectionAirtableUninitialized() *CreateFlowsVaultConnectionAirtableUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionAirtableUninitialized
}

func (c *CreateFlowsVaultConnectionAirtable) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionAirtableAPIKey := new(CreateFlowsVaultConnectionAirtableAPIKey)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionAirtableAPIKey); err == nil {
		c.typ = "CreateFlowsVaultConnectionAirtableAPIKey"
		c.CreateFlowsVaultConnectionAirtableAPIKey = valueCreateFlowsVaultConnectionAirtableAPIKey
		return nil
	}
	valueCreateFlowsVaultConnectionAirtableUninitialized := new(CreateFlowsVaultConnectionAirtableUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionAirtableUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionAirtableUninitialized"
		c.CreateFlowsVaultConnectionAirtableUninitialized = valueCreateFlowsVaultConnectionAirtableUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionAirtable) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionAirtableAPIKey" || c.CreateFlowsVaultConnectionAirtableAPIKey != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionAirtableAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionAirtableUninitialized" || c.CreateFlowsVaultConnectionAirtableUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionAirtableUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionAirtableVisitor interface {
	VisitCreateFlowsVaultConnectionAirtableAPIKey(*CreateFlowsVaultConnectionAirtableAPIKey) error
	VisitCreateFlowsVaultConnectionAirtableUninitialized(*CreateFlowsVaultConnectionAirtableUninitialized) error
}

func (c *CreateFlowsVaultConnectionAirtable) Accept(visitor CreateFlowsVaultConnectionAirtableVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionAirtableAPIKey" || c.CreateFlowsVaultConnectionAirtableAPIKey != nil {
		return visitor.VisitCreateFlowsVaultConnectionAirtableAPIKey(c.CreateFlowsVaultConnectionAirtableAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionAirtableUninitialized" || c.CreateFlowsVaultConnectionAirtableUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionAirtableUninitialized(c.CreateFlowsVaultConnectionAirtableUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionAirtableAPIKeyFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionAirtableAPIKeyFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionAirtableAPIKeyFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionAirtableAPIKey struct {
	// Flows Vault Connection name.
	Name  string                                `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDAirtableEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupAPIKey       `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionAirtableAPIKey) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionAirtableAPIKey) GetSetup() *FlowsVaultConnectioSetupAPIKey {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionAirtableAPIKey) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionAirtableAPIKeyFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionAirtableAPIKey) SetAppID(appID FlowsVaultConnectionAppIDAirtableEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionAirtableAPIKeyFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionAirtableAPIKey) SetSetup(setup *FlowsVaultConnectioSetupAPIKey) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionAirtableAPIKeyFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionAirtableAPIKey) 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 (
	createFlowsVaultConnectionAirtableUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionAirtableUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionAirtableUninitialized struct {
	// Flows Vault Connection name.
	Name  string                                `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDAirtableEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionAirtableUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionAirtableUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionAirtableUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionAirtableUninitialized) SetAppID(appID FlowsVaultConnectionAppIDAirtableEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionAirtableUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionAirtableUninitialized) 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)
}

type CreateFlowsVaultConnectionAuth0 struct {
	CreateFlowsVaultConnectionAuth0OauthApp      *CreateFlowsVaultConnectionAuth0OauthApp
	CreateFlowsVaultConnectionAuth0Uninitialized *CreateFlowsVaultConnectionAuth0Uninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionAuth0) GetCreateFlowsVaultConnectionAuth0OauthApp() *CreateFlowsVaultConnectionAuth0OauthApp {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionAuth0OauthApp
}

func (c *CreateFlowsVaultConnectionAuth0) GetCreateFlowsVaultConnectionAuth0Uninitialized() *CreateFlowsVaultConnectionAuth0Uninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionAuth0Uninitialized
}

func (c *CreateFlowsVaultConnectionAuth0) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionAuth0OauthApp := new(CreateFlowsVaultConnectionAuth0OauthApp)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionAuth0OauthApp); err == nil {
		c.typ = "CreateFlowsVaultConnectionAuth0OauthApp"
		c.CreateFlowsVaultConnectionAuth0OauthApp = valueCreateFlowsVaultConnectionAuth0OauthApp
		return nil
	}
	valueCreateFlowsVaultConnectionAuth0Uninitialized := new(CreateFlowsVaultConnectionAuth0Uninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionAuth0Uninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionAuth0Uninitialized"
		c.CreateFlowsVaultConnectionAuth0Uninitialized = valueCreateFlowsVaultConnectionAuth0Uninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionAuth0) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionAuth0OauthApp" || c.CreateFlowsVaultConnectionAuth0OauthApp != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionAuth0OauthApp)
	}
	if c.typ == "CreateFlowsVaultConnectionAuth0Uninitialized" || c.CreateFlowsVaultConnectionAuth0Uninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionAuth0Uninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionAuth0Visitor interface {
	VisitCreateFlowsVaultConnectionAuth0OauthApp(*CreateFlowsVaultConnectionAuth0OauthApp) error
	VisitCreateFlowsVaultConnectionAuth0Uninitialized(*CreateFlowsVaultConnectionAuth0Uninitialized) error
}

func (c *CreateFlowsVaultConnectionAuth0) Accept(visitor CreateFlowsVaultConnectionAuth0Visitor) error {
	if c.typ == "CreateFlowsVaultConnectionAuth0OauthApp" || c.CreateFlowsVaultConnectionAuth0OauthApp != nil {
		return visitor.VisitCreateFlowsVaultConnectionAuth0OauthApp(c.CreateFlowsVaultConnectionAuth0OauthApp)
	}
	if c.typ == "CreateFlowsVaultConnectionAuth0Uninitialized" || c.CreateFlowsVaultConnectionAuth0Uninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionAuth0Uninitialized(c.CreateFlowsVaultConnectionAuth0Uninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionAuth0OauthAppFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionAuth0OauthAppFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionAuth0OauthAppFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionAuth0OauthApp struct {
	// Flows Vault Connection name.
	Name  string                             `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDAuth0Enum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupOauthApp  `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionAuth0OauthApp) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionAuth0OauthApp) GetSetup() *FlowsVaultConnectioSetupOauthApp {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionAuth0OauthApp) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionAuth0OauthAppFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionAuth0OauthApp) SetAppID(appID FlowsVaultConnectionAppIDAuth0Enum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionAuth0OauthAppFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionAuth0OauthApp) SetSetup(setup *FlowsVaultConnectioSetupOauthApp) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionAuth0OauthAppFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionAuth0OauthApp) 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 (
	createFlowsVaultConnectionAuth0UninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionAuth0UninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionAuth0Uninitialized struct {
	// Flows Vault Connection name.
	Name  string                             `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDAuth0Enum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionAuth0Uninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionAuth0Uninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionAuth0UninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionAuth0Uninitialized) SetAppID(appID FlowsVaultConnectionAppIDAuth0Enum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionAuth0UninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionAuth0Uninitialized) 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)
}

type CreateFlowsVaultConnectionBigquery struct {
	CreateFlowsVaultConnectionBigqueryJwt           *CreateFlowsVaultConnectionBigqueryJwt
	CreateFlowsVaultConnectionBigqueryUninitialized *CreateFlowsVaultConnectionBigqueryUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionBigquery) GetCreateFlowsVaultConnectionBigqueryJwt() *CreateFlowsVaultConnectionBigqueryJwt {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionBigqueryJwt
}

func (c *CreateFlowsVaultConnectionBigquery) GetCreateFlowsVaultConnectionBigqueryUninitialized() *CreateFlowsVaultConnectionBigqueryUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionBigqueryUninitialized
}

func (c *CreateFlowsVaultConnectionBigquery) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionBigqueryJwt := new(CreateFlowsVaultConnectionBigqueryJwt)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionBigqueryJwt); err == nil {
		c.typ = "CreateFlowsVaultConnectionBigqueryJwt"
		c.CreateFlowsVaultConnectionBigqueryJwt = valueCreateFlowsVaultConnectionBigqueryJwt
		return nil
	}
	valueCreateFlowsVaultConnectionBigqueryUninitialized := new(CreateFlowsVaultConnectionBigqueryUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionBigqueryUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionBigqueryUninitialized"
		c.CreateFlowsVaultConnectionBigqueryUninitialized = valueCreateFlowsVaultConnectionBigqueryUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionBigquery) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionBigqueryJwt" || c.CreateFlowsVaultConnectionBigqueryJwt != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionBigqueryJwt)
	}
	if c.typ == "CreateFlowsVaultConnectionBigqueryUninitialized" || c.CreateFlowsVaultConnectionBigqueryUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionBigqueryUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionBigqueryVisitor interface {
	VisitCreateFlowsVaultConnectionBigqueryJwt(*CreateFlowsVaultConnectionBigqueryJwt) error
	VisitCreateFlowsVaultConnectionBigqueryUninitialized(*CreateFlowsVaultConnectionBigqueryUninitialized) error
}

func (c *CreateFlowsVaultConnectionBigquery) Accept(visitor CreateFlowsVaultConnectionBigqueryVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionBigqueryJwt" || c.CreateFlowsVaultConnectionBigqueryJwt != nil {
		return visitor.VisitCreateFlowsVaultConnectionBigqueryJwt(c.CreateFlowsVaultConnectionBigqueryJwt)
	}
	if c.typ == "CreateFlowsVaultConnectionBigqueryUninitialized" || c.CreateFlowsVaultConnectionBigqueryUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionBigqueryUninitialized(c.CreateFlowsVaultConnectionBigqueryUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionBigqueryJwtFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionBigqueryJwtFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionBigqueryJwtFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionBigqueryJwt struct {
	// Flows Vault Connection name.
	Name  string                                    `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDBigqueryEnum     `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupBigqueryOauthJwt `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionBigqueryJwt) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionBigqueryJwt) GetSetup() *FlowsVaultConnectioSetupBigqueryOauthJwt {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionBigqueryJwt) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionBigqueryJwtFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionBigqueryJwt) SetAppID(appID FlowsVaultConnectionAppIDBigqueryEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionBigqueryJwtFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionBigqueryJwt) SetSetup(setup *FlowsVaultConnectioSetupBigqueryOauthJwt) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionBigqueryJwtFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionBigqueryJwt) 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 (
	createFlowsVaultConnectionBigqueryUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionBigqueryUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionBigqueryUninitialized struct {
	// Flows Vault Connection name.
	Name  string                                `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDBigqueryEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionBigqueryUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionBigqueryUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionBigqueryUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionBigqueryUninitialized) SetAppID(appID FlowsVaultConnectionAppIDBigqueryEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionBigqueryUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionBigqueryUninitialized) 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)
}

type CreateFlowsVaultConnectionClearbit struct {
	CreateFlowsVaultConnectionClearbitAPIKey        *CreateFlowsVaultConnectionClearbitAPIKey
	CreateFlowsVaultConnectionClearbitUninitialized *CreateFlowsVaultConnectionClearbitUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionClearbit) GetCreateFlowsVaultConnectionClearbitAPIKey() *CreateFlowsVaultConnectionClearbitAPIKey {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionClearbitAPIKey
}

func (c *CreateFlowsVaultConnectionClearbit) GetCreateFlowsVaultConnectionClearbitUninitialized() *CreateFlowsVaultConnectionClearbitUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionClearbitUninitialized
}

func (c *CreateFlowsVaultConnectionClearbit) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionClearbitAPIKey := new(CreateFlowsVaultConnectionClearbitAPIKey)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionClearbitAPIKey); err == nil {
		c.typ = "CreateFlowsVaultConnectionClearbitAPIKey"
		c.CreateFlowsVaultConnectionClearbitAPIKey = valueCreateFlowsVaultConnectionClearbitAPIKey
		return nil
	}
	valueCreateFlowsVaultConnectionClearbitUninitialized := new(CreateFlowsVaultConnectionClearbitUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionClearbitUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionClearbitUninitialized"
		c.CreateFlowsVaultConnectionClearbitUninitialized = valueCreateFlowsVaultConnectionClearbitUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionClearbit) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionClearbitAPIKey" || c.CreateFlowsVaultConnectionClearbitAPIKey != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionClearbitAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionClearbitUninitialized" || c.CreateFlowsVaultConnectionClearbitUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionClearbitUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionClearbitVisitor interface {
	VisitCreateFlowsVaultConnectionClearbitAPIKey(*CreateFlowsVaultConnectionClearbitAPIKey) error
	VisitCreateFlowsVaultConnectionClearbitUninitialized(*CreateFlowsVaultConnectionClearbitUninitialized) error
}

func (c *CreateFlowsVaultConnectionClearbit) Accept(visitor CreateFlowsVaultConnectionClearbitVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionClearbitAPIKey" || c.CreateFlowsVaultConnectionClearbitAPIKey != nil {
		return visitor.VisitCreateFlowsVaultConnectionClearbitAPIKey(c.CreateFlowsVaultConnectionClearbitAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionClearbitUninitialized" || c.CreateFlowsVaultConnectionClearbitUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionClearbitUninitialized(c.CreateFlowsVaultConnectionClearbitUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionClearbitAPIKeyFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionClearbitAPIKeyFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionClearbitAPIKeyFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionClearbitAPIKey struct {
	// Flows Vault Connection name.
	Name  string                                `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDClearbitEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupSecretAPIKey `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionClearbitAPIKey) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionClearbitAPIKey) GetSetup() *FlowsVaultConnectioSetupSecretAPIKey {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionClearbitAPIKey) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionClearbitAPIKeyFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionClearbitAPIKey) SetAppID(appID FlowsVaultConnectionAppIDClearbitEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionClearbitAPIKeyFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionClearbitAPIKey) SetSetup(setup *FlowsVaultConnectioSetupSecretAPIKey) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionClearbitAPIKeyFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionClearbitAPIKey) 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 (
	createFlowsVaultConnectionClearbitUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionClearbitUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionClearbitUninitialized struct {
	// Flows Vault Connection name.
	Name  string                                `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDClearbitEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionClearbitUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionClearbitUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionClearbitUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionClearbitUninitialized) SetAppID(appID FlowsVaultConnectionAppIDClearbitEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionClearbitUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionClearbitUninitialized) 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)
}

type CreateFlowsVaultConnectionDocusign struct {
	CreateFlowsVaultConnectionDocusignOauthCode     *CreateFlowsVaultConnectionDocusignOauthCode
	CreateFlowsVaultConnectionDocusignUninitialized *CreateFlowsVaultConnectionDocusignUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionDocusign) GetCreateFlowsVaultConnectionDocusignOauthCode() *CreateFlowsVaultConnectionDocusignOauthCode {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionDocusignOauthCode
}

func (c *CreateFlowsVaultConnectionDocusign) GetCreateFlowsVaultConnectionDocusignUninitialized() *CreateFlowsVaultConnectionDocusignUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionDocusignUninitialized
}

func (c *CreateFlowsVaultConnectionDocusign) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionDocusignOauthCode := new(CreateFlowsVaultConnectionDocusignOauthCode)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionDocusignOauthCode); err == nil {
		c.typ = "CreateFlowsVaultConnectionDocusignOauthCode"
		c.CreateFlowsVaultConnectionDocusignOauthCode = valueCreateFlowsVaultConnectionDocusignOauthCode
		return nil
	}
	valueCreateFlowsVaultConnectionDocusignUninitialized := new(CreateFlowsVaultConnectionDocusignUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionDocusignUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionDocusignUninitialized"
		c.CreateFlowsVaultConnectionDocusignUninitialized = valueCreateFlowsVaultConnectionDocusignUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionDocusign) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionDocusignOauthCode" || c.CreateFlowsVaultConnectionDocusignOauthCode != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionDocusignOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionDocusignUninitialized" || c.CreateFlowsVaultConnectionDocusignUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionDocusignUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionDocusignVisitor interface {
	VisitCreateFlowsVaultConnectionDocusignOauthCode(*CreateFlowsVaultConnectionDocusignOauthCode) error
	VisitCreateFlowsVaultConnectionDocusignUninitialized(*CreateFlowsVaultConnectionDocusignUninitialized) error
}

func (c *CreateFlowsVaultConnectionDocusign) Accept(visitor CreateFlowsVaultConnectionDocusignVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionDocusignOauthCode" || c.CreateFlowsVaultConnectionDocusignOauthCode != nil {
		return visitor.VisitCreateFlowsVaultConnectionDocusignOauthCode(c.CreateFlowsVaultConnectionDocusignOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionDocusignUninitialized" || c.CreateFlowsVaultConnectionDocusignUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionDocusignUninitialized(c.CreateFlowsVaultConnectionDocusignUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionDocusignOauthCodeFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionDocusignOauthCodeFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionDocusignOauthCodeFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionDocusignOauthCode struct {
	// Flows Vault Connection name.
	Name  string                                `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDDocusignEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupOauthCode    `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionDocusignOauthCode) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionDocusignOauthCode) GetSetup() *FlowsVaultConnectioSetupOauthCode {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionDocusignOauthCode) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionDocusignOauthCodeFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionDocusignOauthCode) SetAppID(appID FlowsVaultConnectionAppIDDocusignEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionDocusignOauthCodeFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionDocusignOauthCode) SetSetup(setup *FlowsVaultConnectioSetupOauthCode) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionDocusignOauthCodeFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionDocusignOauthCode) 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 (
	createFlowsVaultConnectionDocusignUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionDocusignUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionDocusignUninitialized struct {
	// Flows Vault Connection name.
	Name  string                                `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDDocusignEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionDocusignUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionDocusignUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionDocusignUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionDocusignUninitialized) SetAppID(appID FlowsVaultConnectionAppIDDocusignEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionDocusignUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionDocusignUninitialized) 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)
}

type CreateFlowsVaultConnectionGoogleSheets struct {
	CreateFlowsVaultConnectionGoogleSheetsOauthCode     *CreateFlowsVaultConnectionGoogleSheetsOauthCode
	CreateFlowsVaultConnectionGoogleSheetsUninitialized *CreateFlowsVaultConnectionGoogleSheetsUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionGoogleSheets) GetCreateFlowsVaultConnectionGoogleSheetsOauthCode() *CreateFlowsVaultConnectionGoogleSheetsOauthCode {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionGoogleSheetsOauthCode
}

func (c *CreateFlowsVaultConnectionGoogleSheets) GetCreateFlowsVaultConnectionGoogleSheetsUninitialized() *CreateFlowsVaultConnectionGoogleSheetsUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionGoogleSheetsUninitialized
}

func (c *CreateFlowsVaultConnectionGoogleSheets) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionGoogleSheetsOauthCode := new(CreateFlowsVaultConnectionGoogleSheetsOauthCode)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionGoogleSheetsOauthCode); err == nil {
		c.typ = "CreateFlowsVaultConnectionGoogleSheetsOauthCode"
		c.CreateFlowsVaultConnectionGoogleSheetsOauthCode = valueCreateFlowsVaultConnectionGoogleSheetsOauthCode
		return nil
	}
	valueCreateFlowsVaultConnectionGoogleSheetsUninitialized := new(CreateFlowsVaultConnectionGoogleSheetsUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionGoogleSheetsUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionGoogleSheetsUninitialized"
		c.CreateFlowsVaultConnectionGoogleSheetsUninitialized = valueCreateFlowsVaultConnectionGoogleSheetsUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionGoogleSheets) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionGoogleSheetsOauthCode" || c.CreateFlowsVaultConnectionGoogleSheetsOauthCode != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionGoogleSheetsOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionGoogleSheetsUninitialized" || c.CreateFlowsVaultConnectionGoogleSheetsUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionGoogleSheetsUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionGoogleSheetsVisitor interface {
	VisitCreateFlowsVaultConnectionGoogleSheetsOauthCode(*CreateFlowsVaultConnectionGoogleSheetsOauthCode) error
	VisitCreateFlowsVaultConnectionGoogleSheetsUninitialized(*CreateFlowsVaultConnectionGoogleSheetsUninitialized) error
}

func (c *CreateFlowsVaultConnectionGoogleSheets) Accept(visitor CreateFlowsVaultConnectionGoogleSheetsVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionGoogleSheetsOauthCode" || c.CreateFlowsVaultConnectionGoogleSheetsOauthCode != nil {
		return visitor.VisitCreateFlowsVaultConnectionGoogleSheetsOauthCode(c.CreateFlowsVaultConnectionGoogleSheetsOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionGoogleSheetsUninitialized" || c.CreateFlowsVaultConnectionGoogleSheetsUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionGoogleSheetsUninitialized(c.CreateFlowsVaultConnectionGoogleSheetsUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionGoogleSheetsOauthCodeFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionGoogleSheetsOauthCodeFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionGoogleSheetsOauthCodeFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionGoogleSheetsOauthCode struct {
	// Flows Vault Connection name.
	Name  string                                    `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDGoogleSheetsEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupOauthCode        `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionGoogleSheetsOauthCode) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionGoogleSheetsOauthCode) GetSetup() *FlowsVaultConnectioSetupOauthCode {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionGoogleSheetsOauthCode) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionGoogleSheetsOauthCodeFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionGoogleSheetsOauthCode) SetAppID(appID FlowsVaultConnectionAppIDGoogleSheetsEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionGoogleSheetsOauthCodeFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionGoogleSheetsOauthCode) SetSetup(setup *FlowsVaultConnectioSetupOauthCode) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionGoogleSheetsOauthCodeFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionGoogleSheetsOauthCode) 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 (
	createFlowsVaultConnectionGoogleSheetsUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionGoogleSheetsUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionGoogleSheetsUninitialized struct {
	// Flows Vault Connection name.
	Name  string                                    `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDGoogleSheetsEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionGoogleSheetsUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionGoogleSheetsUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionGoogleSheetsUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionGoogleSheetsUninitialized) SetAppID(appID FlowsVaultConnectionAppIDGoogleSheetsEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionGoogleSheetsUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionGoogleSheetsUninitialized) 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)
}

type CreateFlowsVaultConnectionHTTP struct {
	CreateFlowsVaultConnectionHTTPBearer        *CreateFlowsVaultConnectionHTTPBearer
	CreateFlowsVaultConnectionHTTPUninitialized *CreateFlowsVaultConnectionHTTPUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionHTTP) GetCreateFlowsVaultConnectionHTTPBearer() *CreateFlowsVaultConnectionHTTPBearer {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionHTTPBearer
}

func (c *CreateFlowsVaultConnectionHTTP) GetCreateFlowsVaultConnectionHTTPUninitialized() *CreateFlowsVaultConnectionHTTPUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionHTTPUninitialized
}

func (c *CreateFlowsVaultConnectionHTTP) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionHTTPBearer := new(CreateFlowsVaultConnectionHTTPBearer)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionHTTPBearer); err == nil {
		c.typ = "CreateFlowsVaultConnectionHTTPBearer"
		c.CreateFlowsVaultConnectionHTTPBearer = valueCreateFlowsVaultConnectionHTTPBearer
		return nil
	}
	valueCreateFlowsVaultConnectionHTTPUninitialized := new(CreateFlowsVaultConnectionHTTPUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionHTTPUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionHTTPUninitialized"
		c.CreateFlowsVaultConnectionHTTPUninitialized = valueCreateFlowsVaultConnectionHTTPUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionHTTP) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionHTTPBearer" || c.CreateFlowsVaultConnectionHTTPBearer != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionHTTPBearer)
	}
	if c.typ == "CreateFlowsVaultConnectionHTTPUninitialized" || c.CreateFlowsVaultConnectionHTTPUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionHTTPUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionHTTPVisitor interface {
	VisitCreateFlowsVaultConnectionHTTPBearer(*CreateFlowsVaultConnectionHTTPBearer) error
	VisitCreateFlowsVaultConnectionHTTPUninitialized(*CreateFlowsVaultConnectionHTTPUninitialized) error
}

func (c *CreateFlowsVaultConnectionHTTP) Accept(visitor CreateFlowsVaultConnectionHTTPVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionHTTPBearer" || c.CreateFlowsVaultConnectionHTTPBearer != nil {
		return visitor.VisitCreateFlowsVaultConnectionHTTPBearer(c.CreateFlowsVaultConnectionHTTPBearer)
	}
	if c.typ == "CreateFlowsVaultConnectionHTTPUninitialized" || c.CreateFlowsVaultConnectionHTTPUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionHTTPUninitialized(c.CreateFlowsVaultConnectionHTTPUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionHTTPBearerFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionHTTPBearerFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionHTTPBearerFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionHTTPBearer struct {
	// Flows Vault Connection name.
	Name  string                              `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIdHttpEnum   `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupHTTPBearer `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionHTTPBearer) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionHTTPBearer) GetSetup() *FlowsVaultConnectioSetupHTTPBearer {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionHTTPBearer) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionHTTPBearerFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionHTTPBearer) SetAppID(appID FlowsVaultConnectionAppIdHttpEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionHTTPBearerFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionHTTPBearer) SetSetup(setup *FlowsVaultConnectioSetupHTTPBearer) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionHTTPBearerFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionHTTPBearer) 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 (
	createFlowsVaultConnectionHTTPUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionHTTPUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionHTTPUninitialized struct {
	// Flows Vault Connection name.
	Name  string                            `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIdHttpEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionHTTPUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionHTTPUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionHTTPUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionHTTPUninitialized) SetAppID(appID FlowsVaultConnectionAppIdHttpEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionHTTPUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionHTTPUninitialized) 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)
}

type CreateFlowsVaultConnectionHubspot struct {
	CreateFlowsVaultConnectionHubspotAPIKey        *CreateFlowsVaultConnectionHubspotAPIKey
	CreateFlowsVaultConnectionHubspotOauthCode     *CreateFlowsVaultConnectionHubspotOauthCode
	CreateFlowsVaultConnectionHubspotUninitialized *CreateFlowsVaultConnectionHubspotUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionHubspot) GetCreateFlowsVaultConnectionHubspotAPIKey() *CreateFlowsVaultConnectionHubspotAPIKey {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionHubspotAPIKey
}

func (c *CreateFlowsVaultConnectionHubspot) GetCreateFlowsVaultConnectionHubspotOauthCode() *CreateFlowsVaultConnectionHubspotOauthCode {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionHubspotOauthCode
}

func (c *CreateFlowsVaultConnectionHubspot) GetCreateFlowsVaultConnectionHubspotUninitialized() *CreateFlowsVaultConnectionHubspotUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionHubspotUninitialized
}

func (c *CreateFlowsVaultConnectionHubspot) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionHubspotAPIKey := new(CreateFlowsVaultConnectionHubspotAPIKey)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionHubspotAPIKey); err == nil {
		c.typ = "CreateFlowsVaultConnectionHubspotAPIKey"
		c.CreateFlowsVaultConnectionHubspotAPIKey = valueCreateFlowsVaultConnectionHubspotAPIKey
		return nil
	}
	valueCreateFlowsVaultConnectionHubspotOauthCode := new(CreateFlowsVaultConnectionHubspotOauthCode)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionHubspotOauthCode); err == nil {
		c.typ = "CreateFlowsVaultConnectionHubspotOauthCode"
		c.CreateFlowsVaultConnectionHubspotOauthCode = valueCreateFlowsVaultConnectionHubspotOauthCode
		return nil
	}
	valueCreateFlowsVaultConnectionHubspotUninitialized := new(CreateFlowsVaultConnectionHubspotUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionHubspotUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionHubspotUninitialized"
		c.CreateFlowsVaultConnectionHubspotUninitialized = valueCreateFlowsVaultConnectionHubspotUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionHubspot) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionHubspotAPIKey" || c.CreateFlowsVaultConnectionHubspotAPIKey != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionHubspotAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionHubspotOauthCode" || c.CreateFlowsVaultConnectionHubspotOauthCode != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionHubspotOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionHubspotUninitialized" || c.CreateFlowsVaultConnectionHubspotUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionHubspotUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionHubspotVisitor interface {
	VisitCreateFlowsVaultConnectionHubspotAPIKey(*CreateFlowsVaultConnectionHubspotAPIKey) error
	VisitCreateFlowsVaultConnectionHubspotOauthCode(*CreateFlowsVaultConnectionHubspotOauthCode) error
	VisitCreateFlowsVaultConnectionHubspotUninitialized(*CreateFlowsVaultConnectionHubspotUninitialized) error
}

func (c *CreateFlowsVaultConnectionHubspot) Accept(visitor CreateFlowsVaultConnectionHubspotVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionHubspotAPIKey" || c.CreateFlowsVaultConnectionHubspotAPIKey != nil {
		return visitor.VisitCreateFlowsVaultConnectionHubspotAPIKey(c.CreateFlowsVaultConnectionHubspotAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionHubspotOauthCode" || c.CreateFlowsVaultConnectionHubspotOauthCode != nil {
		return visitor.VisitCreateFlowsVaultConnectionHubspotOauthCode(c.CreateFlowsVaultConnectionHubspotOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionHubspotUninitialized" || c.CreateFlowsVaultConnectionHubspotUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionHubspotUninitialized(c.CreateFlowsVaultConnectionHubspotUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionHubspotAPIKeyFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionHubspotAPIKeyFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionHubspotAPIKeyFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionHubspotAPIKey struct {
	// Flows Vault Connection name.
	Name  string                               `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDHubspotEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupAPIKey      `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionHubspotAPIKey) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionHubspotAPIKey) GetSetup() *FlowsVaultConnectioSetupAPIKey {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionHubspotAPIKey) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionHubspotAPIKeyFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionHubspotAPIKey) SetAppID(appID FlowsVaultConnectionAppIDHubspotEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionHubspotAPIKeyFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionHubspotAPIKey) SetSetup(setup *FlowsVaultConnectioSetupAPIKey) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionHubspotAPIKeyFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionHubspotAPIKey) 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 (
	createFlowsVaultConnectionHubspotOauthCodeFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionHubspotOauthCodeFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionHubspotOauthCodeFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionHubspotOauthCode struct {
	// Flows Vault Connection name.
	Name  string                               `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDHubspotEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupOauthCode   `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionHubspotOauthCode) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionHubspotOauthCode) GetSetup() *FlowsVaultConnectioSetupOauthCode {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionHubspotOauthCode) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionHubspotOauthCodeFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionHubspotOauthCode) SetAppID(appID FlowsVaultConnectionAppIDHubspotEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionHubspotOauthCodeFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionHubspotOauthCode) SetSetup(setup *FlowsVaultConnectioSetupOauthCode) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionHubspotOauthCodeFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionHubspotOauthCode) 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 (
	createFlowsVaultConnectionHubspotUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionHubspotUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionHubspotUninitialized struct {
	// Flows Vault Connection name.
	Name  string                               `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDHubspotEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionHubspotUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionHubspotUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionHubspotUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionHubspotUninitialized) SetAppID(appID FlowsVaultConnectionAppIDHubspotEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionHubspotUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionHubspotUninitialized) 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)
}

type CreateFlowsVaultConnectionJwt struct {
	CreateFlowsVaultConnectionJwtJwt           *CreateFlowsVaultConnectionJwtJwt
	CreateFlowsVaultConnectionJwtUninitialized *CreateFlowsVaultConnectionJwtUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionJwt) GetCreateFlowsVaultConnectionJwtJwt() *CreateFlowsVaultConnectionJwtJwt {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionJwtJwt
}

func (c *CreateFlowsVaultConnectionJwt) GetCreateFlowsVaultConnectionJwtUninitialized() *CreateFlowsVaultConnectionJwtUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionJwtUninitialized
}

func (c *CreateFlowsVaultConnectionJwt) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionJwtJwt := new(CreateFlowsVaultConnectionJwtJwt)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionJwtJwt); err == nil {
		c.typ = "CreateFlowsVaultConnectionJwtJwt"
		c.CreateFlowsVaultConnectionJwtJwt = valueCreateFlowsVaultConnectionJwtJwt
		return nil
	}
	valueCreateFlowsVaultConnectionJwtUninitialized := new(CreateFlowsVaultConnectionJwtUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionJwtUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionJwtUninitialized"
		c.CreateFlowsVaultConnectionJwtUninitialized = valueCreateFlowsVaultConnectionJwtUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionJwt) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionJwtJwt" || c.CreateFlowsVaultConnectionJwtJwt != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionJwtJwt)
	}
	if c.typ == "CreateFlowsVaultConnectionJwtUninitialized" || c.CreateFlowsVaultConnectionJwtUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionJwtUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionJwtVisitor interface {
	VisitCreateFlowsVaultConnectionJwtJwt(*CreateFlowsVaultConnectionJwtJwt) error
	VisitCreateFlowsVaultConnectionJwtUninitialized(*CreateFlowsVaultConnectionJwtUninitialized) error
}

func (c *CreateFlowsVaultConnectionJwt) Accept(visitor CreateFlowsVaultConnectionJwtVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionJwtJwt" || c.CreateFlowsVaultConnectionJwtJwt != nil {
		return visitor.VisitCreateFlowsVaultConnectionJwtJwt(c.CreateFlowsVaultConnectionJwtJwt)
	}
	if c.typ == "CreateFlowsVaultConnectionJwtUninitialized" || c.CreateFlowsVaultConnectionJwtUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionJwtUninitialized(c.CreateFlowsVaultConnectionJwtUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionJwtJwtFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionJwtJwtFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionJwtJwtFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionJwtJwt struct {
	// Flows Vault Connection name.
	Name  string                           `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDJwtEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupJwt     `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionJwtJwt) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionJwtJwt) GetSetup() *FlowsVaultConnectioSetupJwt {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionJwtJwt) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionJwtJwtFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionJwtJwt) SetAppID(appID FlowsVaultConnectionAppIDJwtEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionJwtJwtFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionJwtJwt) SetSetup(setup *FlowsVaultConnectioSetupJwt) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionJwtJwtFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionJwtJwt) 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 (
	createFlowsVaultConnectionJwtUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionJwtUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionJwtUninitialized struct {
	// Flows Vault Connection name.
	Name  string                           `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDJwtEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionJwtUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionJwtUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionJwtUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionJwtUninitialized) SetAppID(appID FlowsVaultConnectionAppIDJwtEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionJwtUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionJwtUninitialized) 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)
}

type CreateFlowsVaultConnectionMailchimp struct {
	CreateFlowsVaultConnectionMailchimpAPIKey        *CreateFlowsVaultConnectionMailchimpAPIKey
	CreateFlowsVaultConnectionMailchimpOauthCode     *CreateFlowsVaultConnectionMailchimpOauthCode
	CreateFlowsVaultConnectionMailchimpUninitialized *CreateFlowsVaultConnectionMailchimpUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionMailchimp) GetCreateFlowsVaultConnectionMailchimpAPIKey() *CreateFlowsVaultConnectionMailchimpAPIKey {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionMailchimpAPIKey
}

func (c *CreateFlowsVaultConnectionMailchimp) GetCreateFlowsVaultConnectionMailchimpOauthCode() *CreateFlowsVaultConnectionMailchimpOauthCode {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionMailchimpOauthCode
}

func (c *CreateFlowsVaultConnectionMailchimp) GetCreateFlowsVaultConnectionMailchimpUninitialized() *CreateFlowsVaultConnectionMailchimpUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionMailchimpUninitialized
}

func (c *CreateFlowsVaultConnectionMailchimp) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionMailchimpAPIKey := new(CreateFlowsVaultConnectionMailchimpAPIKey)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionMailchimpAPIKey); err == nil {
		c.typ = "CreateFlowsVaultConnectionMailchimpAPIKey"
		c.CreateFlowsVaultConnectionMailchimpAPIKey = valueCreateFlowsVaultConnectionMailchimpAPIKey
		return nil
	}
	valueCreateFlowsVaultConnectionMailchimpOauthCode := new(CreateFlowsVaultConnectionMailchimpOauthCode)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionMailchimpOauthCode); err == nil {
		c.typ = "CreateFlowsVaultConnectionMailchimpOauthCode"
		c.CreateFlowsVaultConnectionMailchimpOauthCode = valueCreateFlowsVaultConnectionMailchimpOauthCode
		return nil
	}
	valueCreateFlowsVaultConnectionMailchimpUninitialized := new(CreateFlowsVaultConnectionMailchimpUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionMailchimpUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionMailchimpUninitialized"
		c.CreateFlowsVaultConnectionMailchimpUninitialized = valueCreateFlowsVaultConnectionMailchimpUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionMailchimp) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionMailchimpAPIKey" || c.CreateFlowsVaultConnectionMailchimpAPIKey != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionMailchimpAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionMailchimpOauthCode" || c.CreateFlowsVaultConnectionMailchimpOauthCode != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionMailchimpOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionMailchimpUninitialized" || c.CreateFlowsVaultConnectionMailchimpUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionMailchimpUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionMailchimpVisitor interface {
	VisitCreateFlowsVaultConnectionMailchimpAPIKey(*CreateFlowsVaultConnectionMailchimpAPIKey) error
	VisitCreateFlowsVaultConnectionMailchimpOauthCode(*CreateFlowsVaultConnectionMailchimpOauthCode) error
	VisitCreateFlowsVaultConnectionMailchimpUninitialized(*CreateFlowsVaultConnectionMailchimpUninitialized) error
}

func (c *CreateFlowsVaultConnectionMailchimp) Accept(visitor CreateFlowsVaultConnectionMailchimpVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionMailchimpAPIKey" || c.CreateFlowsVaultConnectionMailchimpAPIKey != nil {
		return visitor.VisitCreateFlowsVaultConnectionMailchimpAPIKey(c.CreateFlowsVaultConnectionMailchimpAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionMailchimpOauthCode" || c.CreateFlowsVaultConnectionMailchimpOauthCode != nil {
		return visitor.VisitCreateFlowsVaultConnectionMailchimpOauthCode(c.CreateFlowsVaultConnectionMailchimpOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionMailchimpUninitialized" || c.CreateFlowsVaultConnectionMailchimpUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionMailchimpUninitialized(c.CreateFlowsVaultConnectionMailchimpUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionMailchimpAPIKeyFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionMailchimpAPIKeyFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionMailchimpAPIKeyFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionMailchimpAPIKey struct {
	// Flows Vault Connection name.
	Name  string                                 `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDMailchimpEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupSecretAPIKey  `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionMailchimpAPIKey) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionMailchimpAPIKey) GetSetup() *FlowsVaultConnectioSetupSecretAPIKey {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionMailchimpAPIKey) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionMailchimpAPIKeyFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionMailchimpAPIKey) SetAppID(appID FlowsVaultConnectionAppIDMailchimpEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionMailchimpAPIKeyFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionMailchimpAPIKey) SetSetup(setup *FlowsVaultConnectioSetupSecretAPIKey) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionMailchimpAPIKeyFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionMailchimpAPIKey) 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 (
	createFlowsVaultConnectionMailchimpOauthCodeFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionMailchimpOauthCodeFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionMailchimpOauthCodeFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionMailchimpOauthCode struct {
	// Flows Vault Connection name.
	Name  string                                 `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDMailchimpEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupOauthCode     `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionMailchimpOauthCode) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionMailchimpOauthCode) GetSetup() *FlowsVaultConnectioSetupOauthCode {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionMailchimpOauthCode) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionMailchimpOauthCodeFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionMailchimpOauthCode) SetAppID(appID FlowsVaultConnectionAppIDMailchimpEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionMailchimpOauthCodeFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionMailchimpOauthCode) SetSetup(setup *FlowsVaultConnectioSetupOauthCode) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionMailchimpOauthCodeFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionMailchimpOauthCode) 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 (
	createFlowsVaultConnectionMailchimpUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionMailchimpUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionMailchimpUninitialized struct {
	// Flows Vault Connection name.
	Name  string                                 `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDMailchimpEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionMailchimpUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionMailchimpUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionMailchimpUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionMailchimpUninitialized) SetAppID(appID FlowsVaultConnectionAppIDMailchimpEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionMailchimpUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionMailchimpUninitialized) 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)
}

type CreateFlowsVaultConnectionMailjet struct {
	CreateFlowsVaultConnectionMailjetAPIKey        *CreateFlowsVaultConnectionMailjetAPIKey
	CreateFlowsVaultConnectionMailjetUninitialized *CreateFlowsVaultConnectionMailjetUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionMailjet) GetCreateFlowsVaultConnectionMailjetAPIKey() *CreateFlowsVaultConnectionMailjetAPIKey {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionMailjetAPIKey
}

func (c *CreateFlowsVaultConnectionMailjet) GetCreateFlowsVaultConnectionMailjetUninitialized() *CreateFlowsVaultConnectionMailjetUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionMailjetUninitialized
}

func (c *CreateFlowsVaultConnectionMailjet) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionMailjetAPIKey := new(CreateFlowsVaultConnectionMailjetAPIKey)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionMailjetAPIKey); err == nil {
		c.typ = "CreateFlowsVaultConnectionMailjetAPIKey"
		c.CreateFlowsVaultConnectionMailjetAPIKey = valueCreateFlowsVaultConnectionMailjetAPIKey
		return nil
	}
	valueCreateFlowsVaultConnectionMailjetUninitialized := new(CreateFlowsVaultConnectionMailjetUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionMailjetUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionMailjetUninitialized"
		c.CreateFlowsVaultConnectionMailjetUninitialized = valueCreateFlowsVaultConnectionMailjetUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionMailjet) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionMailjetAPIKey" || c.CreateFlowsVaultConnectionMailjetAPIKey != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionMailjetAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionMailjetUninitialized" || c.CreateFlowsVaultConnectionMailjetUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionMailjetUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionMailjetVisitor interface {
	VisitCreateFlowsVaultConnectionMailjetAPIKey(*CreateFlowsVaultConnectionMailjetAPIKey) error
	VisitCreateFlowsVaultConnectionMailjetUninitialized(*CreateFlowsVaultConnectionMailjetUninitialized) error
}

func (c *CreateFlowsVaultConnectionMailjet) Accept(visitor CreateFlowsVaultConnectionMailjetVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionMailjetAPIKey" || c.CreateFlowsVaultConnectionMailjetAPIKey != nil {
		return visitor.VisitCreateFlowsVaultConnectionMailjetAPIKey(c.CreateFlowsVaultConnectionMailjetAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionMailjetUninitialized" || c.CreateFlowsVaultConnectionMailjetUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionMailjetUninitialized(c.CreateFlowsVaultConnectionMailjetUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionMailjetAPIKeyFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionMailjetAPIKeyFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionMailjetAPIKeyFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionMailjetAPIKey struct {
	// Flows Vault Connection name.
	Name  string                                 `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDMailjetEnum   `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupMailjetAPIKey `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionMailjetAPIKey) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionMailjetAPIKey) GetSetup() *FlowsVaultConnectioSetupMailjetAPIKey {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionMailjetAPIKey) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionMailjetAPIKeyFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionMailjetAPIKey) SetAppID(appID FlowsVaultConnectionAppIDMailjetEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionMailjetAPIKeyFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionMailjetAPIKey) SetSetup(setup *FlowsVaultConnectioSetupMailjetAPIKey) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionMailjetAPIKeyFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionMailjetAPIKey) 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 (
	createFlowsVaultConnectionMailjetUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionMailjetUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionMailjetUninitialized struct {
	// Flows Vault Connection name.
	Name  string                               `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDMailjetEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionMailjetUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionMailjetUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionMailjetUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionMailjetUninitialized) SetAppID(appID FlowsVaultConnectionAppIDMailjetEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionMailjetUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionMailjetUninitialized) 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)
}

type CreateFlowsVaultConnectionPipedrive struct {
	CreateFlowsVaultConnectionPipedriveToken         *CreateFlowsVaultConnectionPipedriveToken
	CreateFlowsVaultConnectionPipedriveOauthCode     *CreateFlowsVaultConnectionPipedriveOauthCode
	CreateFlowsVaultConnectionPipedriveUninitialized *CreateFlowsVaultConnectionPipedriveUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionPipedrive) GetCreateFlowsVaultConnectionPipedriveToken() *CreateFlowsVaultConnectionPipedriveToken {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionPipedriveToken
}

func (c *CreateFlowsVaultConnectionPipedrive) GetCreateFlowsVaultConnectionPipedriveOauthCode() *CreateFlowsVaultConnectionPipedriveOauthCode {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionPipedriveOauthCode
}

func (c *CreateFlowsVaultConnectionPipedrive) GetCreateFlowsVaultConnectionPipedriveUninitialized() *CreateFlowsVaultConnectionPipedriveUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionPipedriveUninitialized
}

func (c *CreateFlowsVaultConnectionPipedrive) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionPipedriveToken := new(CreateFlowsVaultConnectionPipedriveToken)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionPipedriveToken); err == nil {
		c.typ = "CreateFlowsVaultConnectionPipedriveToken"
		c.CreateFlowsVaultConnectionPipedriveToken = valueCreateFlowsVaultConnectionPipedriveToken
		return nil
	}
	valueCreateFlowsVaultConnectionPipedriveOauthCode := new(CreateFlowsVaultConnectionPipedriveOauthCode)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionPipedriveOauthCode); err == nil {
		c.typ = "CreateFlowsVaultConnectionPipedriveOauthCode"
		c.CreateFlowsVaultConnectionPipedriveOauthCode = valueCreateFlowsVaultConnectionPipedriveOauthCode
		return nil
	}
	valueCreateFlowsVaultConnectionPipedriveUninitialized := new(CreateFlowsVaultConnectionPipedriveUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionPipedriveUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionPipedriveUninitialized"
		c.CreateFlowsVaultConnectionPipedriveUninitialized = valueCreateFlowsVaultConnectionPipedriveUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionPipedrive) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionPipedriveToken" || c.CreateFlowsVaultConnectionPipedriveToken != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionPipedriveToken)
	}
	if c.typ == "CreateFlowsVaultConnectionPipedriveOauthCode" || c.CreateFlowsVaultConnectionPipedriveOauthCode != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionPipedriveOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionPipedriveUninitialized" || c.CreateFlowsVaultConnectionPipedriveUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionPipedriveUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionPipedriveVisitor interface {
	VisitCreateFlowsVaultConnectionPipedriveToken(*CreateFlowsVaultConnectionPipedriveToken) error
	VisitCreateFlowsVaultConnectionPipedriveOauthCode(*CreateFlowsVaultConnectionPipedriveOauthCode) error
	VisitCreateFlowsVaultConnectionPipedriveUninitialized(*CreateFlowsVaultConnectionPipedriveUninitialized) error
}

func (c *CreateFlowsVaultConnectionPipedrive) Accept(visitor CreateFlowsVaultConnectionPipedriveVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionPipedriveToken" || c.CreateFlowsVaultConnectionPipedriveToken != nil {
		return visitor.VisitCreateFlowsVaultConnectionPipedriveToken(c.CreateFlowsVaultConnectionPipedriveToken)
	}
	if c.typ == "CreateFlowsVaultConnectionPipedriveOauthCode" || c.CreateFlowsVaultConnectionPipedriveOauthCode != nil {
		return visitor.VisitCreateFlowsVaultConnectionPipedriveOauthCode(c.CreateFlowsVaultConnectionPipedriveOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionPipedriveUninitialized" || c.CreateFlowsVaultConnectionPipedriveUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionPipedriveUninitialized(c.CreateFlowsVaultConnectionPipedriveUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionPipedriveOauthCodeFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionPipedriveOauthCodeFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionPipedriveOauthCodeFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionPipedriveOauthCode struct {
	// Flows Vault Connection name.
	Name  string                                 `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDPipedriveEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupOauthCode     `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionPipedriveOauthCode) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionPipedriveOauthCode) GetSetup() *FlowsVaultConnectioSetupOauthCode {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionPipedriveOauthCode) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionPipedriveOauthCodeFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionPipedriveOauthCode) SetAppID(appID FlowsVaultConnectionAppIDPipedriveEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionPipedriveOauthCodeFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionPipedriveOauthCode) SetSetup(setup *FlowsVaultConnectioSetupOauthCode) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionPipedriveOauthCodeFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionPipedriveOauthCode) 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 (
	createFlowsVaultConnectionPipedriveTokenFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionPipedriveTokenFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionPipedriveTokenFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionPipedriveToken struct {
	// Flows Vault Connection name.
	Name  string                                 `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDPipedriveEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupToken         `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionPipedriveToken) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionPipedriveToken) GetSetup() *FlowsVaultConnectioSetupToken {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionPipedriveToken) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionPipedriveTokenFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionPipedriveToken) SetAppID(appID FlowsVaultConnectionAppIDPipedriveEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionPipedriveTokenFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionPipedriveToken) SetSetup(setup *FlowsVaultConnectioSetupToken) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionPipedriveTokenFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionPipedriveToken) 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 (
	createFlowsVaultConnectionPipedriveUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionPipedriveUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionPipedriveUninitialized struct {
	// Flows Vault Connection name.
	Name  string                                 `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDPipedriveEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionPipedriveUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionPipedriveUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionPipedriveUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionPipedriveUninitialized) SetAppID(appID FlowsVaultConnectionAppIDPipedriveEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionPipedriveUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionPipedriveUninitialized) 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)
}

type CreateFlowsVaultConnectionRequestContent struct {
	CreateFlowsVaultConnectionActivecampaign *CreateFlowsVaultConnectionActivecampaign
	CreateFlowsVaultConnectionAirtable       *CreateFlowsVaultConnectionAirtable
	CreateFlowsVaultConnectionAuth0          *CreateFlowsVaultConnectionAuth0
	CreateFlowsVaultConnectionBigquery       *CreateFlowsVaultConnectionBigquery
	CreateFlowsVaultConnectionClearbit       *CreateFlowsVaultConnectionClearbit
	CreateFlowsVaultConnectionDocusign       *CreateFlowsVaultConnectionDocusign
	CreateFlowsVaultConnectionGoogleSheets   *CreateFlowsVaultConnectionGoogleSheets
	CreateFlowsVaultConnectionHTTP           *CreateFlowsVaultConnectionHTTP
	CreateFlowsVaultConnectionHubspot        *CreateFlowsVaultConnectionHubspot
	CreateFlowsVaultConnectionJwt            *CreateFlowsVaultConnectionJwt
	CreateFlowsVaultConnectionMailchimp      *CreateFlowsVaultConnectionMailchimp
	CreateFlowsVaultConnectionMailjet        *CreateFlowsVaultConnectionMailjet
	CreateFlowsVaultConnectionPipedrive      *CreateFlowsVaultConnectionPipedrive
	CreateFlowsVaultConnectionSalesforce     *CreateFlowsVaultConnectionSalesforce
	CreateFlowsVaultConnectionSendgrid       *CreateFlowsVaultConnectionSendgrid
	CreateFlowsVaultConnectionSlack          *CreateFlowsVaultConnectionSlack
	CreateFlowsVaultConnectionStripe         *CreateFlowsVaultConnectionStripe
	CreateFlowsVaultConnectionTelegram       *CreateFlowsVaultConnectionTelegram
	CreateFlowsVaultConnectionTwilio         *CreateFlowsVaultConnectionTwilio
	CreateFlowsVaultConnectionWhatsapp       *CreateFlowsVaultConnectionWhatsapp
	CreateFlowsVaultConnectionZapier         *CreateFlowsVaultConnectionZapier

	typ string
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionActivecampaign() *CreateFlowsVaultConnectionActivecampaign {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionActivecampaign
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionAirtable() *CreateFlowsVaultConnectionAirtable {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionAirtable
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionAuth0() *CreateFlowsVaultConnectionAuth0 {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionAuth0
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionBigquery() *CreateFlowsVaultConnectionBigquery {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionBigquery
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionClearbit() *CreateFlowsVaultConnectionClearbit {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionClearbit
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionDocusign() *CreateFlowsVaultConnectionDocusign {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionDocusign
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionGoogleSheets() *CreateFlowsVaultConnectionGoogleSheets {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionGoogleSheets
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionHTTP() *CreateFlowsVaultConnectionHTTP {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionHTTP
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionHubspot() *CreateFlowsVaultConnectionHubspot {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionHubspot
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionJwt() *CreateFlowsVaultConnectionJwt {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionJwt
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionMailchimp() *CreateFlowsVaultConnectionMailchimp {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionMailchimp
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionMailjet() *CreateFlowsVaultConnectionMailjet {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionMailjet
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionPipedrive() *CreateFlowsVaultConnectionPipedrive {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionPipedrive
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionSalesforce() *CreateFlowsVaultConnectionSalesforce {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionSalesforce
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionSendgrid() *CreateFlowsVaultConnectionSendgrid {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionSendgrid
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionSlack() *CreateFlowsVaultConnectionSlack {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionSlack
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionStripe() *CreateFlowsVaultConnectionStripe {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionStripe
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionTelegram() *CreateFlowsVaultConnectionTelegram {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionTelegram
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionTwilio() *CreateFlowsVaultConnectionTwilio {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionTwilio
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionWhatsapp() *CreateFlowsVaultConnectionWhatsapp {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionWhatsapp
}

func (c *CreateFlowsVaultConnectionRequestContent) GetCreateFlowsVaultConnectionZapier() *CreateFlowsVaultConnectionZapier {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionZapier
}

func (c *CreateFlowsVaultConnectionRequestContent) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionActivecampaign := new(CreateFlowsVaultConnectionActivecampaign)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionActivecampaign); err == nil {
		c.typ = "CreateFlowsVaultConnectionActivecampaign"
		c.CreateFlowsVaultConnectionActivecampaign = valueCreateFlowsVaultConnectionActivecampaign
		return nil
	}
	valueCreateFlowsVaultConnectionAirtable := new(CreateFlowsVaultConnectionAirtable)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionAirtable); err == nil {
		c.typ = "CreateFlowsVaultConnectionAirtable"
		c.CreateFlowsVaultConnectionAirtable = valueCreateFlowsVaultConnectionAirtable
		return nil
	}
	valueCreateFlowsVaultConnectionAuth0 := new(CreateFlowsVaultConnectionAuth0)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionAuth0); err == nil {
		c.typ = "CreateFlowsVaultConnectionAuth0"
		c.CreateFlowsVaultConnectionAuth0 = valueCreateFlowsVaultConnectionAuth0
		return nil
	}
	valueCreateFlowsVaultConnectionBigquery := new(CreateFlowsVaultConnectionBigquery)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionBigquery); err == nil {
		c.typ = "CreateFlowsVaultConnectionBigquery"
		c.CreateFlowsVaultConnectionBigquery = valueCreateFlowsVaultConnectionBigquery
		return nil
	}
	valueCreateFlowsVaultConnectionClearbit := new(CreateFlowsVaultConnectionClearbit)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionClearbit); err == nil {
		c.typ = "CreateFlowsVaultConnectionClearbit"
		c.CreateFlowsVaultConnectionClearbit = valueCreateFlowsVaultConnectionClearbit
		return nil
	}
	valueCreateFlowsVaultConnectionDocusign := new(CreateFlowsVaultConnectionDocusign)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionDocusign); err == nil {
		c.typ = "CreateFlowsVaultConnectionDocusign"
		c.CreateFlowsVaultConnectionDocusign = valueCreateFlowsVaultConnectionDocusign
		return nil
	}
	valueCreateFlowsVaultConnectionGoogleSheets := new(CreateFlowsVaultConnectionGoogleSheets)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionGoogleSheets); err == nil {
		c.typ = "CreateFlowsVaultConnectionGoogleSheets"
		c.CreateFlowsVaultConnectionGoogleSheets = valueCreateFlowsVaultConnectionGoogleSheets
		return nil
	}
	valueCreateFlowsVaultConnectionHTTP := new(CreateFlowsVaultConnectionHTTP)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionHTTP); err == nil {
		c.typ = "CreateFlowsVaultConnectionHTTP"
		c.CreateFlowsVaultConnectionHTTP = valueCreateFlowsVaultConnectionHTTP
		return nil
	}
	valueCreateFlowsVaultConnectionHubspot := new(CreateFlowsVaultConnectionHubspot)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionHubspot); err == nil {
		c.typ = "CreateFlowsVaultConnectionHubspot"
		c.CreateFlowsVaultConnectionHubspot = valueCreateFlowsVaultConnectionHubspot
		return nil
	}
	valueCreateFlowsVaultConnectionJwt := new(CreateFlowsVaultConnectionJwt)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionJwt); err == nil {
		c.typ = "CreateFlowsVaultConnectionJwt"
		c.CreateFlowsVaultConnectionJwt = valueCreateFlowsVaultConnectionJwt
		return nil
	}
	valueCreateFlowsVaultConnectionMailchimp := new(CreateFlowsVaultConnectionMailchimp)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionMailchimp); err == nil {
		c.typ = "CreateFlowsVaultConnectionMailchimp"
		c.CreateFlowsVaultConnectionMailchimp = valueCreateFlowsVaultConnectionMailchimp
		return nil
	}
	valueCreateFlowsVaultConnectionMailjet := new(CreateFlowsVaultConnectionMailjet)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionMailjet); err == nil {
		c.typ = "CreateFlowsVaultConnectionMailjet"
		c.CreateFlowsVaultConnectionMailjet = valueCreateFlowsVaultConnectionMailjet
		return nil
	}
	valueCreateFlowsVaultConnectionPipedrive := new(CreateFlowsVaultConnectionPipedrive)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionPipedrive); err == nil {
		c.typ = "CreateFlowsVaultConnectionPipedrive"
		c.CreateFlowsVaultConnectionPipedrive = valueCreateFlowsVaultConnectionPipedrive
		return nil
	}
	valueCreateFlowsVaultConnectionSalesforce := new(CreateFlowsVaultConnectionSalesforce)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionSalesforce); err == nil {
		c.typ = "CreateFlowsVaultConnectionSalesforce"
		c.CreateFlowsVaultConnectionSalesforce = valueCreateFlowsVaultConnectionSalesforce
		return nil
	}
	valueCreateFlowsVaultConnectionSendgrid := new(CreateFlowsVaultConnectionSendgrid)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionSendgrid); err == nil {
		c.typ = "CreateFlowsVaultConnectionSendgrid"
		c.CreateFlowsVaultConnectionSendgrid = valueCreateFlowsVaultConnectionSendgrid
		return nil
	}
	valueCreateFlowsVaultConnectionSlack := new(CreateFlowsVaultConnectionSlack)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionSlack); err == nil {
		c.typ = "CreateFlowsVaultConnectionSlack"
		c.CreateFlowsVaultConnectionSlack = valueCreateFlowsVaultConnectionSlack
		return nil
	}
	valueCreateFlowsVaultConnectionStripe := new(CreateFlowsVaultConnectionStripe)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionStripe); err == nil {
		c.typ = "CreateFlowsVaultConnectionStripe"
		c.CreateFlowsVaultConnectionStripe = valueCreateFlowsVaultConnectionStripe
		return nil
	}
	valueCreateFlowsVaultConnectionTelegram := new(CreateFlowsVaultConnectionTelegram)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionTelegram); err == nil {
		c.typ = "CreateFlowsVaultConnectionTelegram"
		c.CreateFlowsVaultConnectionTelegram = valueCreateFlowsVaultConnectionTelegram
		return nil
	}
	valueCreateFlowsVaultConnectionTwilio := new(CreateFlowsVaultConnectionTwilio)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionTwilio); err == nil {
		c.typ = "CreateFlowsVaultConnectionTwilio"
		c.CreateFlowsVaultConnectionTwilio = valueCreateFlowsVaultConnectionTwilio
		return nil
	}
	valueCreateFlowsVaultConnectionWhatsapp := new(CreateFlowsVaultConnectionWhatsapp)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionWhatsapp); err == nil {
		c.typ = "CreateFlowsVaultConnectionWhatsapp"
		c.CreateFlowsVaultConnectionWhatsapp = valueCreateFlowsVaultConnectionWhatsapp
		return nil
	}
	valueCreateFlowsVaultConnectionZapier := new(CreateFlowsVaultConnectionZapier)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionZapier); err == nil {
		c.typ = "CreateFlowsVaultConnectionZapier"
		c.CreateFlowsVaultConnectionZapier = valueCreateFlowsVaultConnectionZapier
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionRequestContent) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionActivecampaign" || c.CreateFlowsVaultConnectionActivecampaign != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionActivecampaign)
	}
	if c.typ == "CreateFlowsVaultConnectionAirtable" || c.CreateFlowsVaultConnectionAirtable != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionAirtable)
	}
	if c.typ == "CreateFlowsVaultConnectionAuth0" || c.CreateFlowsVaultConnectionAuth0 != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionAuth0)
	}
	if c.typ == "CreateFlowsVaultConnectionBigquery" || c.CreateFlowsVaultConnectionBigquery != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionBigquery)
	}
	if c.typ == "CreateFlowsVaultConnectionClearbit" || c.CreateFlowsVaultConnectionClearbit != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionClearbit)
	}
	if c.typ == "CreateFlowsVaultConnectionDocusign" || c.CreateFlowsVaultConnectionDocusign != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionDocusign)
	}
	if c.typ == "CreateFlowsVaultConnectionGoogleSheets" || c.CreateFlowsVaultConnectionGoogleSheets != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionGoogleSheets)
	}
	if c.typ == "CreateFlowsVaultConnectionHTTP" || c.CreateFlowsVaultConnectionHTTP != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionHTTP)
	}
	if c.typ == "CreateFlowsVaultConnectionHubspot" || c.CreateFlowsVaultConnectionHubspot != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionHubspot)
	}
	if c.typ == "CreateFlowsVaultConnectionJwt" || c.CreateFlowsVaultConnectionJwt != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionJwt)
	}
	if c.typ == "CreateFlowsVaultConnectionMailchimp" || c.CreateFlowsVaultConnectionMailchimp != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionMailchimp)
	}
	if c.typ == "CreateFlowsVaultConnectionMailjet" || c.CreateFlowsVaultConnectionMailjet != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionMailjet)
	}
	if c.typ == "CreateFlowsVaultConnectionPipedrive" || c.CreateFlowsVaultConnectionPipedrive != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionPipedrive)
	}
	if c.typ == "CreateFlowsVaultConnectionSalesforce" || c.CreateFlowsVaultConnectionSalesforce != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionSalesforce)
	}
	if c.typ == "CreateFlowsVaultConnectionSendgrid" || c.CreateFlowsVaultConnectionSendgrid != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionSendgrid)
	}
	if c.typ == "CreateFlowsVaultConnectionSlack" || c.CreateFlowsVaultConnectionSlack != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionSlack)
	}
	if c.typ == "CreateFlowsVaultConnectionStripe" || c.CreateFlowsVaultConnectionStripe != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionStripe)
	}
	if c.typ == "CreateFlowsVaultConnectionTelegram" || c.CreateFlowsVaultConnectionTelegram != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionTelegram)
	}
	if c.typ == "CreateFlowsVaultConnectionTwilio" || c.CreateFlowsVaultConnectionTwilio != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionTwilio)
	}
	if c.typ == "CreateFlowsVaultConnectionWhatsapp" || c.CreateFlowsVaultConnectionWhatsapp != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionWhatsapp)
	}
	if c.typ == "CreateFlowsVaultConnectionZapier" || c.CreateFlowsVaultConnectionZapier != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionZapier)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionRequestContentVisitor interface {
	VisitCreateFlowsVaultConnectionActivecampaign(*CreateFlowsVaultConnectionActivecampaign) error
	VisitCreateFlowsVaultConnectionAirtable(*CreateFlowsVaultConnectionAirtable) error
	VisitCreateFlowsVaultConnectionAuth0(*CreateFlowsVaultConnectionAuth0) error
	VisitCreateFlowsVaultConnectionBigquery(*CreateFlowsVaultConnectionBigquery) error
	VisitCreateFlowsVaultConnectionClearbit(*CreateFlowsVaultConnectionClearbit) error
	VisitCreateFlowsVaultConnectionDocusign(*CreateFlowsVaultConnectionDocusign) error
	VisitCreateFlowsVaultConnectionGoogleSheets(*CreateFlowsVaultConnectionGoogleSheets) error
	VisitCreateFlowsVaultConnectionHTTP(*CreateFlowsVaultConnectionHTTP) error
	VisitCreateFlowsVaultConnectionHubspot(*CreateFlowsVaultConnectionHubspot) error
	VisitCreateFlowsVaultConnectionJwt(*CreateFlowsVaultConnectionJwt) error
	VisitCreateFlowsVaultConnectionMailchimp(*CreateFlowsVaultConnectionMailchimp) error
	VisitCreateFlowsVaultConnectionMailjet(*CreateFlowsVaultConnectionMailjet) error
	VisitCreateFlowsVaultConnectionPipedrive(*CreateFlowsVaultConnectionPipedrive) error
	VisitCreateFlowsVaultConnectionSalesforce(*CreateFlowsVaultConnectionSalesforce) error
	VisitCreateFlowsVaultConnectionSendgrid(*CreateFlowsVaultConnectionSendgrid) error
	VisitCreateFlowsVaultConnectionSlack(*CreateFlowsVaultConnectionSlack) error
	VisitCreateFlowsVaultConnectionStripe(*CreateFlowsVaultConnectionStripe) error
	VisitCreateFlowsVaultConnectionTelegram(*CreateFlowsVaultConnectionTelegram) error
	VisitCreateFlowsVaultConnectionTwilio(*CreateFlowsVaultConnectionTwilio) error
	VisitCreateFlowsVaultConnectionWhatsapp(*CreateFlowsVaultConnectionWhatsapp) error
	VisitCreateFlowsVaultConnectionZapier(*CreateFlowsVaultConnectionZapier) error
}

func (c *CreateFlowsVaultConnectionRequestContent) Accept(visitor CreateFlowsVaultConnectionRequestContentVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionActivecampaign" || c.CreateFlowsVaultConnectionActivecampaign != nil {
		return visitor.VisitCreateFlowsVaultConnectionActivecampaign(c.CreateFlowsVaultConnectionActivecampaign)
	}
	if c.typ == "CreateFlowsVaultConnectionAirtable" || c.CreateFlowsVaultConnectionAirtable != nil {
		return visitor.VisitCreateFlowsVaultConnectionAirtable(c.CreateFlowsVaultConnectionAirtable)
	}
	if c.typ == "CreateFlowsVaultConnectionAuth0" || c.CreateFlowsVaultConnectionAuth0 != nil {
		return visitor.VisitCreateFlowsVaultConnectionAuth0(c.CreateFlowsVaultConnectionAuth0)
	}
	if c.typ == "CreateFlowsVaultConnectionBigquery" || c.CreateFlowsVaultConnectionBigquery != nil {
		return visitor.VisitCreateFlowsVaultConnectionBigquery(c.CreateFlowsVaultConnectionBigquery)
	}
	if c.typ == "CreateFlowsVaultConnectionClearbit" || c.CreateFlowsVaultConnectionClearbit != nil {
		return visitor.VisitCreateFlowsVaultConnectionClearbit(c.CreateFlowsVaultConnectionClearbit)
	}
	if c.typ == "CreateFlowsVaultConnectionDocusign" || c.CreateFlowsVaultConnectionDocusign != nil {
		return visitor.VisitCreateFlowsVaultConnectionDocusign(c.CreateFlowsVaultConnectionDocusign)
	}
	if c.typ == "CreateFlowsVaultConnectionGoogleSheets" || c.CreateFlowsVaultConnectionGoogleSheets != nil {
		return visitor.VisitCreateFlowsVaultConnectionGoogleSheets(c.CreateFlowsVaultConnectionGoogleSheets)
	}
	if c.typ == "CreateFlowsVaultConnectionHTTP" || c.CreateFlowsVaultConnectionHTTP != nil {
		return visitor.VisitCreateFlowsVaultConnectionHTTP(c.CreateFlowsVaultConnectionHTTP)
	}
	if c.typ == "CreateFlowsVaultConnectionHubspot" || c.CreateFlowsVaultConnectionHubspot != nil {
		return visitor.VisitCreateFlowsVaultConnectionHubspot(c.CreateFlowsVaultConnectionHubspot)
	}
	if c.typ == "CreateFlowsVaultConnectionJwt" || c.CreateFlowsVaultConnectionJwt != nil {
		return visitor.VisitCreateFlowsVaultConnectionJwt(c.CreateFlowsVaultConnectionJwt)
	}
	if c.typ == "CreateFlowsVaultConnectionMailchimp" || c.CreateFlowsVaultConnectionMailchimp != nil {
		return visitor.VisitCreateFlowsVaultConnectionMailchimp(c.CreateFlowsVaultConnectionMailchimp)
	}
	if c.typ == "CreateFlowsVaultConnectionMailjet" || c.CreateFlowsVaultConnectionMailjet != nil {
		return visitor.VisitCreateFlowsVaultConnectionMailjet(c.CreateFlowsVaultConnectionMailjet)
	}
	if c.typ == "CreateFlowsVaultConnectionPipedrive" || c.CreateFlowsVaultConnectionPipedrive != nil {
		return visitor.VisitCreateFlowsVaultConnectionPipedrive(c.CreateFlowsVaultConnectionPipedrive)
	}
	if c.typ == "CreateFlowsVaultConnectionSalesforce" || c.CreateFlowsVaultConnectionSalesforce != nil {
		return visitor.VisitCreateFlowsVaultConnectionSalesforce(c.CreateFlowsVaultConnectionSalesforce)
	}
	if c.typ == "CreateFlowsVaultConnectionSendgrid" || c.CreateFlowsVaultConnectionSendgrid != nil {
		return visitor.VisitCreateFlowsVaultConnectionSendgrid(c.CreateFlowsVaultConnectionSendgrid)
	}
	if c.typ == "CreateFlowsVaultConnectionSlack" || c.CreateFlowsVaultConnectionSlack != nil {
		return visitor.VisitCreateFlowsVaultConnectionSlack(c.CreateFlowsVaultConnectionSlack)
	}
	if c.typ == "CreateFlowsVaultConnectionStripe" || c.CreateFlowsVaultConnectionStripe != nil {
		return visitor.VisitCreateFlowsVaultConnectionStripe(c.CreateFlowsVaultConnectionStripe)
	}
	if c.typ == "CreateFlowsVaultConnectionTelegram" || c.CreateFlowsVaultConnectionTelegram != nil {
		return visitor.VisitCreateFlowsVaultConnectionTelegram(c.CreateFlowsVaultConnectionTelegram)
	}
	if c.typ == "CreateFlowsVaultConnectionTwilio" || c.CreateFlowsVaultConnectionTwilio != nil {
		return visitor.VisitCreateFlowsVaultConnectionTwilio(c.CreateFlowsVaultConnectionTwilio)
	}
	if c.typ == "CreateFlowsVaultConnectionWhatsapp" || c.CreateFlowsVaultConnectionWhatsapp != nil {
		return visitor.VisitCreateFlowsVaultConnectionWhatsapp(c.CreateFlowsVaultConnectionWhatsapp)
	}
	if c.typ == "CreateFlowsVaultConnectionZapier" || c.CreateFlowsVaultConnectionZapier != nil {
		return visitor.VisitCreateFlowsVaultConnectionZapier(c.CreateFlowsVaultConnectionZapier)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionResponseContentFieldID          = big.NewInt(1 << 0)
	createFlowsVaultConnectionResponseContentFieldAppID       = big.NewInt(1 << 1)
	createFlowsVaultConnectionResponseContentFieldEnvironment = big.NewInt(1 << 2)
	createFlowsVaultConnectionResponseContentFieldName        = big.NewInt(1 << 3)
	createFlowsVaultConnectionResponseContentFieldAccountName = big.NewInt(1 << 4)
	createFlowsVaultConnectionResponseContentFieldReady       = big.NewInt(1 << 5)
	createFlowsVaultConnectionResponseContentFieldCreatedAt   = big.NewInt(1 << 6)
	createFlowsVaultConnectionResponseContentFieldUpdatedAt   = big.NewInt(1 << 7)
	createFlowsVaultConnectionResponseContentFieldRefreshedAt = big.NewInt(1 << 8)
	createFlowsVaultConnectionResponseContentFieldFingerprint = big.NewInt(1 << 9)
)

type CreateFlowsVaultConnectionResponseContent struct {
	// Flows Vault Connection identifier.
	ID string `json:"id" url:"id"`
	// Flows Vault Connection app identifier.
	AppID string `json:"app_id" url:"app_id"`
	// Flows Vault Connection environment.
	Environment *string `json:"environment,omitempty" url:"environment,omitempty"`
	// Flows Vault Connection name.
	Name string `json:"name" url:"name"`
	// Flows Vault Connection custom account name.
	AccountName *string `json:"account_name,omitempty" url:"account_name,omitempty"`
	// Whether the Flows Vault Connection is configured.
	Ready bool `json:"ready" url:"ready"`
	// The ISO 8601 formatted date when this Flows Vault Connection was created.
	CreatedAt time.Time `json:"created_at" url:"created_at"`
	// The ISO 8601 formatted date when this Flows Vault Connection was updated.
	UpdatedAt time.Time `json:"updated_at" url:"updated_at"`
	// The ISO 8601 formatted date when this Flows Vault Connection was refreshed.
	RefreshedAt *time.Time `json:"refreshed_at,omitempty" url:"refreshed_at,omitempty"`
	Fingerprint string     `json:"fingerprint" url:"fingerprint"`

	// 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 *CreateFlowsVaultConnectionResponseContent) GetID() string {
	if c == nil {
		return ""
	}
	return c.ID
}

func (c *CreateFlowsVaultConnectionResponseContent) GetAppID() string {
	if c == nil {
		return ""
	}
	return c.AppID
}

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

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

func (c *CreateFlowsVaultConnectionResponseContent) GetAccountName() string {
	if c == nil || c.AccountName == nil {
		return ""
	}
	return *c.AccountName
}

func (c *CreateFlowsVaultConnectionResponseContent) GetReady() bool {
	if c == nil {
		return false
	}
	return c.Ready
}

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

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

func (c *CreateFlowsVaultConnectionResponseContent) GetRefreshedAt() time.Time {
	if c == nil || c.RefreshedAt == nil {
		return time.Time{}
	}
	return *c.RefreshedAt
}

func (c *CreateFlowsVaultConnectionResponseContent) GetFingerprint() string {
	if c == nil {
		return ""
	}
	return c.Fingerprint
}

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

func (c *CreateFlowsVaultConnectionResponseContent) 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 *CreateFlowsVaultConnectionResponseContent) SetID(id string) {
	c.ID = id
	c.require(createFlowsVaultConnectionResponseContentFieldID)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionResponseContent) SetAppID(appID string) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionResponseContentFieldAppID)
}

// 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 *CreateFlowsVaultConnectionResponseContent) SetEnvironment(environment *string) {
	c.Environment = environment
	c.require(createFlowsVaultConnectionResponseContentFieldEnvironment)
}

// 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 *CreateFlowsVaultConnectionResponseContent) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionResponseContentFieldName)
}

// SetAccountName sets the AccountName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionResponseContent) SetAccountName(accountName *string) {
	c.AccountName = accountName
	c.require(createFlowsVaultConnectionResponseContentFieldAccountName)
}

// SetReady sets the Ready field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionResponseContent) SetReady(ready bool) {
	c.Ready = ready
	c.require(createFlowsVaultConnectionResponseContentFieldReady)
}

// 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 *CreateFlowsVaultConnectionResponseContent) SetCreatedAt(createdAt time.Time) {
	c.CreatedAt = createdAt
	c.require(createFlowsVaultConnectionResponseContentFieldCreatedAt)
}

// 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 *CreateFlowsVaultConnectionResponseContent) SetUpdatedAt(updatedAt time.Time) {
	c.UpdatedAt = updatedAt
	c.require(createFlowsVaultConnectionResponseContentFieldUpdatedAt)
}

// SetRefreshedAt sets the RefreshedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionResponseContent) SetRefreshedAt(refreshedAt *time.Time) {
	c.RefreshedAt = refreshedAt
	c.require(createFlowsVaultConnectionResponseContentFieldRefreshedAt)
}

// SetFingerprint sets the Fingerprint field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionResponseContent) SetFingerprint(fingerprint string) {
	c.Fingerprint = fingerprint
	c.require(createFlowsVaultConnectionResponseContentFieldFingerprint)
}

func (c *CreateFlowsVaultConnectionResponseContent) UnmarshalJSON(data []byte) error {
	type embed CreateFlowsVaultConnectionResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt   *internal.DateTime `json:"created_at"`
		UpdatedAt   *internal.DateTime `json:"updated_at"`
		RefreshedAt *internal.DateTime `json:"refreshed_at,omitempty"`
	}{
		embed: embed(*c),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*c = CreateFlowsVaultConnectionResponseContent(unmarshaler.embed)
	c.CreatedAt = unmarshaler.CreatedAt.Time()
	c.UpdatedAt = unmarshaler.UpdatedAt.Time()
	c.RefreshedAt = unmarshaler.RefreshedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *c)
	if err != nil {
		return err
	}
	c.extraProperties = extraProperties
	c.rawJSON = json.RawMessage(data)
	return nil
}

func (c *CreateFlowsVaultConnectionResponseContent) MarshalJSON() ([]byte, error) {
	type embed CreateFlowsVaultConnectionResponseContent
	var marshaler = struct {
		embed
		CreatedAt   *internal.DateTime `json:"created_at"`
		UpdatedAt   *internal.DateTime `json:"updated_at"`
		RefreshedAt *internal.DateTime `json:"refreshed_at,omitempty"`
	}{
		embed:       embed(*c),
		CreatedAt:   internal.NewDateTime(c.CreatedAt),
		UpdatedAt:   internal.NewDateTime(c.UpdatedAt),
		RefreshedAt: internal.NewOptionalDateTime(c.RefreshedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (c *CreateFlowsVaultConnectionResponseContent) 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)
}

type CreateFlowsVaultConnectionSalesforce struct {
	CreateFlowsVaultConnectionSalesforceOauthCode     *CreateFlowsVaultConnectionSalesforceOauthCode
	CreateFlowsVaultConnectionSalesforceUninitialized *CreateFlowsVaultConnectionSalesforceUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionSalesforce) GetCreateFlowsVaultConnectionSalesforceOauthCode() *CreateFlowsVaultConnectionSalesforceOauthCode {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionSalesforceOauthCode
}

func (c *CreateFlowsVaultConnectionSalesforce) GetCreateFlowsVaultConnectionSalesforceUninitialized() *CreateFlowsVaultConnectionSalesforceUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionSalesforceUninitialized
}

func (c *CreateFlowsVaultConnectionSalesforce) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionSalesforceOauthCode := new(CreateFlowsVaultConnectionSalesforceOauthCode)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionSalesforceOauthCode); err == nil {
		c.typ = "CreateFlowsVaultConnectionSalesforceOauthCode"
		c.CreateFlowsVaultConnectionSalesforceOauthCode = valueCreateFlowsVaultConnectionSalesforceOauthCode
		return nil
	}
	valueCreateFlowsVaultConnectionSalesforceUninitialized := new(CreateFlowsVaultConnectionSalesforceUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionSalesforceUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionSalesforceUninitialized"
		c.CreateFlowsVaultConnectionSalesforceUninitialized = valueCreateFlowsVaultConnectionSalesforceUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionSalesforce) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionSalesforceOauthCode" || c.CreateFlowsVaultConnectionSalesforceOauthCode != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionSalesforceOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionSalesforceUninitialized" || c.CreateFlowsVaultConnectionSalesforceUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionSalesforceUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionSalesforceVisitor interface {
	VisitCreateFlowsVaultConnectionSalesforceOauthCode(*CreateFlowsVaultConnectionSalesforceOauthCode) error
	VisitCreateFlowsVaultConnectionSalesforceUninitialized(*CreateFlowsVaultConnectionSalesforceUninitialized) error
}

func (c *CreateFlowsVaultConnectionSalesforce) Accept(visitor CreateFlowsVaultConnectionSalesforceVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionSalesforceOauthCode" || c.CreateFlowsVaultConnectionSalesforceOauthCode != nil {
		return visitor.VisitCreateFlowsVaultConnectionSalesforceOauthCode(c.CreateFlowsVaultConnectionSalesforceOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionSalesforceUninitialized" || c.CreateFlowsVaultConnectionSalesforceUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionSalesforceUninitialized(c.CreateFlowsVaultConnectionSalesforceUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionSalesforceOauthCodeFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionSalesforceOauthCodeFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionSalesforceOauthCodeFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionSalesforceOauthCode struct {
	// Flows Vault Connection name.
	Name  string                                  `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDSalesforceEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupOauthCode      `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionSalesforceOauthCode) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionSalesforceOauthCode) GetSetup() *FlowsVaultConnectioSetupOauthCode {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionSalesforceOauthCode) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionSalesforceOauthCodeFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionSalesforceOauthCode) SetAppID(appID FlowsVaultConnectionAppIDSalesforceEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionSalesforceOauthCodeFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionSalesforceOauthCode) SetSetup(setup *FlowsVaultConnectioSetupOauthCode) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionSalesforceOauthCodeFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionSalesforceOauthCode) 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 (
	createFlowsVaultConnectionSalesforceUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionSalesforceUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionSalesforceUninitialized struct {
	// Flows Vault Connection name.
	Name  string                                  `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDSalesforceEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionSalesforceUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionSalesforceUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionSalesforceUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionSalesforceUninitialized) SetAppID(appID FlowsVaultConnectionAppIDSalesforceEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionSalesforceUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionSalesforceUninitialized) 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)
}

type CreateFlowsVaultConnectionSendgrid struct {
	CreateFlowsVaultConnectionSendgridAPIKey        *CreateFlowsVaultConnectionSendgridAPIKey
	CreateFlowsVaultConnectionSendgridUninitialized *CreateFlowsVaultConnectionSendgridUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionSendgrid) GetCreateFlowsVaultConnectionSendgridAPIKey() *CreateFlowsVaultConnectionSendgridAPIKey {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionSendgridAPIKey
}

func (c *CreateFlowsVaultConnectionSendgrid) GetCreateFlowsVaultConnectionSendgridUninitialized() *CreateFlowsVaultConnectionSendgridUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionSendgridUninitialized
}

func (c *CreateFlowsVaultConnectionSendgrid) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionSendgridAPIKey := new(CreateFlowsVaultConnectionSendgridAPIKey)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionSendgridAPIKey); err == nil {
		c.typ = "CreateFlowsVaultConnectionSendgridAPIKey"
		c.CreateFlowsVaultConnectionSendgridAPIKey = valueCreateFlowsVaultConnectionSendgridAPIKey
		return nil
	}
	valueCreateFlowsVaultConnectionSendgridUninitialized := new(CreateFlowsVaultConnectionSendgridUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionSendgridUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionSendgridUninitialized"
		c.CreateFlowsVaultConnectionSendgridUninitialized = valueCreateFlowsVaultConnectionSendgridUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionSendgrid) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionSendgridAPIKey" || c.CreateFlowsVaultConnectionSendgridAPIKey != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionSendgridAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionSendgridUninitialized" || c.CreateFlowsVaultConnectionSendgridUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionSendgridUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionSendgridVisitor interface {
	VisitCreateFlowsVaultConnectionSendgridAPIKey(*CreateFlowsVaultConnectionSendgridAPIKey) error
	VisitCreateFlowsVaultConnectionSendgridUninitialized(*CreateFlowsVaultConnectionSendgridUninitialized) error
}

func (c *CreateFlowsVaultConnectionSendgrid) Accept(visitor CreateFlowsVaultConnectionSendgridVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionSendgridAPIKey" || c.CreateFlowsVaultConnectionSendgridAPIKey != nil {
		return visitor.VisitCreateFlowsVaultConnectionSendgridAPIKey(c.CreateFlowsVaultConnectionSendgridAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionSendgridUninitialized" || c.CreateFlowsVaultConnectionSendgridUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionSendgridUninitialized(c.CreateFlowsVaultConnectionSendgridUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionSendgridAPIKeyFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionSendgridAPIKeyFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionSendgridAPIKeyFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionSendgridAPIKey struct {
	// Flows Vault Connection name.
	Name  string                                `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDSendgridEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupAPIKey       `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionSendgridAPIKey) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionSendgridAPIKey) GetSetup() *FlowsVaultConnectioSetupAPIKey {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionSendgridAPIKey) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionSendgridAPIKeyFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionSendgridAPIKey) SetAppID(appID FlowsVaultConnectionAppIDSendgridEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionSendgridAPIKeyFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionSendgridAPIKey) SetSetup(setup *FlowsVaultConnectioSetupAPIKey) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionSendgridAPIKeyFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionSendgridAPIKey) 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 (
	createFlowsVaultConnectionSendgridUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionSendgridUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionSendgridUninitialized struct {
	// Flows Vault Connection name.
	Name  string                                `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDSendgridEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionSendgridUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionSendgridUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionSendgridUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionSendgridUninitialized) SetAppID(appID FlowsVaultConnectionAppIDSendgridEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionSendgridUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionSendgridUninitialized) 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)
}

type CreateFlowsVaultConnectionSlack struct {
	CreateFlowsVaultConnectionSlackWebhook       *CreateFlowsVaultConnectionSlackWebhook
	CreateFlowsVaultConnectionSlackOauthCode     *CreateFlowsVaultConnectionSlackOauthCode
	CreateFlowsVaultConnectionSlackUninitialized *CreateFlowsVaultConnectionSlackUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionSlack) GetCreateFlowsVaultConnectionSlackWebhook() *CreateFlowsVaultConnectionSlackWebhook {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionSlackWebhook
}

func (c *CreateFlowsVaultConnectionSlack) GetCreateFlowsVaultConnectionSlackOauthCode() *CreateFlowsVaultConnectionSlackOauthCode {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionSlackOauthCode
}

func (c *CreateFlowsVaultConnectionSlack) GetCreateFlowsVaultConnectionSlackUninitialized() *CreateFlowsVaultConnectionSlackUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionSlackUninitialized
}

func (c *CreateFlowsVaultConnectionSlack) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionSlackWebhook := new(CreateFlowsVaultConnectionSlackWebhook)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionSlackWebhook); err == nil {
		c.typ = "CreateFlowsVaultConnectionSlackWebhook"
		c.CreateFlowsVaultConnectionSlackWebhook = valueCreateFlowsVaultConnectionSlackWebhook
		return nil
	}
	valueCreateFlowsVaultConnectionSlackOauthCode := new(CreateFlowsVaultConnectionSlackOauthCode)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionSlackOauthCode); err == nil {
		c.typ = "CreateFlowsVaultConnectionSlackOauthCode"
		c.CreateFlowsVaultConnectionSlackOauthCode = valueCreateFlowsVaultConnectionSlackOauthCode
		return nil
	}
	valueCreateFlowsVaultConnectionSlackUninitialized := new(CreateFlowsVaultConnectionSlackUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionSlackUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionSlackUninitialized"
		c.CreateFlowsVaultConnectionSlackUninitialized = valueCreateFlowsVaultConnectionSlackUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionSlack) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionSlackWebhook" || c.CreateFlowsVaultConnectionSlackWebhook != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionSlackWebhook)
	}
	if c.typ == "CreateFlowsVaultConnectionSlackOauthCode" || c.CreateFlowsVaultConnectionSlackOauthCode != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionSlackOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionSlackUninitialized" || c.CreateFlowsVaultConnectionSlackUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionSlackUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionSlackVisitor interface {
	VisitCreateFlowsVaultConnectionSlackWebhook(*CreateFlowsVaultConnectionSlackWebhook) error
	VisitCreateFlowsVaultConnectionSlackOauthCode(*CreateFlowsVaultConnectionSlackOauthCode) error
	VisitCreateFlowsVaultConnectionSlackUninitialized(*CreateFlowsVaultConnectionSlackUninitialized) error
}

func (c *CreateFlowsVaultConnectionSlack) Accept(visitor CreateFlowsVaultConnectionSlackVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionSlackWebhook" || c.CreateFlowsVaultConnectionSlackWebhook != nil {
		return visitor.VisitCreateFlowsVaultConnectionSlackWebhook(c.CreateFlowsVaultConnectionSlackWebhook)
	}
	if c.typ == "CreateFlowsVaultConnectionSlackOauthCode" || c.CreateFlowsVaultConnectionSlackOauthCode != nil {
		return visitor.VisitCreateFlowsVaultConnectionSlackOauthCode(c.CreateFlowsVaultConnectionSlackOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionSlackUninitialized" || c.CreateFlowsVaultConnectionSlackUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionSlackUninitialized(c.CreateFlowsVaultConnectionSlackUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionSlackOauthCodeFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionSlackOauthCodeFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionSlackOauthCodeFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionSlackOauthCode struct {
	// Flows Vault Connection name.
	Name  string                             `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDSlackEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupOauthCode `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionSlackOauthCode) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionSlackOauthCode) GetSetup() *FlowsVaultConnectioSetupOauthCode {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionSlackOauthCode) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionSlackOauthCodeFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionSlackOauthCode) SetAppID(appID FlowsVaultConnectionAppIDSlackEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionSlackOauthCodeFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionSlackOauthCode) SetSetup(setup *FlowsVaultConnectioSetupOauthCode) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionSlackOauthCodeFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionSlackOauthCode) 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 (
	createFlowsVaultConnectionSlackUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionSlackUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionSlackUninitialized struct {
	// Flows Vault Connection name.
	Name  string                             `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDSlackEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionSlackUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionSlackUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionSlackUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionSlackUninitialized) SetAppID(appID FlowsVaultConnectionAppIDSlackEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionSlackUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionSlackUninitialized) 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 (
	createFlowsVaultConnectionSlackWebhookFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionSlackWebhookFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionSlackWebhookFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionSlackWebhook struct {
	// Flows Vault Connection name.
	Name  string                             `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDSlackEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupWebhook   `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionSlackWebhook) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionSlackWebhook) GetSetup() *FlowsVaultConnectioSetupWebhook {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionSlackWebhook) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionSlackWebhookFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionSlackWebhook) SetAppID(appID FlowsVaultConnectionAppIDSlackEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionSlackWebhookFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionSlackWebhook) SetSetup(setup *FlowsVaultConnectioSetupWebhook) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionSlackWebhookFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionSlackWebhook) 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)
}

type CreateFlowsVaultConnectionStripe struct {
	CreateFlowsVaultConnectionStripeKeyPair       *CreateFlowsVaultConnectionStripeKeyPair
	CreateFlowsVaultConnectionStripeOauthCode     *CreateFlowsVaultConnectionStripeOauthCode
	CreateFlowsVaultConnectionStripeUninitialized *CreateFlowsVaultConnectionStripeUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionStripe) GetCreateFlowsVaultConnectionStripeKeyPair() *CreateFlowsVaultConnectionStripeKeyPair {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionStripeKeyPair
}

func (c *CreateFlowsVaultConnectionStripe) GetCreateFlowsVaultConnectionStripeOauthCode() *CreateFlowsVaultConnectionStripeOauthCode {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionStripeOauthCode
}

func (c *CreateFlowsVaultConnectionStripe) GetCreateFlowsVaultConnectionStripeUninitialized() *CreateFlowsVaultConnectionStripeUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionStripeUninitialized
}

func (c *CreateFlowsVaultConnectionStripe) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionStripeKeyPair := new(CreateFlowsVaultConnectionStripeKeyPair)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionStripeKeyPair); err == nil {
		c.typ = "CreateFlowsVaultConnectionStripeKeyPair"
		c.CreateFlowsVaultConnectionStripeKeyPair = valueCreateFlowsVaultConnectionStripeKeyPair
		return nil
	}
	valueCreateFlowsVaultConnectionStripeOauthCode := new(CreateFlowsVaultConnectionStripeOauthCode)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionStripeOauthCode); err == nil {
		c.typ = "CreateFlowsVaultConnectionStripeOauthCode"
		c.CreateFlowsVaultConnectionStripeOauthCode = valueCreateFlowsVaultConnectionStripeOauthCode
		return nil
	}
	valueCreateFlowsVaultConnectionStripeUninitialized := new(CreateFlowsVaultConnectionStripeUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionStripeUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionStripeUninitialized"
		c.CreateFlowsVaultConnectionStripeUninitialized = valueCreateFlowsVaultConnectionStripeUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionStripe) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionStripeKeyPair" || c.CreateFlowsVaultConnectionStripeKeyPair != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionStripeKeyPair)
	}
	if c.typ == "CreateFlowsVaultConnectionStripeOauthCode" || c.CreateFlowsVaultConnectionStripeOauthCode != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionStripeOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionStripeUninitialized" || c.CreateFlowsVaultConnectionStripeUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionStripeUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionStripeVisitor interface {
	VisitCreateFlowsVaultConnectionStripeKeyPair(*CreateFlowsVaultConnectionStripeKeyPair) error
	VisitCreateFlowsVaultConnectionStripeOauthCode(*CreateFlowsVaultConnectionStripeOauthCode) error
	VisitCreateFlowsVaultConnectionStripeUninitialized(*CreateFlowsVaultConnectionStripeUninitialized) error
}

func (c *CreateFlowsVaultConnectionStripe) Accept(visitor CreateFlowsVaultConnectionStripeVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionStripeKeyPair" || c.CreateFlowsVaultConnectionStripeKeyPair != nil {
		return visitor.VisitCreateFlowsVaultConnectionStripeKeyPair(c.CreateFlowsVaultConnectionStripeKeyPair)
	}
	if c.typ == "CreateFlowsVaultConnectionStripeOauthCode" || c.CreateFlowsVaultConnectionStripeOauthCode != nil {
		return visitor.VisitCreateFlowsVaultConnectionStripeOauthCode(c.CreateFlowsVaultConnectionStripeOauthCode)
	}
	if c.typ == "CreateFlowsVaultConnectionStripeUninitialized" || c.CreateFlowsVaultConnectionStripeUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionStripeUninitialized(c.CreateFlowsVaultConnectionStripeUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionStripeKeyPairFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionStripeKeyPairFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionStripeKeyPairFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionStripeKeyPair struct {
	// Flows Vault Connection name.
	Name  string                                 `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDStripeEnum    `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupStripeKeyPair `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionStripeKeyPair) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionStripeKeyPair) GetSetup() *FlowsVaultConnectioSetupStripeKeyPair {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionStripeKeyPair) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionStripeKeyPairFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionStripeKeyPair) SetAppID(appID FlowsVaultConnectionAppIDStripeEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionStripeKeyPairFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionStripeKeyPair) SetSetup(setup *FlowsVaultConnectioSetupStripeKeyPair) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionStripeKeyPairFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionStripeKeyPair) 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 (
	createFlowsVaultConnectionStripeOauthCodeFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionStripeOauthCodeFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionStripeOauthCodeFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionStripeOauthCode struct {
	// Flows Vault Connection name.
	Name  string                              `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDStripeEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupOauthCode  `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionStripeOauthCode) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionStripeOauthCode) GetSetup() *FlowsVaultConnectioSetupOauthCode {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionStripeOauthCode) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionStripeOauthCodeFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionStripeOauthCode) SetAppID(appID FlowsVaultConnectionAppIDStripeEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionStripeOauthCodeFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionStripeOauthCode) SetSetup(setup *FlowsVaultConnectioSetupOauthCode) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionStripeOauthCodeFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionStripeOauthCode) 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 (
	createFlowsVaultConnectionStripeUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionStripeUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionStripeUninitialized struct {
	// Flows Vault Connection name.
	Name  string                              `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDStripeEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionStripeUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionStripeUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionStripeUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionStripeUninitialized) SetAppID(appID FlowsVaultConnectionAppIDStripeEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionStripeUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionStripeUninitialized) 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)
}

type CreateFlowsVaultConnectionTelegram struct {
	CreateFlowsVaultConnectionTelegramToken         *CreateFlowsVaultConnectionTelegramToken
	CreateFlowsVaultConnectionTelegramUninitialized *CreateFlowsVaultConnectionTelegramUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionTelegram) GetCreateFlowsVaultConnectionTelegramToken() *CreateFlowsVaultConnectionTelegramToken {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionTelegramToken
}

func (c *CreateFlowsVaultConnectionTelegram) GetCreateFlowsVaultConnectionTelegramUninitialized() *CreateFlowsVaultConnectionTelegramUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionTelegramUninitialized
}

func (c *CreateFlowsVaultConnectionTelegram) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionTelegramToken := new(CreateFlowsVaultConnectionTelegramToken)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionTelegramToken); err == nil {
		c.typ = "CreateFlowsVaultConnectionTelegramToken"
		c.CreateFlowsVaultConnectionTelegramToken = valueCreateFlowsVaultConnectionTelegramToken
		return nil
	}
	valueCreateFlowsVaultConnectionTelegramUninitialized := new(CreateFlowsVaultConnectionTelegramUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionTelegramUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionTelegramUninitialized"
		c.CreateFlowsVaultConnectionTelegramUninitialized = valueCreateFlowsVaultConnectionTelegramUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionTelegram) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionTelegramToken" || c.CreateFlowsVaultConnectionTelegramToken != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionTelegramToken)
	}
	if c.typ == "CreateFlowsVaultConnectionTelegramUninitialized" || c.CreateFlowsVaultConnectionTelegramUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionTelegramUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionTelegramVisitor interface {
	VisitCreateFlowsVaultConnectionTelegramToken(*CreateFlowsVaultConnectionTelegramToken) error
	VisitCreateFlowsVaultConnectionTelegramUninitialized(*CreateFlowsVaultConnectionTelegramUninitialized) error
}

func (c *CreateFlowsVaultConnectionTelegram) Accept(visitor CreateFlowsVaultConnectionTelegramVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionTelegramToken" || c.CreateFlowsVaultConnectionTelegramToken != nil {
		return visitor.VisitCreateFlowsVaultConnectionTelegramToken(c.CreateFlowsVaultConnectionTelegramToken)
	}
	if c.typ == "CreateFlowsVaultConnectionTelegramUninitialized" || c.CreateFlowsVaultConnectionTelegramUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionTelegramUninitialized(c.CreateFlowsVaultConnectionTelegramUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionTelegramTokenFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionTelegramTokenFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionTelegramTokenFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionTelegramToken struct {
	// Flows Vault Connection name.
	Name  string                                `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDTelegramEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupToken        `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionTelegramToken) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionTelegramToken) GetSetup() *FlowsVaultConnectioSetupToken {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionTelegramToken) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionTelegramTokenFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionTelegramToken) SetAppID(appID FlowsVaultConnectionAppIDTelegramEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionTelegramTokenFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionTelegramToken) SetSetup(setup *FlowsVaultConnectioSetupToken) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionTelegramTokenFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionTelegramToken) 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 (
	createFlowsVaultConnectionTelegramUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionTelegramUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionTelegramUninitialized struct {
	// Flows Vault Connection name.
	Name  string                                `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDTelegramEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionTelegramUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionTelegramUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionTelegramUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionTelegramUninitialized) SetAppID(appID FlowsVaultConnectionAppIDTelegramEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionTelegramUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionTelegramUninitialized) 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)
}

type CreateFlowsVaultConnectionTwilio struct {
	CreateFlowsVaultConnectionTwilioAPIKey        *CreateFlowsVaultConnectionTwilioAPIKey
	CreateFlowsVaultConnectionTwilioUninitialized *CreateFlowsVaultConnectionTwilioUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionTwilio) GetCreateFlowsVaultConnectionTwilioAPIKey() *CreateFlowsVaultConnectionTwilioAPIKey {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionTwilioAPIKey
}

func (c *CreateFlowsVaultConnectionTwilio) GetCreateFlowsVaultConnectionTwilioUninitialized() *CreateFlowsVaultConnectionTwilioUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionTwilioUninitialized
}

func (c *CreateFlowsVaultConnectionTwilio) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionTwilioAPIKey := new(CreateFlowsVaultConnectionTwilioAPIKey)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionTwilioAPIKey); err == nil {
		c.typ = "CreateFlowsVaultConnectionTwilioAPIKey"
		c.CreateFlowsVaultConnectionTwilioAPIKey = valueCreateFlowsVaultConnectionTwilioAPIKey
		return nil
	}
	valueCreateFlowsVaultConnectionTwilioUninitialized := new(CreateFlowsVaultConnectionTwilioUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionTwilioUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionTwilioUninitialized"
		c.CreateFlowsVaultConnectionTwilioUninitialized = valueCreateFlowsVaultConnectionTwilioUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionTwilio) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionTwilioAPIKey" || c.CreateFlowsVaultConnectionTwilioAPIKey != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionTwilioAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionTwilioUninitialized" || c.CreateFlowsVaultConnectionTwilioUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionTwilioUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionTwilioVisitor interface {
	VisitCreateFlowsVaultConnectionTwilioAPIKey(*CreateFlowsVaultConnectionTwilioAPIKey) error
	VisitCreateFlowsVaultConnectionTwilioUninitialized(*CreateFlowsVaultConnectionTwilioUninitialized) error
}

func (c *CreateFlowsVaultConnectionTwilio) Accept(visitor CreateFlowsVaultConnectionTwilioVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionTwilioAPIKey" || c.CreateFlowsVaultConnectionTwilioAPIKey != nil {
		return visitor.VisitCreateFlowsVaultConnectionTwilioAPIKey(c.CreateFlowsVaultConnectionTwilioAPIKey)
	}
	if c.typ == "CreateFlowsVaultConnectionTwilioUninitialized" || c.CreateFlowsVaultConnectionTwilioUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionTwilioUninitialized(c.CreateFlowsVaultConnectionTwilioUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionTwilioAPIKeyFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionTwilioAPIKeyFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionTwilioAPIKeyFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionTwilioAPIKey struct {
	// Flows Vault Connection name.
	Name  string                                `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDTwilioEnum   `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupTwilioAPIKey `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionTwilioAPIKey) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionTwilioAPIKey) GetSetup() *FlowsVaultConnectioSetupTwilioAPIKey {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionTwilioAPIKey) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionTwilioAPIKeyFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionTwilioAPIKey) SetAppID(appID FlowsVaultConnectionAppIDTwilioEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionTwilioAPIKeyFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionTwilioAPIKey) SetSetup(setup *FlowsVaultConnectioSetupTwilioAPIKey) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionTwilioAPIKeyFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionTwilioAPIKey) 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 (
	createFlowsVaultConnectionTwilioUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionTwilioUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionTwilioUninitialized struct {
	// Flows Vault Connection name.
	Name  string                              `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDTwilioEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionTwilioUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionTwilioUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionTwilioUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionTwilioUninitialized) SetAppID(appID FlowsVaultConnectionAppIDTwilioEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionTwilioUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionTwilioUninitialized) 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)
}

type CreateFlowsVaultConnectionWhatsapp struct {
	CreateFlowsVaultConnectionWhatsappToken         *CreateFlowsVaultConnectionWhatsappToken
	CreateFlowsVaultConnectionWhatsappUninitialized *CreateFlowsVaultConnectionWhatsappUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionWhatsapp) GetCreateFlowsVaultConnectionWhatsappToken() *CreateFlowsVaultConnectionWhatsappToken {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionWhatsappToken
}

func (c *CreateFlowsVaultConnectionWhatsapp) GetCreateFlowsVaultConnectionWhatsappUninitialized() *CreateFlowsVaultConnectionWhatsappUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionWhatsappUninitialized
}

func (c *CreateFlowsVaultConnectionWhatsapp) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionWhatsappToken := new(CreateFlowsVaultConnectionWhatsappToken)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionWhatsappToken); err == nil {
		c.typ = "CreateFlowsVaultConnectionWhatsappToken"
		c.CreateFlowsVaultConnectionWhatsappToken = valueCreateFlowsVaultConnectionWhatsappToken
		return nil
	}
	valueCreateFlowsVaultConnectionWhatsappUninitialized := new(CreateFlowsVaultConnectionWhatsappUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionWhatsappUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionWhatsappUninitialized"
		c.CreateFlowsVaultConnectionWhatsappUninitialized = valueCreateFlowsVaultConnectionWhatsappUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionWhatsapp) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionWhatsappToken" || c.CreateFlowsVaultConnectionWhatsappToken != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionWhatsappToken)
	}
	if c.typ == "CreateFlowsVaultConnectionWhatsappUninitialized" || c.CreateFlowsVaultConnectionWhatsappUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionWhatsappUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionWhatsappVisitor interface {
	VisitCreateFlowsVaultConnectionWhatsappToken(*CreateFlowsVaultConnectionWhatsappToken) error
	VisitCreateFlowsVaultConnectionWhatsappUninitialized(*CreateFlowsVaultConnectionWhatsappUninitialized) error
}

func (c *CreateFlowsVaultConnectionWhatsapp) Accept(visitor CreateFlowsVaultConnectionWhatsappVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionWhatsappToken" || c.CreateFlowsVaultConnectionWhatsappToken != nil {
		return visitor.VisitCreateFlowsVaultConnectionWhatsappToken(c.CreateFlowsVaultConnectionWhatsappToken)
	}
	if c.typ == "CreateFlowsVaultConnectionWhatsappUninitialized" || c.CreateFlowsVaultConnectionWhatsappUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionWhatsappUninitialized(c.CreateFlowsVaultConnectionWhatsappUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionWhatsappTokenFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionWhatsappTokenFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionWhatsappTokenFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionWhatsappToken struct {
	// Flows Vault Connection name.
	Name  string                                `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDWhatsappEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupToken        `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionWhatsappToken) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionWhatsappToken) GetSetup() *FlowsVaultConnectioSetupToken {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionWhatsappToken) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionWhatsappTokenFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionWhatsappToken) SetAppID(appID FlowsVaultConnectionAppIDWhatsappEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionWhatsappTokenFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionWhatsappToken) SetSetup(setup *FlowsVaultConnectioSetupToken) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionWhatsappTokenFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionWhatsappToken) 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 (
	createFlowsVaultConnectionWhatsappUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionWhatsappUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionWhatsappUninitialized struct {
	// Flows Vault Connection name.
	Name  string                                `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDWhatsappEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionWhatsappUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionWhatsappUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionWhatsappUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionWhatsappUninitialized) SetAppID(appID FlowsVaultConnectionAppIDWhatsappEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionWhatsappUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionWhatsappUninitialized) 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)
}

type CreateFlowsVaultConnectionZapier struct {
	CreateFlowsVaultConnectionZapierWebhook       *CreateFlowsVaultConnectionZapierWebhook
	CreateFlowsVaultConnectionZapierUninitialized *CreateFlowsVaultConnectionZapierUninitialized

	typ string
}

func (c *CreateFlowsVaultConnectionZapier) GetCreateFlowsVaultConnectionZapierWebhook() *CreateFlowsVaultConnectionZapierWebhook {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionZapierWebhook
}

func (c *CreateFlowsVaultConnectionZapier) GetCreateFlowsVaultConnectionZapierUninitialized() *CreateFlowsVaultConnectionZapierUninitialized {
	if c == nil {
		return nil
	}
	return c.CreateFlowsVaultConnectionZapierUninitialized
}

func (c *CreateFlowsVaultConnectionZapier) UnmarshalJSON(data []byte) error {
	valueCreateFlowsVaultConnectionZapierWebhook := new(CreateFlowsVaultConnectionZapierWebhook)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionZapierWebhook); err == nil {
		c.typ = "CreateFlowsVaultConnectionZapierWebhook"
		c.CreateFlowsVaultConnectionZapierWebhook = valueCreateFlowsVaultConnectionZapierWebhook
		return nil
	}
	valueCreateFlowsVaultConnectionZapierUninitialized := new(CreateFlowsVaultConnectionZapierUninitialized)
	if err := json.Unmarshal(data, &valueCreateFlowsVaultConnectionZapierUninitialized); err == nil {
		c.typ = "CreateFlowsVaultConnectionZapierUninitialized"
		c.CreateFlowsVaultConnectionZapierUninitialized = valueCreateFlowsVaultConnectionZapierUninitialized
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, c)
}

func (c CreateFlowsVaultConnectionZapier) MarshalJSON() ([]byte, error) {
	if c.typ == "CreateFlowsVaultConnectionZapierWebhook" || c.CreateFlowsVaultConnectionZapierWebhook != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionZapierWebhook)
	}
	if c.typ == "CreateFlowsVaultConnectionZapierUninitialized" || c.CreateFlowsVaultConnectionZapierUninitialized != nil {
		return json.Marshal(c.CreateFlowsVaultConnectionZapierUninitialized)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", c)
}

type CreateFlowsVaultConnectionZapierVisitor interface {
	VisitCreateFlowsVaultConnectionZapierWebhook(*CreateFlowsVaultConnectionZapierWebhook) error
	VisitCreateFlowsVaultConnectionZapierUninitialized(*CreateFlowsVaultConnectionZapierUninitialized) error
}

func (c *CreateFlowsVaultConnectionZapier) Accept(visitor CreateFlowsVaultConnectionZapierVisitor) error {
	if c.typ == "CreateFlowsVaultConnectionZapierWebhook" || c.CreateFlowsVaultConnectionZapierWebhook != nil {
		return visitor.VisitCreateFlowsVaultConnectionZapierWebhook(c.CreateFlowsVaultConnectionZapierWebhook)
	}
	if c.typ == "CreateFlowsVaultConnectionZapierUninitialized" || c.CreateFlowsVaultConnectionZapierUninitialized != nil {
		return visitor.VisitCreateFlowsVaultConnectionZapierUninitialized(c.CreateFlowsVaultConnectionZapierUninitialized)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", c)
}

var (
	createFlowsVaultConnectionZapierUninitializedFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionZapierUninitializedFieldAppID = big.NewInt(1 << 1)
)

type CreateFlowsVaultConnectionZapierUninitialized struct {
	// Flows Vault Connection name.
	Name  string                              `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDZapierEnum `json:"app_id" url:"app_id"`

	// 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 *CreateFlowsVaultConnectionZapierUninitialized) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

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

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

// 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 *CreateFlowsVaultConnectionZapierUninitialized) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionZapierUninitializedFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionZapierUninitialized) SetAppID(appID FlowsVaultConnectionAppIDZapierEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionZapierUninitializedFieldAppID)
}

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

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

func (c *CreateFlowsVaultConnectionZapierUninitialized) 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 (
	createFlowsVaultConnectionZapierWebhookFieldName  = big.NewInt(1 << 0)
	createFlowsVaultConnectionZapierWebhookFieldAppID = big.NewInt(1 << 1)
	createFlowsVaultConnectionZapierWebhookFieldSetup = big.NewInt(1 << 2)
)

type CreateFlowsVaultConnectionZapierWebhook struct {
	// Flows Vault Connection name.
	Name  string                              `json:"name" url:"name"`
	AppID FlowsVaultConnectionAppIDZapierEnum `json:"app_id" url:"app_id"`
	Setup *FlowsVaultConnectioSetupWebhook    `json:"setup" url:"setup"`

	// 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 *CreateFlowsVaultConnectionZapierWebhook) GetName() string {
	if c == nil {
		return ""
	}
	return c.Name
}

func (c *CreateFlowsVaultConnectionZapierWebhook) GetSetup() *FlowsVaultConnectioSetupWebhook {
	if c == nil {
		return nil
	}
	return c.Setup
}

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

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

// 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 *CreateFlowsVaultConnectionZapierWebhook) SetName(name string) {
	c.Name = name
	c.require(createFlowsVaultConnectionZapierWebhookFieldName)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionZapierWebhook) SetAppID(appID FlowsVaultConnectionAppIDZapierEnum) {
	c.AppID = appID
	c.require(createFlowsVaultConnectionZapierWebhookFieldAppID)
}

// SetSetup sets the Setup field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateFlowsVaultConnectionZapierWebhook) SetSetup(setup *FlowsVaultConnectioSetupWebhook) {
	c.Setup = setup
	c.require(createFlowsVaultConnectionZapierWebhookFieldSetup)
}

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

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

func (c *CreateFlowsVaultConnectionZapierWebhook) 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 (
	createGuardianEnrollmentTicketResponseContentFieldTicketID  = big.NewInt(1 << 0)
	createGuardianEnrollmentTicketResponseContentFieldTicketURL = big.NewInt(1 << 1)
)

type CreateGuardianEnrollmentTicketResponseContent struct {
	// The ticket_id used to identify the enrollment
	TicketID *string `json:"ticket_id,omitempty" url:"ticket_id,omitempty"`
	// The url you can use to start enrollment
	TicketURL *string `json:"ticket_url,omitempty" url:"ticket_url,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (c *CreateGuardianEnrollmentTicketResponseContent) GetTicketID() string {
	if c == nil || c.TicketID == nil {
		return ""
	}
	return *c.TicketID
}

func (c *CreateGuardianEnrollmentTicketResponseContent) GetTicketURL() string {
	if c == nil || c.TicketURL == nil {
		return ""
	}
	return *c.TicketURL
}

func (c *CreateGuardianEnrollmentTicketResponseContent) GetExtraProperties() map[string]interface{} {
	return c.ExtraProperties
}

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

// SetTicketID sets the TicketID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateGuardianEnrollmentTicketResponseContent) SetTicketID(ticketID *string) {
	c.TicketID = ticketID
	c.require(createGuardianEnrollmentTicketResponseContentFieldTicketID)
}

// SetTicketURL sets the TicketURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateGuardianEnrollmentTicketResponseContent) SetTicketURL(ticketURL *string) {
	c.TicketURL = ticketURL
	c.require(createGuardianEnrollmentTicketResponseContentFieldTicketURL)
}

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

func (c *CreateGuardianEnrollmentTicketResponseContent) MarshalJSON() ([]byte, error) {
	type embed CreateGuardianEnrollmentTicketResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*c),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, c.ExtraProperties)
}

func (c *CreateGuardianEnrollmentTicketResponseContent) 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)
}

// Hashmap of key-value pairs where the value must be a string.
type CreateHookSecretRequestContent = map[string]string

var (
	createImportUsersResponseContentFieldStatus       = big.NewInt(1 << 0)
	createImportUsersResponseContentFieldType         = big.NewInt(1 << 1)
	createImportUsersResponseContentFieldCreatedAt    = big.NewInt(1 << 2)
	createImportUsersResponseContentFieldID           = big.NewInt(1 << 3)
	createImportUsersResponseContentFieldConnectionID = big.NewInt(1 << 4)
	createImportUsersResponseContentFieldExternalID   = big.NewInt(1 << 5)
)

type CreateImportUsersResponseContent struct {
	// Status of this job.
	Status string `json:"status" url:"status"`
	// Type of job this is.
	Type string `json:"type" url:"type"`
	// When this job was created.
	CreatedAt string `json:"created_at" url:"created_at"`
	// ID of this job.
	ID string `json:"id" url:"id"`
	// connection_id of the connection to which users will be imported.
	ConnectionID string `json:"connection_id" url:"connection_id"`
	// Customer-defined ID.
	ExternalID *string `json:"external_id,omitempty" url:"external_id,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (c *CreateImportUsersResponseContent) GetStatus() string {
	if c == nil {
		return ""
	}
	return c.Status
}

func (c *CreateImportUsersResponseContent) GetType() string {
	if c == nil {
		return ""
	}
	return c.Type
}

func (c *CreateImportUsersResponseContent) GetCreatedAt() string {
	if c == nil {
		return ""
	}
	return c.CreatedAt
}

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

func (c *CreateImportUsersResponseContent) GetConnectionID() string {
	if c == nil {
		return ""
	}
	return c.ConnectionID
}

func (c *CreateImportUsersResponseContent) GetExternalID() string {
	if c == nil || c.ExternalID == nil {
		return ""
	}
	return *c.ExternalID
}

func (c *CreateImportUsersResponseContent) GetExtraProperties() map[string]interface{} {
	return c.ExtraProperties
}

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

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateImportUsersResponseContent) SetStatus(status string) {
	c.Status = status
	c.require(createImportUsersResponseContentFieldStatus)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateImportUsersResponseContent) SetType(type_ string) {
	c.Type = type_
	c.require(createImportUsersResponseContentFieldType)
}

// 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 *CreateImportUsersResponseContent) SetCreatedAt(createdAt string) {
	c.CreatedAt = createdAt
	c.require(createImportUsersResponseContentFieldCreatedAt)
}

// 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 *CreateImportUsersResponseContent) SetID(id string) {
	c.ID = id
	c.require(createImportUsersResponseContentFieldID)
}

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateImportUsersResponseContent) SetConnectionID(connectionID string) {
	c.ConnectionID = connectionID
	c.require(createImportUsersResponseContentFieldConnectionID)
}

// SetExternalID sets the ExternalID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateImportUsersResponseContent) SetExternalID(externalID *string) {
	c.ExternalID = externalID
	c.require(createImportUsersResponseContentFieldExternalID)
}

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

func (c *CreateImportUsersResponseContent) MarshalJSON() ([]byte, error) {
	type embed CreateImportUsersResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*c),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, c.ExtraProperties)
}

func (c *CreateImportUsersResponseContent) 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 (
	createOrganizationInvitationResponseContentFieldID             = big.NewInt(1 << 0)
	createOrganizationInvitationResponseContentFieldOrganizationID = big.NewInt(1 << 1)
	createOrganizationInvitationResponseContentFieldInviter        = big.NewInt(1 << 2)
	createOrganizationInvitationResponseContentFieldInvitee        = big.NewInt(1 << 3)
	createOrganizationInvitationResponseContentFieldInvitationURL  = big.NewInt(1 << 4)
	createOrganizationInvitationResponseContentFieldCreatedAt      = big.NewInt(1 << 5)
	createOrganizationInvitationResponseContentFieldExpiresAt      = big.NewInt(1 << 6)
	createOrganizationInvitationResponseContentFieldClientID       = big.NewInt(1 << 7)
	createOrganizationInvitationResponseContentFieldConnectionID   = big.NewInt(1 << 8)
	createOrganizationInvitationResponseContentFieldAppMetadata    = big.NewInt(1 << 9)
	createOrganizationInvitationResponseContentFieldUserMetadata   = big.NewInt(1 << 10)
	createOrganizationInvitationResponseContentFieldRoles          = big.NewInt(1 << 11)
	createOrganizationInvitationResponseContentFieldTicketID       = big.NewInt(1 << 12)
)

type CreateOrganizationInvitationResponseContent struct {
	// The id of the user invitation.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// Organization identifier.
	OrganizationID *string                        `json:"organization_id,omitempty" url:"organization_id,omitempty"`
	Inviter        *OrganizationInvitationInviter `json:"inviter,omitempty" url:"inviter,omitempty"`
	Invitee        *OrganizationInvitationInvitee `json:"invitee,omitempty" url:"invitee,omitempty"`
	// The invitation url to be send to the invitee.
	InvitationURL *string `json:"invitation_url,omitempty" url:"invitation_url,omitempty"`
	// The ISO 8601 formatted timestamp representing the creation time of the invitation.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The ISO 8601 formatted timestamp representing the expiration time of the invitation.
	ExpiresAt *time.Time `json:"expires_at,omitempty" url:"expires_at,omitempty"`
	// Auth0 client ID. Used to resolve the application's login initiation endpoint.
	ClientID *string `json:"client_id,omitempty" url:"client_id,omitempty"`
	// The id of the connection to force invitee to authenticate with.
	ConnectionID *string       `json:"connection_id,omitempty" url:"connection_id,omitempty"`
	AppMetadata  *AppMetadata  `json:"app_metadata,omitempty" url:"app_metadata,omitempty"`
	UserMetadata *UserMetadata `json:"user_metadata,omitempty" url:"user_metadata,omitempty"`
	// List of roles IDs to associated with the user.
	Roles []string `json:"roles,omitempty" url:"roles,omitempty"`
	// The id of the invitation ticket
	TicketID *string `json:"ticket_id,omitempty" url:"ticket_id,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 (c *CreateOrganizationInvitationResponseContent) GetID() string {
	if c == nil || c.ID == nil {
		return ""
	}
	return *c.ID
}

func (c *CreateOrganizationInvitationResponseContent) GetOrganizationID() string {
	if c == nil || c.OrganizationID == nil {
		return ""
	}
	return *c.OrganizationID
}

func (c *CreateOrganizationInvitationResponseContent) GetInviter() OrganizationInvitationInviter {
	if c == nil || c.Inviter == nil {
		return OrganizationInvitationInviter{}
	}
	return *c.Inviter
}

func (c *CreateOrganizationInvitationResponseContent) GetInvitee() OrganizationInvitationInvitee {
	if c == nil || c.Invitee == nil {
		return OrganizationInvitationInvitee{}
	}
	return *c.Invitee
}

func (c *CreateOrganizationInvitationResponseContent) GetInvitationURL() string {
	if c == nil || c.InvitationURL == nil {
		return ""
	}
	return *c.InvitationURL
}

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

func (c *CreateOrganizationInvitationResponseContent) GetExpiresAt() time.Time {
	if c == nil || c.ExpiresAt == nil {
		return time.Time{}
	}
	return *c.ExpiresAt
}

func (c *CreateOrganizationInvitationResponseContent) GetClientID() string {
	if c == nil || c.ClientID == nil {
		return ""
	}
	return *c.ClientID
}

func (c *CreateOrganizationInvitationResponseContent) GetConnectionID() string {
	if c == nil || c.ConnectionID == nil {
		return ""
	}
	return *c.ConnectionID
}

func (c *CreateOrganizationInvitationResponseContent) GetAppMetadata() AppMetadata {
	if c == nil || c.AppMetadata == nil {
		return nil
	}
	return *c.AppMetadata
}

func (c *CreateOrganizationInvitationResponseContent) GetUserMetadata() UserMetadata {
	if c == nil || c.UserMetadata == nil {
		return nil
	}
	return *c.UserMetadata
}

func (c *CreateOrganizationInvitationResponseContent) GetRoles() []string {
	if c == nil || c.Roles == nil {
		return nil
	}
	return c.Roles
}

func (c *CreateOrganizationInvitationResponseContent) GetTicketID() string {
	if c == nil || c.TicketID == nil {
		return ""
	}
	return *c.TicketID
}

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

func (c *CreateOrganizationInvitationResponseContent) 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 *CreateOrganizationInvitationResponseContent) SetID(id *string) {
	c.ID = id
	c.require(createOrganizationInvitationResponseContentFieldID)
}

// SetOrganizationID sets the OrganizationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateOrganizationInvitationResponseContent) SetOrganizationID(organizationID *string) {
	c.OrganizationID = organizationID
	c.require(createOrganizationInvitationResponseContentFieldOrganizationID)
}

// SetInviter sets the Inviter field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateOrganizationInvitationResponseContent) SetInviter(inviter *OrganizationInvitationInviter) {
	c.Inviter = inviter
	c.require(createOrganizationInvitationResponseContentFieldInviter)
}

// SetInvitee sets the Invitee field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateOrganizationInvitationResponseContent) SetInvitee(invitee *OrganizationInvitationInvitee) {
	c.Invitee = invitee
	c.require(createOrganizationInvitationResponseContentFieldInvitee)
}

// SetInvitationURL sets the InvitationURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateOrganizationInvitationResponseContent) SetInvitationURL(invitationURL *string) {
	c.InvitationURL = invitationURL
	c.require(createOrganizationInvitationResponseContentFieldInvitationURL)
}

// 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 *CreateOrganizationInvitationResponseContent) SetCreatedAt(createdAt *time.Time) {
	c.CreatedAt = createdAt
	c.require(createOrganizationInvitationResponseContentFieldCreatedAt)
}

// SetExpiresAt sets the ExpiresAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateOrganizationInvitationResponseContent) SetExpiresAt(expiresAt *time.Time) {
	c.ExpiresAt = expiresAt
	c.require(createOrganizationInvitationResponseContentFieldExpiresAt)
}

// SetClientID sets the ClientID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateOrganizationInvitationResponseContent) SetClientID(clientID *string) {
	c.ClientID = clientID
	c.require(createOrganizationInvitationResponseContentFieldClientID)
}

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateOrganizationInvitationResponseContent) SetConnectionID(connectionID *string) {
	c.ConnectionID = connectionID
	c.require(createOrganizationInvitationResponseContentFieldConnectionID)
}

// SetAppMetadata sets the AppMetadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateOrganizationInvitationResponseContent) SetAppMetadata(appMetadata *AppMetadata) {
	c.AppMetadata = appMetadata
	c.require(createOrganizationInvitationResponseContentFieldAppMetadata)
}

// SetUserMetadata sets the UserMetadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateOrganizationInvitationResponseContent) SetUserMetadata(userMetadata *UserMetadata) {
	c.UserMetadata = userMetadata
	c.require(createOrganizationInvitationResponseContentFieldUserMetadata)
}

// SetRoles sets the Roles field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateOrganizationInvitationResponseContent) SetRoles(roles []string) {
	c.Roles = roles
	c.require(createOrganizationInvitationResponseContentFieldRoles)
}

// SetTicketID sets the TicketID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateOrganizationInvitationResponseContent) SetTicketID(ticketID *string) {
	c.TicketID = ticketID
	c.require(createOrganizationInvitationResponseContentFieldTicketID)
}

func (c *CreateOrganizationInvitationResponseContent) UnmarshalJSON(data []byte) error {
	type embed CreateOrganizationInvitationResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed: embed(*c),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*c = CreateOrganizationInvitationResponseContent(unmarshaler.embed)
	c.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	c.ExpiresAt = unmarshaler.ExpiresAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *c)
	if err != nil {
		return err
	}
	c.extraProperties = extraProperties
	c.rawJSON = json.RawMessage(data)
	return nil
}

func (c *CreateOrganizationInvitationResponseContent) MarshalJSON() ([]byte, error) {
	type embed CreateOrganizationInvitationResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed:     embed(*c),
		CreatedAt: internal.NewOptionalDateTime(c.CreatedAt),
		ExpiresAt: internal.NewOptionalDateTime(c.ExpiresAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (c *CreateOrganizationInvitationResponseContent) 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 (
	createPhoneProviderSendTestResponseContentFieldCode    = big.NewInt(1 << 0)
	createPhoneProviderSendTestResponseContentFieldMessage = big.NewInt(1 << 1)
)

type CreatePhoneProviderSendTestResponseContent struct {
	// The status code of the operation.
	Code *float64 `json:"code,omitempty" url:"code,omitempty"`
	// The description of the operation status.
	Message *string `json:"message,omitempty" url:"message,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 (c *CreatePhoneProviderSendTestResponseContent) GetCode() float64 {
	if c == nil || c.Code == nil {
		return 0
	}
	return *c.Code
}

func (c *CreatePhoneProviderSendTestResponseContent) GetMessage() string {
	if c == nil || c.Message == nil {
		return ""
	}
	return *c.Message
}

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

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

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

// SetMessage sets the Message field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreatePhoneProviderSendTestResponseContent) SetMessage(message *string) {
	c.Message = message
	c.require(createPhoneProviderSendTestResponseContentFieldMessage)
}

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

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

func (c *CreatePhoneProviderSendTestResponseContent) 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 (
	createPhoneTemplateResponseContentFieldID           = big.NewInt(1 << 0)
	createPhoneTemplateResponseContentFieldChannel      = big.NewInt(1 << 1)
	createPhoneTemplateResponseContentFieldCustomizable = big.NewInt(1 << 2)
	createPhoneTemplateResponseContentFieldTenant       = big.NewInt(1 << 3)
	createPhoneTemplateResponseContentFieldContent      = big.NewInt(1 << 4)
	createPhoneTemplateResponseContentFieldType         = big.NewInt(1 << 5)
	createPhoneTemplateResponseContentFieldDisabled     = big.NewInt(1 << 6)
)

type CreatePhoneTemplateResponseContent struct {
	ID           string                            `json:"id" url:"id"`
	Channel      *string                           `json:"channel,omitempty" url:"channel,omitempty"`
	Customizable *bool                             `json:"customizable,omitempty" url:"customizable,omitempty"`
	Tenant       *string                           `json:"tenant,omitempty" url:"tenant,omitempty"`
	Content      *PhoneTemplateContent             `json:"content" url:"content"`
	Type         PhoneTemplateNotificationTypeEnum `json:"type" url:"type"`
	// Whether the template is enabled (false) or disabled (true).
	Disabled bool `json:"disabled" url:"disabled"`

	// 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 *CreatePhoneTemplateResponseContent) GetID() string {
	if c == nil {
		return ""
	}
	return c.ID
}

func (c *CreatePhoneTemplateResponseContent) GetChannel() string {
	if c == nil || c.Channel == nil {
		return ""
	}
	return *c.Channel
}

func (c *CreatePhoneTemplateResponseContent) GetCustomizable() bool {
	if c == nil || c.Customizable == nil {
		return false
	}
	return *c.Customizable
}

func (c *CreatePhoneTemplateResponseContent) GetTenant() string {
	if c == nil || c.Tenant == nil {
		return ""
	}
	return *c.Tenant
}

func (c *CreatePhoneTemplateResponseContent) GetContent() *PhoneTemplateContent {
	if c == nil {
		return nil
	}
	return c.Content
}

func (c *CreatePhoneTemplateResponseContent) GetType() PhoneTemplateNotificationTypeEnum {
	if c == nil {
		return ""
	}
	return c.Type
}

func (c *CreatePhoneTemplateResponseContent) GetDisabled() bool {
	if c == nil {
		return false
	}
	return c.Disabled
}

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

func (c *CreatePhoneTemplateResponseContent) 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 *CreatePhoneTemplateResponseContent) SetID(id string) {
	c.ID = id
	c.require(createPhoneTemplateResponseContentFieldID)
}

// SetChannel sets the Channel field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreatePhoneTemplateResponseContent) SetChannel(channel *string) {
	c.Channel = channel
	c.require(createPhoneTemplateResponseContentFieldChannel)
}

// SetCustomizable sets the Customizable field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreatePhoneTemplateResponseContent) SetCustomizable(customizable *bool) {
	c.Customizable = customizable
	c.require(createPhoneTemplateResponseContentFieldCustomizable)
}

// SetTenant sets the Tenant field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreatePhoneTemplateResponseContent) SetTenant(tenant *string) {
	c.Tenant = tenant
	c.require(createPhoneTemplateResponseContentFieldTenant)
}

// SetContent sets the Content field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreatePhoneTemplateResponseContent) SetContent(content *PhoneTemplateContent) {
	c.Content = content
	c.require(createPhoneTemplateResponseContentFieldContent)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreatePhoneTemplateResponseContent) SetType(type_ PhoneTemplateNotificationTypeEnum) {
	c.Type = type_
	c.require(createPhoneTemplateResponseContentFieldType)
}

// SetDisabled sets the Disabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreatePhoneTemplateResponseContent) SetDisabled(disabled bool) {
	c.Disabled = disabled
	c.require(createPhoneTemplateResponseContentFieldDisabled)
}

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

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

func (c *CreatePhoneTemplateResponseContent) 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 (
	createPhoneTemplateTestNotificationResponseContentFieldMessage = big.NewInt(1 << 0)
)

type CreatePhoneTemplateTestNotificationResponseContent struct {
	Message string `json:"message" url:"message"`

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

	ExtraProperties map[string]interface{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (c *CreatePhoneTemplateTestNotificationResponseContent) GetMessage() string {
	if c == nil {
		return ""
	}
	return c.Message
}

func (c *CreatePhoneTemplateTestNotificationResponseContent) GetExtraProperties() map[string]interface{} {
	return c.ExtraProperties
}

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

// SetMessage sets the Message field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreatePhoneTemplateTestNotificationResponseContent) SetMessage(message string) {
	c.Message = message
	c.require(createPhoneTemplateTestNotificationResponseContentFieldMessage)
}

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

func (c *CreatePhoneTemplateTestNotificationResponseContent) MarshalJSON() ([]byte, error) {
	type embed CreatePhoneTemplateTestNotificationResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*c),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, c.ExtraProperties)
}

func (c *CreatePhoneTemplateTestNotificationResponseContent) 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 (
	createSCIMConfigurationRequestContentFieldUserIDAttribute = big.NewInt(1 << 0)
	createSCIMConfigurationRequestContentFieldMapping         = big.NewInt(1 << 1)
)

type CreateSCIMConfigurationRequestContent struct {
	// User ID attribute for generating unique user ids
	UserIDAttribute *string `json:"user_id_attribute,omitempty" url:"user_id_attribute,omitempty"`
	// The mapping between auth0 and SCIM
	Mapping []*SCIMMappingItem `json:"mapping,omitempty" url:"mapping,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 (c *CreateSCIMConfigurationRequestContent) GetUserIDAttribute() string {
	if c == nil || c.UserIDAttribute == nil {
		return ""
	}
	return *c.UserIDAttribute
}

func (c *CreateSCIMConfigurationRequestContent) GetMapping() []*SCIMMappingItem {
	if c == nil || c.Mapping == nil {
		return nil
	}
	return c.Mapping
}

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

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

// SetUserIDAttribute sets the UserIDAttribute field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateSCIMConfigurationRequestContent) SetUserIDAttribute(userIDAttribute *string) {
	c.UserIDAttribute = userIDAttribute
	c.require(createSCIMConfigurationRequestContentFieldUserIDAttribute)
}

// SetMapping sets the Mapping field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateSCIMConfigurationRequestContent) SetMapping(mapping []*SCIMMappingItem) {
	c.Mapping = mapping
	c.require(createSCIMConfigurationRequestContentFieldMapping)
}

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

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

func (c *CreateSCIMConfigurationRequestContent) 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 (
	createSCIMConfigurationResponseContentFieldConnectionID    = big.NewInt(1 << 0)
	createSCIMConfigurationResponseContentFieldConnectionName  = big.NewInt(1 << 1)
	createSCIMConfigurationResponseContentFieldStrategy        = big.NewInt(1 << 2)
	createSCIMConfigurationResponseContentFieldTenantName      = big.NewInt(1 << 3)
	createSCIMConfigurationResponseContentFieldUserIDAttribute = big.NewInt(1 << 4)
	createSCIMConfigurationResponseContentFieldMapping         = big.NewInt(1 << 5)
	createSCIMConfigurationResponseContentFieldCreatedAt       = big.NewInt(1 << 6)
	createSCIMConfigurationResponseContentFieldUpdatedOn       = big.NewInt(1 << 7)
)

type CreateSCIMConfigurationResponseContent struct {
	// The connection's identifier
	ConnectionID *string `json:"connection_id,omitempty" url:"connection_id,omitempty"`
	// The connection's identifier
	ConnectionName *string `json:"connection_name,omitempty" url:"connection_name,omitempty"`
	// The connection's strategy
	Strategy *string `json:"strategy,omitempty" url:"strategy,omitempty"`
	// The tenant's name
	TenantName *string `json:"tenant_name,omitempty" url:"tenant_name,omitempty"`
	// User ID attribute for generating unique user ids
	UserIDAttribute *string `json:"user_id_attribute,omitempty" url:"user_id_attribute,omitempty"`
	// The mapping between auth0 and SCIM
	Mapping []*SCIMMappingItem `json:"mapping,omitempty" url:"mapping,omitempty"`
	// The Date Time Scim Configuration was created
	CreatedAt *string `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The Date Time Scim Configuration was last updated
	UpdatedOn *string `json:"updated_on,omitempty" url:"updated_on,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 (c *CreateSCIMConfigurationResponseContent) GetConnectionID() string {
	if c == nil || c.ConnectionID == nil {
		return ""
	}
	return *c.ConnectionID
}

func (c *CreateSCIMConfigurationResponseContent) GetConnectionName() string {
	if c == nil || c.ConnectionName == nil {
		return ""
	}
	return *c.ConnectionName
}

func (c *CreateSCIMConfigurationResponseContent) GetStrategy() string {
	if c == nil || c.Strategy == nil {
		return ""
	}
	return *c.Strategy
}

func (c *CreateSCIMConfigurationResponseContent) GetTenantName() string {
	if c == nil || c.TenantName == nil {
		return ""
	}
	return *c.TenantName
}

func (c *CreateSCIMConfigurationResponseContent) GetUserIDAttribute() string {
	if c == nil || c.UserIDAttribute == nil {
		return ""
	}
	return *c.UserIDAttribute
}

func (c *CreateSCIMConfigurationResponseContent) GetMapping() []*SCIMMappingItem {
	if c == nil || c.Mapping == nil {
		return nil
	}
	return c.Mapping
}

func (c *CreateSCIMConfigurationResponseContent) GetCreatedAt() string {
	if c == nil || c.CreatedAt == nil {
		return ""
	}
	return *c.CreatedAt
}

func (c *CreateSCIMConfigurationResponseContent) GetUpdatedOn() string {
	if c == nil || c.UpdatedOn == nil {
		return ""
	}
	return *c.UpdatedOn
}

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

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

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateSCIMConfigurationResponseContent) SetConnectionID(connectionID *string) {
	c.ConnectionID = connectionID
	c.require(createSCIMConfigurationResponseContentFieldConnectionID)
}

// SetConnectionName sets the ConnectionName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateSCIMConfigurationResponseContent) SetConnectionName(connectionName *string) {
	c.ConnectionName = connectionName
	c.require(createSCIMConfigurationResponseContentFieldConnectionName)
}

// SetStrategy sets the Strategy field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateSCIMConfigurationResponseContent) SetStrategy(strategy *string) {
	c.Strategy = strategy
	c.require(createSCIMConfigurationResponseContentFieldStrategy)
}

// SetTenantName sets the TenantName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateSCIMConfigurationResponseContent) SetTenantName(tenantName *string) {
	c.TenantName = tenantName
	c.require(createSCIMConfigurationResponseContentFieldTenantName)
}

// SetUserIDAttribute sets the UserIDAttribute field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateSCIMConfigurationResponseContent) SetUserIDAttribute(userIDAttribute *string) {
	c.UserIDAttribute = userIDAttribute
	c.require(createSCIMConfigurationResponseContentFieldUserIDAttribute)
}

// SetMapping sets the Mapping field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateSCIMConfigurationResponseContent) SetMapping(mapping []*SCIMMappingItem) {
	c.Mapping = mapping
	c.require(createSCIMConfigurationResponseContentFieldMapping)
}

// 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 *CreateSCIMConfigurationResponseContent) SetCreatedAt(createdAt *string) {
	c.CreatedAt = createdAt
	c.require(createSCIMConfigurationResponseContentFieldCreatedAt)
}

// SetUpdatedOn sets the UpdatedOn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateSCIMConfigurationResponseContent) SetUpdatedOn(updatedOn *string) {
	c.UpdatedOn = updatedOn
	c.require(createSCIMConfigurationResponseContentFieldUpdatedOn)
}

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

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

func (c *CreateSCIMConfigurationResponseContent) 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 (
	createSCIMTokenResponseContentFieldTokenID    = big.NewInt(1 << 0)
	createSCIMTokenResponseContentFieldToken      = big.NewInt(1 << 1)
	createSCIMTokenResponseContentFieldScopes     = big.NewInt(1 << 2)
	createSCIMTokenResponseContentFieldCreatedAt  = big.NewInt(1 << 3)
	createSCIMTokenResponseContentFieldValidUntil = big.NewInt(1 << 4)
)

type CreateSCIMTokenResponseContent struct {
	// The token's identifier
	TokenID *string `json:"token_id,omitempty" url:"token_id,omitempty"`
	// The scim client's token
	Token *string `json:"token,omitempty" url:"token,omitempty"`
	// The scopes of the scim token
	Scopes []string `json:"scopes,omitempty" url:"scopes,omitempty"`
	// The token's created at timestamp
	CreatedAt *string `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The token's valid until at timestamp
	ValidUntil *string `json:"valid_until,omitempty" url:"valid_until,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 (c *CreateSCIMTokenResponseContent) GetTokenID() string {
	if c == nil || c.TokenID == nil {
		return ""
	}
	return *c.TokenID
}

func (c *CreateSCIMTokenResponseContent) GetToken() string {
	if c == nil || c.Token == nil {
		return ""
	}
	return *c.Token
}

func (c *CreateSCIMTokenResponseContent) GetScopes() []string {
	if c == nil || c.Scopes == nil {
		return nil
	}
	return c.Scopes
}

func (c *CreateSCIMTokenResponseContent) GetCreatedAt() string {
	if c == nil || c.CreatedAt == nil {
		return ""
	}
	return *c.CreatedAt
}

func (c *CreateSCIMTokenResponseContent) GetValidUntil() string {
	if c == nil || c.ValidUntil == nil {
		return ""
	}
	return *c.ValidUntil
}

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

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

// SetTokenID sets the TokenID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateSCIMTokenResponseContent) SetTokenID(tokenID *string) {
	c.TokenID = tokenID
	c.require(createSCIMTokenResponseContentFieldTokenID)
}

// SetToken sets the Token field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateSCIMTokenResponseContent) SetToken(token *string) {
	c.Token = token
	c.require(createSCIMTokenResponseContentFieldToken)
}

// SetScopes sets the Scopes field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateSCIMTokenResponseContent) SetScopes(scopes []string) {
	c.Scopes = scopes
	c.require(createSCIMTokenResponseContentFieldScopes)
}

// 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 *CreateSCIMTokenResponseContent) SetCreatedAt(createdAt *string) {
	c.CreatedAt = createdAt
	c.require(createSCIMTokenResponseContentFieldCreatedAt)
}

// SetValidUntil sets the ValidUntil field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateSCIMTokenResponseContent) SetValidUntil(validUntil *string) {
	c.ValidUntil = validUntil
	c.require(createSCIMTokenResponseContentFieldValidUntil)
}

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

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

func (c *CreateSCIMTokenResponseContent) 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 (
	createSelfServiceProfileSSOTicketResponseContentFieldTicket = big.NewInt(1 << 0)
)

type CreateSelfServiceProfileSSOTicketResponseContent struct {
	// The URL for the created ticket.
	Ticket *string `json:"ticket,omitempty" url:"ticket,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 (c *CreateSelfServiceProfileSSOTicketResponseContent) GetTicket() string {
	if c == nil || c.Ticket == nil {
		return ""
	}
	return *c.Ticket
}

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

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

// SetTicket sets the Ticket field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateSelfServiceProfileSSOTicketResponseContent) SetTicket(ticket *string) {
	c.Ticket = ticket
	c.require(createSelfServiceProfileSSOTicketResponseContentFieldTicket)
}

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

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

func (c *CreateSelfServiceProfileSSOTicketResponseContent) 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 (
	createTokenQuotaFieldClientCredentials = big.NewInt(1 << 0)
)

type CreateTokenQuota struct {
	ClientCredentials *TokenQuotaClientCredentials `json:"client_credentials" url:"client_credentials"`

	// 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 *CreateTokenQuota) GetClientCredentials() *TokenQuotaClientCredentials {
	if c == nil {
		return nil
	}
	return c.ClientCredentials
}

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

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

// SetClientCredentials sets the ClientCredentials field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateTokenQuota) SetClientCredentials(clientCredentials *TokenQuotaClientCredentials) {
	c.ClientCredentials = clientCredentials
	c.require(createTokenQuotaFieldClientCredentials)
}

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

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

func (c *CreateTokenQuota) 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)
}

// The successfully created authentication method.
var (
	createUserAuthenticationMethodResponseContentFieldID                            = big.NewInt(1 << 0)
	createUserAuthenticationMethodResponseContentFieldType                          = big.NewInt(1 << 1)
	createUserAuthenticationMethodResponseContentFieldName                          = big.NewInt(1 << 2)
	createUserAuthenticationMethodResponseContentFieldTotpSecret                    = big.NewInt(1 << 3)
	createUserAuthenticationMethodResponseContentFieldPhoneNumber                   = big.NewInt(1 << 4)
	createUserAuthenticationMethodResponseContentFieldEmail                         = big.NewInt(1 << 5)
	createUserAuthenticationMethodResponseContentFieldAuthenticationMethods         = big.NewInt(1 << 6)
	createUserAuthenticationMethodResponseContentFieldPreferredAuthenticationMethod = big.NewInt(1 << 7)
	createUserAuthenticationMethodResponseContentFieldKeyID                         = big.NewInt(1 << 8)
	createUserAuthenticationMethodResponseContentFieldPublicKey                     = big.NewInt(1 << 9)
	createUserAuthenticationMethodResponseContentFieldAaguid                        = big.NewInt(1 << 10)
	createUserAuthenticationMethodResponseContentFieldRelyingPartyIdentifier        = big.NewInt(1 << 11)
	createUserAuthenticationMethodResponseContentFieldCreatedAt                     = big.NewInt(1 << 12)
)

type CreateUserAuthenticationMethodResponseContent struct {
	// The ID of the newly created authentication method (automatically generated by the application)
	ID   *string                                 `json:"id,omitempty" url:"id,omitempty"`
	Type CreatedUserAuthenticationMethodTypeEnum `json:"type" url:"type"`
	// A human-readable label to identify the authentication method.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Base32 encoded secret for TOTP generation
	TotpSecret *string `json:"totp_secret,omitempty" url:"totp_secret,omitempty"`
	// Applies to phone authentication methods only. The destination phone number used to send verification codes via text and voice.
	PhoneNumber *string `json:"phone_number,omitempty" url:"phone_number,omitempty"`
	// Applies to email authentication methods only. The email address used to send verification messages.
	Email                         *string                               `json:"email,omitempty" url:"email,omitempty"`
	AuthenticationMethods         []*UserAuthenticationMethodProperties `json:"authentication_methods,omitempty" url:"authentication_methods,omitempty"`
	PreferredAuthenticationMethod *PreferredAuthenticationMethodEnum    `json:"preferred_authentication_method,omitempty" url:"preferred_authentication_method,omitempty"`
	// Applies to webauthn authenticators only. The id of the credential.
	KeyID *string `json:"key_id,omitempty" url:"key_id,omitempty"`
	// Applies to webauthn authenticators only. The public key.
	PublicKey *string `json:"public_key,omitempty" url:"public_key,omitempty"`
	// Applies to passkeys only. Authenticator Attestation Globally Unique Identifier.
	Aaguid *string `json:"aaguid,omitempty" url:"aaguid,omitempty"`
	// Applies to webauthn authenticators only. The relying party identifier.
	RelyingPartyIdentifier *string `json:"relying_party_identifier,omitempty" url:"relying_party_identifier,omitempty"`
	// Authentication method creation date
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,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 (c *CreateUserAuthenticationMethodResponseContent) GetID() string {
	if c == nil || c.ID == nil {
		return ""
	}
	return *c.ID
}

func (c *CreateUserAuthenticationMethodResponseContent) GetType() CreatedUserAuthenticationMethodTypeEnum {
	if c == nil {
		return ""
	}
	return c.Type
}

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

func (c *CreateUserAuthenticationMethodResponseContent) GetTotpSecret() string {
	if c == nil || c.TotpSecret == nil {
		return ""
	}
	return *c.TotpSecret
}

func (c *CreateUserAuthenticationMethodResponseContent) GetPhoneNumber() string {
	if c == nil || c.PhoneNumber == nil {
		return ""
	}
	return *c.PhoneNumber
}

func (c *CreateUserAuthenticationMethodResponseContent) GetEmail() string {
	if c == nil || c.Email == nil {
		return ""
	}
	return *c.Email
}

func (c *CreateUserAuthenticationMethodResponseContent) GetAuthenticationMethods() []*UserAuthenticationMethodProperties {
	if c == nil || c.AuthenticationMethods == nil {
		return nil
	}
	return c.AuthenticationMethods
}

func (c *CreateUserAuthenticationMethodResponseContent) GetPreferredAuthenticationMethod() PreferredAuthenticationMethodEnum {
	if c == nil || c.PreferredAuthenticationMethod == nil {
		return ""
	}
	return *c.PreferredAuthenticationMethod
}

func (c *CreateUserAuthenticationMethodResponseContent) GetKeyID() string {
	if c == nil || c.KeyID == nil {
		return ""
	}
	return *c.KeyID
}

func (c *CreateUserAuthenticationMethodResponseContent) GetPublicKey() string {
	if c == nil || c.PublicKey == nil {
		return ""
	}
	return *c.PublicKey
}

func (c *CreateUserAuthenticationMethodResponseContent) GetAaguid() string {
	if c == nil || c.Aaguid == nil {
		return ""
	}
	return *c.Aaguid
}

func (c *CreateUserAuthenticationMethodResponseContent) GetRelyingPartyIdentifier() string {
	if c == nil || c.RelyingPartyIdentifier == nil {
		return ""
	}
	return *c.RelyingPartyIdentifier
}

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

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

func (c *CreateUserAuthenticationMethodResponseContent) 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 *CreateUserAuthenticationMethodResponseContent) SetID(id *string) {
	c.ID = id
	c.require(createUserAuthenticationMethodResponseContentFieldID)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateUserAuthenticationMethodResponseContent) SetType(type_ CreatedUserAuthenticationMethodTypeEnum) {
	c.Type = type_
	c.require(createUserAuthenticationMethodResponseContentFieldType)
}

// 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 *CreateUserAuthenticationMethodResponseContent) SetName(name *string) {
	c.Name = name
	c.require(createUserAuthenticationMethodResponseContentFieldName)
}

// SetTotpSecret sets the TotpSecret field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateUserAuthenticationMethodResponseContent) SetTotpSecret(totpSecret *string) {
	c.TotpSecret = totpSecret
	c.require(createUserAuthenticationMethodResponseContentFieldTotpSecret)
}

// SetPhoneNumber sets the PhoneNumber field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateUserAuthenticationMethodResponseContent) SetPhoneNumber(phoneNumber *string) {
	c.PhoneNumber = phoneNumber
	c.require(createUserAuthenticationMethodResponseContentFieldPhoneNumber)
}

// SetEmail sets the Email field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateUserAuthenticationMethodResponseContent) SetEmail(email *string) {
	c.Email = email
	c.require(createUserAuthenticationMethodResponseContentFieldEmail)
}

// SetAuthenticationMethods sets the AuthenticationMethods field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateUserAuthenticationMethodResponseContent) SetAuthenticationMethods(authenticationMethods []*UserAuthenticationMethodProperties) {
	c.AuthenticationMethods = authenticationMethods
	c.require(createUserAuthenticationMethodResponseContentFieldAuthenticationMethods)
}

// SetPreferredAuthenticationMethod sets the PreferredAuthenticationMethod field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateUserAuthenticationMethodResponseContent) SetPreferredAuthenticationMethod(preferredAuthenticationMethod *PreferredAuthenticationMethodEnum) {
	c.PreferredAuthenticationMethod = preferredAuthenticationMethod
	c.require(createUserAuthenticationMethodResponseContentFieldPreferredAuthenticationMethod)
}

// SetKeyID sets the KeyID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateUserAuthenticationMethodResponseContent) SetKeyID(keyID *string) {
	c.KeyID = keyID
	c.require(createUserAuthenticationMethodResponseContentFieldKeyID)
}

// SetPublicKey sets the PublicKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateUserAuthenticationMethodResponseContent) SetPublicKey(publicKey *string) {
	c.PublicKey = publicKey
	c.require(createUserAuthenticationMethodResponseContentFieldPublicKey)
}

// SetAaguid sets the Aaguid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateUserAuthenticationMethodResponseContent) SetAaguid(aaguid *string) {
	c.Aaguid = aaguid
	c.require(createUserAuthenticationMethodResponseContentFieldAaguid)
}

// SetRelyingPartyIdentifier sets the RelyingPartyIdentifier field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateUserAuthenticationMethodResponseContent) SetRelyingPartyIdentifier(relyingPartyIdentifier *string) {
	c.RelyingPartyIdentifier = relyingPartyIdentifier
	c.require(createUserAuthenticationMethodResponseContentFieldRelyingPartyIdentifier)
}

// 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 *CreateUserAuthenticationMethodResponseContent) SetCreatedAt(createdAt *time.Time) {
	c.CreatedAt = createdAt
	c.require(createUserAuthenticationMethodResponseContentFieldCreatedAt)
}

func (c *CreateUserAuthenticationMethodResponseContent) UnmarshalJSON(data []byte) error {
	type embed CreateUserAuthenticationMethodResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
	}{
		embed: embed(*c),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*c = CreateUserAuthenticationMethodResponseContent(unmarshaler.embed)
	c.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *c)
	if err != nil {
		return err
	}
	c.extraProperties = extraProperties
	c.rawJSON = json.RawMessage(data)
	return nil
}

func (c *CreateUserAuthenticationMethodResponseContent) MarshalJSON() ([]byte, error) {
	type embed CreateUserAuthenticationMethodResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
	}{
		embed:     embed(*c),
		CreatedAt: internal.NewOptionalDateTime(c.CreatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (c *CreateUserAuthenticationMethodResponseContent) 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 (
	createVerifiableCredentialTemplateResponseContentFieldID                         = big.NewInt(1 << 0)
	createVerifiableCredentialTemplateResponseContentFieldName                       = big.NewInt(1 << 1)
	createVerifiableCredentialTemplateResponseContentFieldType                       = big.NewInt(1 << 2)
	createVerifiableCredentialTemplateResponseContentFieldDialect                    = big.NewInt(1 << 3)
	createVerifiableCredentialTemplateResponseContentFieldPresentation               = big.NewInt(1 << 4)
	createVerifiableCredentialTemplateResponseContentFieldCustomCertificateAuthority = big.NewInt(1 << 5)
	createVerifiableCredentialTemplateResponseContentFieldWellKnownTrustedIssuers    = big.NewInt(1 << 6)
	createVerifiableCredentialTemplateResponseContentFieldCreatedAt                  = big.NewInt(1 << 7)
	createVerifiableCredentialTemplateResponseContentFieldUpdatedAt                  = big.NewInt(1 << 8)
)

type CreateVerifiableCredentialTemplateResponseContent struct {
	// The id of the template.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name of the template.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// The type of the template.
	Type *string `json:"type,omitempty" url:"type,omitempty"`
	// The dialect of the template.
	Dialect      *string                 `json:"dialect,omitempty" url:"dialect,omitempty"`
	Presentation *MdlPresentationRequest `json:"presentation,omitempty" url:"presentation,omitempty"`
	// The custom certificate authority.
	CustomCertificateAuthority *string `json:"custom_certificate_authority,omitempty" url:"custom_certificate_authority,omitempty"`
	// The well-known trusted issuers, comma separated.
	WellKnownTrustedIssuers *string `json:"well_known_trusted_issuers,omitempty" url:"well_known_trusted_issuers,omitempty"`
	// The date and time the template was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The date and time the template was created.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

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

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

func (c *CreateVerifiableCredentialTemplateResponseContent) GetType() string {
	if c == nil || c.Type == nil {
		return ""
	}
	return *c.Type
}

func (c *CreateVerifiableCredentialTemplateResponseContent) GetDialect() string {
	if c == nil || c.Dialect == nil {
		return ""
	}
	return *c.Dialect
}

func (c *CreateVerifiableCredentialTemplateResponseContent) GetPresentation() MdlPresentationRequest {
	if c == nil || c.Presentation == nil {
		return MdlPresentationRequest{}
	}
	return *c.Presentation
}

func (c *CreateVerifiableCredentialTemplateResponseContent) GetCustomCertificateAuthority() string {
	if c == nil || c.CustomCertificateAuthority == nil {
		return ""
	}
	return *c.CustomCertificateAuthority
}

func (c *CreateVerifiableCredentialTemplateResponseContent) GetWellKnownTrustedIssuers() string {
	if c == nil || c.WellKnownTrustedIssuers == nil {
		return ""
	}
	return *c.WellKnownTrustedIssuers
}

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

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

func (c *CreateVerifiableCredentialTemplateResponseContent) GetExtraProperties() map[string]interface{} {
	return c.ExtraProperties
}

func (c *CreateVerifiableCredentialTemplateResponseContent) 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 *CreateVerifiableCredentialTemplateResponseContent) SetID(id *string) {
	c.ID = id
	c.require(createVerifiableCredentialTemplateResponseContentFieldID)
}

// 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 *CreateVerifiableCredentialTemplateResponseContent) SetName(name *string) {
	c.Name = name
	c.require(createVerifiableCredentialTemplateResponseContentFieldName)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateVerifiableCredentialTemplateResponseContent) SetType(type_ *string) {
	c.Type = type_
	c.require(createVerifiableCredentialTemplateResponseContentFieldType)
}

// SetDialect sets the Dialect field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateVerifiableCredentialTemplateResponseContent) SetDialect(dialect *string) {
	c.Dialect = dialect
	c.require(createVerifiableCredentialTemplateResponseContentFieldDialect)
}

// SetPresentation sets the Presentation field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateVerifiableCredentialTemplateResponseContent) SetPresentation(presentation *MdlPresentationRequest) {
	c.Presentation = presentation
	c.require(createVerifiableCredentialTemplateResponseContentFieldPresentation)
}

// SetCustomCertificateAuthority sets the CustomCertificateAuthority field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateVerifiableCredentialTemplateResponseContent) SetCustomCertificateAuthority(customCertificateAuthority *string) {
	c.CustomCertificateAuthority = customCertificateAuthority
	c.require(createVerifiableCredentialTemplateResponseContentFieldCustomCertificateAuthority)
}

// SetWellKnownTrustedIssuers sets the WellKnownTrustedIssuers field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateVerifiableCredentialTemplateResponseContent) SetWellKnownTrustedIssuers(wellKnownTrustedIssuers *string) {
	c.WellKnownTrustedIssuers = wellKnownTrustedIssuers
	c.require(createVerifiableCredentialTemplateResponseContentFieldWellKnownTrustedIssuers)
}

// 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 *CreateVerifiableCredentialTemplateResponseContent) SetCreatedAt(createdAt *time.Time) {
	c.CreatedAt = createdAt
	c.require(createVerifiableCredentialTemplateResponseContentFieldCreatedAt)
}

// 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 *CreateVerifiableCredentialTemplateResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	c.UpdatedAt = updatedAt
	c.require(createVerifiableCredentialTemplateResponseContentFieldUpdatedAt)
}

func (c *CreateVerifiableCredentialTemplateResponseContent) UnmarshalJSON(data []byte) error {
	type embed CreateVerifiableCredentialTemplateResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*c),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*c = CreateVerifiableCredentialTemplateResponseContent(unmarshaler.embed)
	c.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	c.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *c)
	if err != nil {
		return err
	}
	c.ExtraProperties = extraProperties
	c.rawJSON = json.RawMessage(data)
	return nil
}

func (c *CreateVerifiableCredentialTemplateResponseContent) MarshalJSON() ([]byte, error) {
	type embed CreateVerifiableCredentialTemplateResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*c),
		CreatedAt: internal.NewOptionalDateTime(c.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(c.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, c.ExtraProperties)
}

func (c *CreateVerifiableCredentialTemplateResponseContent) 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 (
	createVerificationEmailResponseContentFieldStatus    = big.NewInt(1 << 0)
	createVerificationEmailResponseContentFieldType      = big.NewInt(1 << 1)
	createVerificationEmailResponseContentFieldCreatedAt = big.NewInt(1 << 2)
	createVerificationEmailResponseContentFieldID        = big.NewInt(1 << 3)
)

type CreateVerificationEmailResponseContent struct {
	// Status of this job.
	Status string `json:"status" url:"status"`
	// Type of job this is.
	Type string `json:"type" url:"type"`
	// When this job was created.
	CreatedAt *string `json:"created_at,omitempty" url:"created_at,omitempty"`
	// ID of this job.
	ID string `json:"id" url:"id"`

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

	ExtraProperties map[string]interface{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (c *CreateVerificationEmailResponseContent) GetStatus() string {
	if c == nil {
		return ""
	}
	return c.Status
}

func (c *CreateVerificationEmailResponseContent) GetType() string {
	if c == nil {
		return ""
	}
	return c.Type
}

func (c *CreateVerificationEmailResponseContent) GetCreatedAt() string {
	if c == nil || c.CreatedAt == nil {
		return ""
	}
	return *c.CreatedAt
}

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

func (c *CreateVerificationEmailResponseContent) GetExtraProperties() map[string]interface{} {
	return c.ExtraProperties
}

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

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateVerificationEmailResponseContent) SetStatus(status string) {
	c.Status = status
	c.require(createVerificationEmailResponseContentFieldStatus)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CreateVerificationEmailResponseContent) SetType(type_ string) {
	c.Type = type_
	c.require(createVerificationEmailResponseContentFieldType)
}

// 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 *CreateVerificationEmailResponseContent) SetCreatedAt(createdAt *string) {
	c.CreatedAt = createdAt
	c.require(createVerificationEmailResponseContentFieldCreatedAt)
}

// 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 *CreateVerificationEmailResponseContent) SetID(id string) {
	c.ID = id
	c.require(createVerificationEmailResponseContentFieldID)
}

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

func (c *CreateVerificationEmailResponseContent) MarshalJSON() ([]byte, error) {
	type embed CreateVerificationEmailResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*c),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, c.ExtraProperties)
}

func (c *CreateVerificationEmailResponseContent) 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)
}

type CreatedAuthenticationMethodTypeEnum string

const (
	CreatedAuthenticationMethodTypeEnumPhone           CreatedAuthenticationMethodTypeEnum = "phone"
	CreatedAuthenticationMethodTypeEnumEmail           CreatedAuthenticationMethodTypeEnum = "email"
	CreatedAuthenticationMethodTypeEnumTotp            CreatedAuthenticationMethodTypeEnum = "totp"
	CreatedAuthenticationMethodTypeEnumWebauthnRoaming CreatedAuthenticationMethodTypeEnum = "webauthn-roaming"
)

func NewCreatedAuthenticationMethodTypeEnumFromString(s string) (CreatedAuthenticationMethodTypeEnum, error) {
	switch s {
	case "phone":
		return CreatedAuthenticationMethodTypeEnumPhone, nil
	case "email":
		return CreatedAuthenticationMethodTypeEnumEmail, nil
	case "totp":
		return CreatedAuthenticationMethodTypeEnumTotp, nil
	case "webauthn-roaming":
		return CreatedAuthenticationMethodTypeEnumWebauthnRoaming, nil
	}
	var t CreatedAuthenticationMethodTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (c CreatedAuthenticationMethodTypeEnum) Ptr() *CreatedAuthenticationMethodTypeEnum {
	return &c
}

type CreatedUserAuthenticationMethodTypeEnum string

const (
	CreatedUserAuthenticationMethodTypeEnumPhone           CreatedUserAuthenticationMethodTypeEnum = "phone"
	CreatedUserAuthenticationMethodTypeEnumEmail           CreatedUserAuthenticationMethodTypeEnum = "email"
	CreatedUserAuthenticationMethodTypeEnumTotp            CreatedUserAuthenticationMethodTypeEnum = "totp"
	CreatedUserAuthenticationMethodTypeEnumWebauthnRoaming CreatedUserAuthenticationMethodTypeEnum = "webauthn-roaming"
	CreatedUserAuthenticationMethodTypeEnumPasskey         CreatedUserAuthenticationMethodTypeEnum = "passkey"
)

func NewCreatedUserAuthenticationMethodTypeEnumFromString(s string) (CreatedUserAuthenticationMethodTypeEnum, error) {
	switch s {
	case "phone":
		return CreatedUserAuthenticationMethodTypeEnumPhone, nil
	case "email":
		return CreatedUserAuthenticationMethodTypeEnumEmail, nil
	case "totp":
		return CreatedUserAuthenticationMethodTypeEnumTotp, nil
	case "webauthn-roaming":
		return CreatedUserAuthenticationMethodTypeEnumWebauthnRoaming, nil
	case "passkey":
		return CreatedUserAuthenticationMethodTypeEnumPasskey, nil
	}
	var t CreatedUserAuthenticationMethodTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (c CreatedUserAuthenticationMethodTypeEnum) Ptr() *CreatedUserAuthenticationMethodTypeEnum {
	return &c
}

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

type CustomProviderConfiguration struct {
	DeliveryMethods []CustomProviderDeliveryMethodEnum `json:"delivery_methods" url:"delivery_methods"`

	// 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 *CustomProviderConfiguration) GetDeliveryMethods() []CustomProviderDeliveryMethodEnum {
	if c == nil {
		return nil
	}
	return c.DeliveryMethods
}

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

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

// SetDeliveryMethods sets the DeliveryMethods field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomProviderConfiguration) SetDeliveryMethods(deliveryMethods []CustomProviderDeliveryMethodEnum) {
	c.DeliveryMethods = deliveryMethods
	c.require(customProviderConfigurationFieldDeliveryMethods)
}

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

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

func (c *CustomProviderConfiguration) 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)
}

type CustomProviderCredentials struct {

	// 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 *CustomProviderCredentials) GetExtraProperties() map[string]interface{} {
	return c.extraProperties
}

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

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

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

func (c *CustomProviderCredentials) 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)
}

type CustomProviderDeliveryMethodEnum string

const (
	CustomProviderDeliveryMethodEnumText  CustomProviderDeliveryMethodEnum = "text"
	CustomProviderDeliveryMethodEnumVoice CustomProviderDeliveryMethodEnum = "voice"
)

func NewCustomProviderDeliveryMethodEnumFromString(s string) (CustomProviderDeliveryMethodEnum, error) {
	switch s {
	case "text":
		return CustomProviderDeliveryMethodEnumText, nil
	case "voice":
		return CustomProviderDeliveryMethodEnumVoice, nil
	}
	var t CustomProviderDeliveryMethodEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (c CustomProviderDeliveryMethodEnum) Ptr() *CustomProviderDeliveryMethodEnum {
	return &c
}

// Key algorithm
type CustomSigningKeyAlgorithmEnum string

const (
	CustomSigningKeyAlgorithmEnumRs256 CustomSigningKeyAlgorithmEnum = "RS256"
	CustomSigningKeyAlgorithmEnumRs384 CustomSigningKeyAlgorithmEnum = "RS384"
	CustomSigningKeyAlgorithmEnumRs512 CustomSigningKeyAlgorithmEnum = "RS512"
	CustomSigningKeyAlgorithmEnumEs256 CustomSigningKeyAlgorithmEnum = "ES256"
	CustomSigningKeyAlgorithmEnumEs384 CustomSigningKeyAlgorithmEnum = "ES384"
	CustomSigningKeyAlgorithmEnumEs512 CustomSigningKeyAlgorithmEnum = "ES512"
	CustomSigningKeyAlgorithmEnumPs256 CustomSigningKeyAlgorithmEnum = "PS256"
	CustomSigningKeyAlgorithmEnumPs384 CustomSigningKeyAlgorithmEnum = "PS384"
	CustomSigningKeyAlgorithmEnumPs512 CustomSigningKeyAlgorithmEnum = "PS512"
)

func NewCustomSigningKeyAlgorithmEnumFromString(s string) (CustomSigningKeyAlgorithmEnum, error) {
	switch s {
	case "RS256":
		return CustomSigningKeyAlgorithmEnumRs256, nil
	case "RS384":
		return CustomSigningKeyAlgorithmEnumRs384, nil
	case "RS512":
		return CustomSigningKeyAlgorithmEnumRs512, nil
	case "ES256":
		return CustomSigningKeyAlgorithmEnumEs256, nil
	case "ES384":
		return CustomSigningKeyAlgorithmEnumEs384, nil
	case "ES512":
		return CustomSigningKeyAlgorithmEnumEs512, nil
	case "PS256":
		return CustomSigningKeyAlgorithmEnumPs256, nil
	case "PS384":
		return CustomSigningKeyAlgorithmEnumPs384, nil
	case "PS512":
		return CustomSigningKeyAlgorithmEnumPs512, nil
	}
	var t CustomSigningKeyAlgorithmEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (c CustomSigningKeyAlgorithmEnum) Ptr() *CustomSigningKeyAlgorithmEnum {
	return &c
}

// Curve
type CustomSigningKeyCurveEnum string

const (
	CustomSigningKeyCurveEnumP256 CustomSigningKeyCurveEnum = "P-256"
	CustomSigningKeyCurveEnumP384 CustomSigningKeyCurveEnum = "P-384"
	CustomSigningKeyCurveEnumP521 CustomSigningKeyCurveEnum = "P-521"
)

func NewCustomSigningKeyCurveEnumFromString(s string) (CustomSigningKeyCurveEnum, error) {
	switch s {
	case "P-256":
		return CustomSigningKeyCurveEnumP256, nil
	case "P-384":
		return CustomSigningKeyCurveEnumP384, nil
	case "P-521":
		return CustomSigningKeyCurveEnumP521, nil
	}
	var t CustomSigningKeyCurveEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (c CustomSigningKeyCurveEnum) Ptr() *CustomSigningKeyCurveEnum {
	return &c
}

// JWK representing a custom public signing key.
var (
	customSigningKeyJwkFieldKty     = big.NewInt(1 << 0)
	customSigningKeyJwkFieldKid     = big.NewInt(1 << 1)
	customSigningKeyJwkFieldUse     = big.NewInt(1 << 2)
	customSigningKeyJwkFieldKeyOps  = big.NewInt(1 << 3)
	customSigningKeyJwkFieldAlg     = big.NewInt(1 << 4)
	customSigningKeyJwkFieldN       = big.NewInt(1 << 5)
	customSigningKeyJwkFieldE       = big.NewInt(1 << 6)
	customSigningKeyJwkFieldCrv     = big.NewInt(1 << 7)
	customSigningKeyJwkFieldX       = big.NewInt(1 << 8)
	customSigningKeyJwkFieldY       = big.NewInt(1 << 9)
	customSigningKeyJwkFieldX5U     = big.NewInt(1 << 10)
	customSigningKeyJwkFieldX5C     = big.NewInt(1 << 11)
	customSigningKeyJwkFieldX5T     = big.NewInt(1 << 12)
	customSigningKeyJwkFieldX5TS256 = big.NewInt(1 << 13)
)

type CustomSigningKeyJwk struct {
	Kty CustomSigningKeyTypeEnum `json:"kty" url:"kty"`
	// Key identifier
	Kid *string                  `json:"kid,omitempty" url:"kid,omitempty"`
	Use *CustomSigningKeyUseEnum `json:"use,omitempty" url:"use,omitempty"`
	// Key operations
	KeyOps []CustomSigningKeyOperationEnum `json:"key_ops,omitempty" url:"key_ops,omitempty"`
	Alg    *CustomSigningKeyAlgorithmEnum  `json:"alg,omitempty" url:"alg,omitempty"`
	// Key modulus
	N *string `json:"n,omitempty" url:"n,omitempty"`
	// Key exponent
	E   *string                    `json:"e,omitempty" url:"e,omitempty"`
	Crv *CustomSigningKeyCurveEnum `json:"crv,omitempty" url:"crv,omitempty"`
	// X coordinate
	X *string `json:"x,omitempty" url:"x,omitempty"`
	// Y coordinate
	Y *string `json:"y,omitempty" url:"y,omitempty"`
	// X.509 URL
	X5U *string `json:"x5u,omitempty" url:"x5u,omitempty"`
	// X.509 certificate chain
	X5C []string `json:"x5c,omitempty" url:"x5c,omitempty"`
	// X.509 certificate SHA-1 thumbprint
	X5T *string `json:"x5t,omitempty" url:"x5t,omitempty"`
	// X.509 certificate SHA-256 thumbprint
	X5TS256 *string `json:"x5t#S256,omitempty" url:"x5t#S256,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 (c *CustomSigningKeyJwk) GetKty() CustomSigningKeyTypeEnum {
	if c == nil {
		return ""
	}
	return c.Kty
}

func (c *CustomSigningKeyJwk) GetKid() string {
	if c == nil || c.Kid == nil {
		return ""
	}
	return *c.Kid
}

func (c *CustomSigningKeyJwk) GetKeyOps() []CustomSigningKeyOperationEnum {
	if c == nil || c.KeyOps == nil {
		return nil
	}
	return c.KeyOps
}

func (c *CustomSigningKeyJwk) GetAlg() CustomSigningKeyAlgorithmEnum {
	if c == nil || c.Alg == nil {
		return ""
	}
	return *c.Alg
}

func (c *CustomSigningKeyJwk) GetN() string {
	if c == nil || c.N == nil {
		return ""
	}
	return *c.N
}

func (c *CustomSigningKeyJwk) GetE() string {
	if c == nil || c.E == nil {
		return ""
	}
	return *c.E
}

func (c *CustomSigningKeyJwk) GetCrv() CustomSigningKeyCurveEnum {
	if c == nil || c.Crv == nil {
		return ""
	}
	return *c.Crv
}

func (c *CustomSigningKeyJwk) GetX() string {
	if c == nil || c.X == nil {
		return ""
	}
	return *c.X
}

func (c *CustomSigningKeyJwk) GetY() string {
	if c == nil || c.Y == nil {
		return ""
	}
	return *c.Y
}

func (c *CustomSigningKeyJwk) GetX5U() string {
	if c == nil || c.X5U == nil {
		return ""
	}
	return *c.X5U
}

func (c *CustomSigningKeyJwk) GetX5C() []string {
	if c == nil || c.X5C == nil {
		return nil
	}
	return c.X5C
}

func (c *CustomSigningKeyJwk) GetX5T() string {
	if c == nil || c.X5T == nil {
		return ""
	}
	return *c.X5T
}

func (c *CustomSigningKeyJwk) GetX5TS256() string {
	if c == nil || c.X5TS256 == nil {
		return ""
	}
	return *c.X5TS256
}

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

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

// SetKty sets the Kty field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomSigningKeyJwk) SetKty(kty CustomSigningKeyTypeEnum) {
	c.Kty = kty
	c.require(customSigningKeyJwkFieldKty)
}

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomSigningKeyJwk) SetKid(kid *string) {
	c.Kid = kid
	c.require(customSigningKeyJwkFieldKid)
}

// SetUse sets the Use field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomSigningKeyJwk) SetUse(use *CustomSigningKeyUseEnum) {
	c.Use = use
	c.require(customSigningKeyJwkFieldUse)
}

// SetKeyOps sets the KeyOps field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomSigningKeyJwk) SetKeyOps(keyOps []CustomSigningKeyOperationEnum) {
	c.KeyOps = keyOps
	c.require(customSigningKeyJwkFieldKeyOps)
}

// SetAlg sets the Alg field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomSigningKeyJwk) SetAlg(alg *CustomSigningKeyAlgorithmEnum) {
	c.Alg = alg
	c.require(customSigningKeyJwkFieldAlg)
}

// SetN sets the N field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomSigningKeyJwk) SetN(n *string) {
	c.N = n
	c.require(customSigningKeyJwkFieldN)
}

// SetE sets the E field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomSigningKeyJwk) SetE(e *string) {
	c.E = e
	c.require(customSigningKeyJwkFieldE)
}

// SetCrv sets the Crv field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomSigningKeyJwk) SetCrv(crv *CustomSigningKeyCurveEnum) {
	c.Crv = crv
	c.require(customSigningKeyJwkFieldCrv)
}

// SetX sets the X field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomSigningKeyJwk) SetX(x *string) {
	c.X = x
	c.require(customSigningKeyJwkFieldX)
}

// SetY sets the Y field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomSigningKeyJwk) SetY(y *string) {
	c.Y = y
	c.require(customSigningKeyJwkFieldY)
}

// SetX5U sets the X5U field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomSigningKeyJwk) SetX5U(x5U *string) {
	c.X5U = x5U
	c.require(customSigningKeyJwkFieldX5U)
}

// SetX5C sets the X5C field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomSigningKeyJwk) SetX5C(x5C []string) {
	c.X5C = x5C
	c.require(customSigningKeyJwkFieldX5C)
}

// SetX5T sets the X5T field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomSigningKeyJwk) SetX5T(x5T *string) {
	c.X5T = x5T
	c.require(customSigningKeyJwkFieldX5T)
}

// SetX5TS256 sets the X5TS256 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (c *CustomSigningKeyJwk) SetX5TS256(x5TS256 *string) {
	c.X5TS256 = x5TS256
	c.require(customSigningKeyJwkFieldX5TS256)
}

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

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

func (c *CustomSigningKeyJwk) 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)
}

type CustomSigningKeyOperationEnum = string

// Key type
type CustomSigningKeyTypeEnum string

const (
	CustomSigningKeyTypeEnumEc  CustomSigningKeyTypeEnum = "EC"
	CustomSigningKeyTypeEnumRsa CustomSigningKeyTypeEnum = "RSA"
)

func NewCustomSigningKeyTypeEnumFromString(s string) (CustomSigningKeyTypeEnum, error) {
	switch s {
	case "EC":
		return CustomSigningKeyTypeEnumEc, nil
	case "RSA":
		return CustomSigningKeyTypeEnumRsa, nil
	}
	var t CustomSigningKeyTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (c CustomSigningKeyTypeEnum) Ptr() *CustomSigningKeyTypeEnum {
	return &c
}

// Key use
type CustomSigningKeyUseEnum = string

// Token Quota configuration, to configure quotas for token issuance for clients and organizations. Applied to all clients and organizations unless overridden in individual client or organization settings.
var (
	defaultTokenQuotaFieldClients       = big.NewInt(1 << 0)
	defaultTokenQuotaFieldOrganizations = big.NewInt(1 << 1)
)

type DefaultTokenQuota struct {
	Clients       *TokenQuotaConfiguration `json:"clients,omitempty" url:"clients,omitempty"`
	Organizations *TokenQuotaConfiguration `json:"organizations,omitempty" url:"organizations,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 (d *DefaultTokenQuota) GetClients() TokenQuotaConfiguration {
	if d == nil || d.Clients == nil {
		return TokenQuotaConfiguration{}
	}
	return *d.Clients
}

func (d *DefaultTokenQuota) GetOrganizations() TokenQuotaConfiguration {
	if d == nil || d.Organizations == nil {
		return TokenQuotaConfiguration{}
	}
	return *d.Organizations
}

func (d *DefaultTokenQuota) GetExtraProperties() map[string]interface{} {
	return d.extraProperties
}

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

// SetClients sets the Clients field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DefaultTokenQuota) SetClients(clients *TokenQuotaConfiguration) {
	d.Clients = clients
	d.require(defaultTokenQuotaFieldClients)
}

// SetOrganizations sets the Organizations field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DefaultTokenQuota) SetOrganizations(organizations *TokenQuotaConfiguration) {
	d.Organizations = organizations
	d.require(defaultTokenQuotaFieldOrganizations)
}

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

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

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

// Array of secret names to delete.
type DeleteHookSecretRequestContent = []string

// An array of objects with information about the user's identities.
type DeleteUserIdentityResponseContent = []*DeleteUserIdentityResponseContentItem

var (
	deleteUserIdentityResponseContentItemFieldConnection        = big.NewInt(1 << 0)
	deleteUserIdentityResponseContentItemFieldUserID            = big.NewInt(1 << 1)
	deleteUserIdentityResponseContentItemFieldProvider          = big.NewInt(1 << 2)
	deleteUserIdentityResponseContentItemFieldIsSocial          = big.NewInt(1 << 3)
	deleteUserIdentityResponseContentItemFieldAccessToken       = big.NewInt(1 << 4)
	deleteUserIdentityResponseContentItemFieldAccessTokenSecret = big.NewInt(1 << 5)
	deleteUserIdentityResponseContentItemFieldRefreshToken      = big.NewInt(1 << 6)
	deleteUserIdentityResponseContentItemFieldProfileData       = big.NewInt(1 << 7)
)

type DeleteUserIdentityResponseContentItem struct {
	// The name of the connection for the identity.
	Connection string `json:"connection" url:"connection"`
	// The unique identifier for the user for the identity.
	UserID string `json:"user_id" url:"user_id"`
	// The type of identity provider.
	Provider string `json:"provider" url:"provider"`
	// <code>true</code> if the identity provider is a social provider, <code>false</code>s otherwise
	IsSocial *bool `json:"isSocial,omitempty" url:"isSocial,omitempty"`
	// IDP access token returned only if scope read:user_idp_tokens is defined
	AccessToken *string `json:"access_token,omitempty" url:"access_token,omitempty"`
	// IDP access token secret returned only if scope read:user_idp_tokens is defined.
	AccessTokenSecret *string `json:"access_token_secret,omitempty" url:"access_token_secret,omitempty"`
	// IDP refresh token returned only if scope read:user_idp_tokens is defined.
	RefreshToken *string          `json:"refresh_token,omitempty" url:"refresh_token,omitempty"`
	ProfileData  *UserProfileData `json:"profileData,omitempty" url:"profileData,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 (d *DeleteUserIdentityResponseContentItem) GetConnection() string {
	if d == nil {
		return ""
	}
	return d.Connection
}

func (d *DeleteUserIdentityResponseContentItem) GetUserID() string {
	if d == nil {
		return ""
	}
	return d.UserID
}

func (d *DeleteUserIdentityResponseContentItem) GetProvider() string {
	if d == nil {
		return ""
	}
	return d.Provider
}

func (d *DeleteUserIdentityResponseContentItem) GetIsSocial() bool {
	if d == nil || d.IsSocial == nil {
		return false
	}
	return *d.IsSocial
}

func (d *DeleteUserIdentityResponseContentItem) GetAccessToken() string {
	if d == nil || d.AccessToken == nil {
		return ""
	}
	return *d.AccessToken
}

func (d *DeleteUserIdentityResponseContentItem) GetAccessTokenSecret() string {
	if d == nil || d.AccessTokenSecret == nil {
		return ""
	}
	return *d.AccessTokenSecret
}

func (d *DeleteUserIdentityResponseContentItem) GetRefreshToken() string {
	if d == nil || d.RefreshToken == nil {
		return ""
	}
	return *d.RefreshToken
}

func (d *DeleteUserIdentityResponseContentItem) GetProfileData() UserProfileData {
	if d == nil || d.ProfileData == nil {
		return UserProfileData{}
	}
	return *d.ProfileData
}

func (d *DeleteUserIdentityResponseContentItem) GetExtraProperties() map[string]interface{} {
	return d.extraProperties
}

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

// SetConnection sets the Connection field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeleteUserIdentityResponseContentItem) SetConnection(connection string) {
	d.Connection = connection
	d.require(deleteUserIdentityResponseContentItemFieldConnection)
}

// 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 (d *DeleteUserIdentityResponseContentItem) SetUserID(userID string) {
	d.UserID = userID
	d.require(deleteUserIdentityResponseContentItemFieldUserID)
}

// SetProvider sets the Provider field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeleteUserIdentityResponseContentItem) SetProvider(provider string) {
	d.Provider = provider
	d.require(deleteUserIdentityResponseContentItemFieldProvider)
}

// SetIsSocial sets the IsSocial field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeleteUserIdentityResponseContentItem) SetIsSocial(isSocial *bool) {
	d.IsSocial = isSocial
	d.require(deleteUserIdentityResponseContentItemFieldIsSocial)
}

// SetAccessToken sets the AccessToken field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeleteUserIdentityResponseContentItem) SetAccessToken(accessToken *string) {
	d.AccessToken = accessToken
	d.require(deleteUserIdentityResponseContentItemFieldAccessToken)
}

// SetAccessTokenSecret sets the AccessTokenSecret field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeleteUserIdentityResponseContentItem) SetAccessTokenSecret(accessTokenSecret *string) {
	d.AccessTokenSecret = accessTokenSecret
	d.require(deleteUserIdentityResponseContentItemFieldAccessTokenSecret)
}

// SetRefreshToken sets the RefreshToken field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeleteUserIdentityResponseContentItem) SetRefreshToken(refreshToken *string) {
	d.RefreshToken = refreshToken
	d.require(deleteUserIdentityResponseContentItemFieldRefreshToken)
}

// SetProfileData sets the ProfileData field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeleteUserIdentityResponseContentItem) SetProfileData(profileData *UserProfileData) {
	d.ProfileData = profileData
	d.require(deleteUserIdentityResponseContentItemFieldProfileData)
}

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

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

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

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

type DeployActionVersionRequestBodyParams struct {
	// True if the draft of the action should be updated with the reverted version.
	UpdateDraft *bool `json:"update_draft,omitempty" url:"update_draft,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 (d *DeployActionVersionRequestBodyParams) GetUpdateDraft() bool {
	if d == nil || d.UpdateDraft == nil {
		return false
	}
	return *d.UpdateDraft
}

func (d *DeployActionVersionRequestBodyParams) GetExtraProperties() map[string]interface{} {
	return d.extraProperties
}

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

// SetUpdateDraft sets the UpdateDraft field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeployActionVersionRequestBodyParams) SetUpdateDraft(updateDraft *bool) {
	d.UpdateDraft = updateDraft
	d.require(deployActionVersionRequestBodyParamsFieldUpdateDraft)
}

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

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

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

type DeployActionVersionRequestContent = *DeployActionVersionRequestBodyParams

var (
	deployActionVersionResponseContentFieldID                = big.NewInt(1 << 0)
	deployActionVersionResponseContentFieldActionID          = big.NewInt(1 << 1)
	deployActionVersionResponseContentFieldCode              = big.NewInt(1 << 2)
	deployActionVersionResponseContentFieldDependencies      = big.NewInt(1 << 3)
	deployActionVersionResponseContentFieldDeployed          = big.NewInt(1 << 4)
	deployActionVersionResponseContentFieldRuntime           = big.NewInt(1 << 5)
	deployActionVersionResponseContentFieldSecrets           = big.NewInt(1 << 6)
	deployActionVersionResponseContentFieldStatus            = big.NewInt(1 << 7)
	deployActionVersionResponseContentFieldNumber            = big.NewInt(1 << 8)
	deployActionVersionResponseContentFieldErrors            = big.NewInt(1 << 9)
	deployActionVersionResponseContentFieldAction            = big.NewInt(1 << 10)
	deployActionVersionResponseContentFieldBuiltAt           = big.NewInt(1 << 11)
	deployActionVersionResponseContentFieldCreatedAt         = big.NewInt(1 << 12)
	deployActionVersionResponseContentFieldUpdatedAt         = big.NewInt(1 << 13)
	deployActionVersionResponseContentFieldSupportedTriggers = big.NewInt(1 << 14)
)

type DeployActionVersionResponseContent struct {
	// The unique id of an action version.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The id of the action to which this version belongs.
	ActionID *string `json:"action_id,omitempty" url:"action_id,omitempty"`
	// The source code of this specific version of the action.
	Code *string `json:"code,omitempty" url:"code,omitempty"`
	// The list of third party npm modules, and their versions, that this specific version depends on.
	Dependencies []*ActionVersionDependency `json:"dependencies,omitempty" url:"dependencies,omitempty"`
	// Indicates if this specific version is the currently one deployed.
	Deployed *bool `json:"deployed,omitempty" url:"deployed,omitempty"`
	// The Node runtime. For example: `node22`
	Runtime *string `json:"runtime,omitempty" url:"runtime,omitempty"`
	// The list of secrets that are included in an action or a version of an action.
	Secrets []*ActionSecretResponse       `json:"secrets,omitempty" url:"secrets,omitempty"`
	Status  *ActionVersionBuildStatusEnum `json:"status,omitempty" url:"status,omitempty"`
	// The index of this version in list of versions for the action.
	Number *float64 `json:"number,omitempty" url:"number,omitempty"`
	// Any errors that occurred while the version was being built.
	Errors []*ActionError `json:"errors,omitempty" url:"errors,omitempty"`
	Action *ActionBase    `json:"action,omitempty" url:"action,omitempty"`
	// The time when this version was built successfully.
	BuiltAt *time.Time `json:"built_at,omitempty" url:"built_at,omitempty"`
	// The time when this version was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The time when a version was updated. Versions are never updated externally. Only Auth0 will update an action version as it is being built.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,omitempty"`
	// The list of triggers that this version supports. At this time, a version can only target a single trigger at a time.
	SupportedTriggers []*ActionTrigger `json:"supported_triggers,omitempty" url:"supported_triggers,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 (d *DeployActionVersionResponseContent) GetID() string {
	if d == nil || d.ID == nil {
		return ""
	}
	return *d.ID
}

func (d *DeployActionVersionResponseContent) GetActionID() string {
	if d == nil || d.ActionID == nil {
		return ""
	}
	return *d.ActionID
}

func (d *DeployActionVersionResponseContent) GetCode() string {
	if d == nil || d.Code == nil {
		return ""
	}
	return *d.Code
}

func (d *DeployActionVersionResponseContent) GetDependencies() []*ActionVersionDependency {
	if d == nil || d.Dependencies == nil {
		return nil
	}
	return d.Dependencies
}

func (d *DeployActionVersionResponseContent) GetDeployed() bool {
	if d == nil || d.Deployed == nil {
		return false
	}
	return *d.Deployed
}

func (d *DeployActionVersionResponseContent) GetRuntime() string {
	if d == nil || d.Runtime == nil {
		return ""
	}
	return *d.Runtime
}

func (d *DeployActionVersionResponseContent) GetSecrets() []*ActionSecretResponse {
	if d == nil || d.Secrets == nil {
		return nil
	}
	return d.Secrets
}

func (d *DeployActionVersionResponseContent) GetStatus() ActionVersionBuildStatusEnum {
	if d == nil || d.Status == nil {
		return ""
	}
	return *d.Status
}

func (d *DeployActionVersionResponseContent) GetNumber() float64 {
	if d == nil || d.Number == nil {
		return 0
	}
	return *d.Number
}

func (d *DeployActionVersionResponseContent) GetErrors() []*ActionError {
	if d == nil || d.Errors == nil {
		return nil
	}
	return d.Errors
}

func (d *DeployActionVersionResponseContent) GetAction() ActionBase {
	if d == nil || d.Action == nil {
		return ActionBase{}
	}
	return *d.Action
}

func (d *DeployActionVersionResponseContent) GetBuiltAt() time.Time {
	if d == nil || d.BuiltAt == nil {
		return time.Time{}
	}
	return *d.BuiltAt
}

func (d *DeployActionVersionResponseContent) GetCreatedAt() time.Time {
	if d == nil || d.CreatedAt == nil {
		return time.Time{}
	}
	return *d.CreatedAt
}

func (d *DeployActionVersionResponseContent) GetUpdatedAt() time.Time {
	if d == nil || d.UpdatedAt == nil {
		return time.Time{}
	}
	return *d.UpdatedAt
}

func (d *DeployActionVersionResponseContent) GetSupportedTriggers() []*ActionTrigger {
	if d == nil || d.SupportedTriggers == nil {
		return nil
	}
	return d.SupportedTriggers
}

func (d *DeployActionVersionResponseContent) GetExtraProperties() map[string]interface{} {
	return d.extraProperties
}

func (d *DeployActionVersionResponseContent) require(field *big.Int) {
	if d.explicitFields == nil {
		d.explicitFields = big.NewInt(0)
	}
	d.explicitFields.Or(d.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 (d *DeployActionVersionResponseContent) SetID(id *string) {
	d.ID = id
	d.require(deployActionVersionResponseContentFieldID)
}

// SetActionID sets the ActionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeployActionVersionResponseContent) SetActionID(actionID *string) {
	d.ActionID = actionID
	d.require(deployActionVersionResponseContentFieldActionID)
}

// SetCode sets the Code field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeployActionVersionResponseContent) SetCode(code *string) {
	d.Code = code
	d.require(deployActionVersionResponseContentFieldCode)
}

// SetDependencies sets the Dependencies field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeployActionVersionResponseContent) SetDependencies(dependencies []*ActionVersionDependency) {
	d.Dependencies = dependencies
	d.require(deployActionVersionResponseContentFieldDependencies)
}

// SetDeployed sets the Deployed field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeployActionVersionResponseContent) SetDeployed(deployed *bool) {
	d.Deployed = deployed
	d.require(deployActionVersionResponseContentFieldDeployed)
}

// SetRuntime sets the Runtime field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeployActionVersionResponseContent) SetRuntime(runtime *string) {
	d.Runtime = runtime
	d.require(deployActionVersionResponseContentFieldRuntime)
}

// SetSecrets sets the Secrets field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeployActionVersionResponseContent) SetSecrets(secrets []*ActionSecretResponse) {
	d.Secrets = secrets
	d.require(deployActionVersionResponseContentFieldSecrets)
}

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeployActionVersionResponseContent) SetStatus(status *ActionVersionBuildStatusEnum) {
	d.Status = status
	d.require(deployActionVersionResponseContentFieldStatus)
}

// SetNumber sets the Number field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeployActionVersionResponseContent) SetNumber(number *float64) {
	d.Number = number
	d.require(deployActionVersionResponseContentFieldNumber)
}

// SetErrors sets the Errors field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeployActionVersionResponseContent) SetErrors(errors []*ActionError) {
	d.Errors = errors
	d.require(deployActionVersionResponseContentFieldErrors)
}

// SetAction sets the Action field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeployActionVersionResponseContent) SetAction(action *ActionBase) {
	d.Action = action
	d.require(deployActionVersionResponseContentFieldAction)
}

// SetBuiltAt sets the BuiltAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeployActionVersionResponseContent) SetBuiltAt(builtAt *time.Time) {
	d.BuiltAt = builtAt
	d.require(deployActionVersionResponseContentFieldBuiltAt)
}

// 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 (d *DeployActionVersionResponseContent) SetCreatedAt(createdAt *time.Time) {
	d.CreatedAt = createdAt
	d.require(deployActionVersionResponseContentFieldCreatedAt)
}

// 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 (d *DeployActionVersionResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	d.UpdatedAt = updatedAt
	d.require(deployActionVersionResponseContentFieldUpdatedAt)
}

// SetSupportedTriggers sets the SupportedTriggers field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (d *DeployActionVersionResponseContent) SetSupportedTriggers(supportedTriggers []*ActionTrigger) {
	d.SupportedTriggers = supportedTriggers
	d.require(deployActionVersionResponseContentFieldSupportedTriggers)
}

func (d *DeployActionVersionResponseContent) UnmarshalJSON(data []byte) error {
	type embed DeployActionVersionResponseContent
	var unmarshaler = struct {
		embed
		BuiltAt   *internal.DateTime `json:"built_at,omitempty"`
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*d),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*d = DeployActionVersionResponseContent(unmarshaler.embed)
	d.BuiltAt = unmarshaler.BuiltAt.TimePtr()
	d.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	d.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *d)
	if err != nil {
		return err
	}
	d.extraProperties = extraProperties
	d.rawJSON = json.RawMessage(data)
	return nil
}

func (d *DeployActionVersionResponseContent) MarshalJSON() ([]byte, error) {
	type embed DeployActionVersionResponseContent
	var marshaler = struct {
		embed
		BuiltAt   *internal.DateTime `json:"built_at,omitempty"`
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*d),
		BuiltAt:   internal.NewOptionalDateTime(d.BuiltAt),
		CreatedAt: internal.NewOptionalDateTime(d.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(d.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, d.explicitFields)
	return json.Marshal(explicitMarshaler)
}

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

// Set to <code>eu</code> if your domain is provisioned to use Mailgun's EU region. Otherwise, set to <code>null</code>.
type EmailMailgunRegionEnum = string

// Credentials required to use the provider.
var (
	emailProviderCredentialsFieldAPIUser  = big.NewInt(1 << 0)
	emailProviderCredentialsFieldRegion   = big.NewInt(1 << 1)
	emailProviderCredentialsFieldSMTPHost = big.NewInt(1 << 2)
	emailProviderCredentialsFieldSMTPPort = big.NewInt(1 << 3)
	emailProviderCredentialsFieldSMTPUser = big.NewInt(1 << 4)
)

type EmailProviderCredentials struct {
	// API User.
	APIUser *string `json:"api_user,omitempty" url:"api_user,omitempty"`
	// AWS or SparkPost region.
	Region *string `json:"region,omitempty" url:"region,omitempty"`
	// SMTP host.
	SMTPHost *string `json:"smtp_host,omitempty" url:"smtp_host,omitempty"`
	// SMTP port.
	SMTPPort *int `json:"smtp_port,omitempty" url:"smtp_port,omitempty"`
	// SMTP username.
	SMTPUser *string `json:"smtp_user,omitempty" url:"smtp_user,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 (e *EmailProviderCredentials) GetAPIUser() string {
	if e == nil || e.APIUser == nil {
		return ""
	}
	return *e.APIUser
}

func (e *EmailProviderCredentials) GetRegion() string {
	if e == nil || e.Region == nil {
		return ""
	}
	return *e.Region
}

func (e *EmailProviderCredentials) GetSMTPHost() string {
	if e == nil || e.SMTPHost == nil {
		return ""
	}
	return *e.SMTPHost
}

func (e *EmailProviderCredentials) GetSMTPPort() int {
	if e == nil || e.SMTPPort == nil {
		return 0
	}
	return *e.SMTPPort
}

func (e *EmailProviderCredentials) GetSMTPUser() string {
	if e == nil || e.SMTPUser == nil {
		return ""
	}
	return *e.SMTPUser
}

func (e *EmailProviderCredentials) GetExtraProperties() map[string]interface{} {
	return e.extraProperties
}

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

// SetAPIUser sets the APIUser field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentials) SetAPIUser(apiUser *string) {
	e.APIUser = apiUser
	e.require(emailProviderCredentialsFieldAPIUser)
}

// SetRegion sets the Region field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentials) SetRegion(region *string) {
	e.Region = region
	e.require(emailProviderCredentialsFieldRegion)
}

// SetSMTPHost sets the SMTPHost field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentials) SetSMTPHost(smtpHost *string) {
	e.SMTPHost = smtpHost
	e.require(emailProviderCredentialsFieldSMTPHost)
}

// SetSMTPPort sets the SMTPPort field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentials) SetSMTPPort(smtpPort *int) {
	e.SMTPPort = smtpPort
	e.require(emailProviderCredentialsFieldSMTPPort)
}

// SetSMTPUser sets the SMTPUser field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentials) SetSMTPUser(smtpUser *string) {
	e.SMTPUser = smtpUser
	e.require(emailProviderCredentialsFieldSMTPUser)
}

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

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

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

// Credentials required to use the provider.
type EmailProviderCredentialsSchema struct {
	EmailProviderCredentialsSchemaZero             *EmailProviderCredentialsSchemaZero
	EmailProviderCredentialsSchemaAccessKeyID      *EmailProviderCredentialsSchemaAccessKeyID
	EmailProviderCredentialsSchemaSMTPHost         *EmailProviderCredentialsSchemaSMTPHost
	EmailProviderCredentialsSchemaThree            *EmailProviderCredentialsSchemaThree
	EmailProviderCredentialsSchemaAPIKey           *EmailProviderCredentialsSchemaAPIKey
	EmailProviderCredentialsSchemaConnectionString *EmailProviderCredentialsSchemaConnectionString
	EmailProviderCredentialsSchemaClientID         *EmailProviderCredentialsSchemaClientID
	ExtensibilityEmailProviderCredentials          *ExtensibilityEmailProviderCredentials

	typ string
}

func (e *EmailProviderCredentialsSchema) GetEmailProviderCredentialsSchemaZero() *EmailProviderCredentialsSchemaZero {
	if e == nil {
		return nil
	}
	return e.EmailProviderCredentialsSchemaZero
}

func (e *EmailProviderCredentialsSchema) GetEmailProviderCredentialsSchemaAccessKeyID() *EmailProviderCredentialsSchemaAccessKeyID {
	if e == nil {
		return nil
	}
	return e.EmailProviderCredentialsSchemaAccessKeyID
}

func (e *EmailProviderCredentialsSchema) GetEmailProviderCredentialsSchemaSMTPHost() *EmailProviderCredentialsSchemaSMTPHost {
	if e == nil {
		return nil
	}
	return e.EmailProviderCredentialsSchemaSMTPHost
}

func (e *EmailProviderCredentialsSchema) GetEmailProviderCredentialsSchemaThree() *EmailProviderCredentialsSchemaThree {
	if e == nil {
		return nil
	}
	return e.EmailProviderCredentialsSchemaThree
}

func (e *EmailProviderCredentialsSchema) GetEmailProviderCredentialsSchemaAPIKey() *EmailProviderCredentialsSchemaAPIKey {
	if e == nil {
		return nil
	}
	return e.EmailProviderCredentialsSchemaAPIKey
}

func (e *EmailProviderCredentialsSchema) GetEmailProviderCredentialsSchemaConnectionString() *EmailProviderCredentialsSchemaConnectionString {
	if e == nil {
		return nil
	}
	return e.EmailProviderCredentialsSchemaConnectionString
}

func (e *EmailProviderCredentialsSchema) GetEmailProviderCredentialsSchemaClientID() *EmailProviderCredentialsSchemaClientID {
	if e == nil {
		return nil
	}
	return e.EmailProviderCredentialsSchemaClientID
}

func (e *EmailProviderCredentialsSchema) GetExtensibilityEmailProviderCredentials() *ExtensibilityEmailProviderCredentials {
	if e == nil {
		return nil
	}
	return e.ExtensibilityEmailProviderCredentials
}

func (e *EmailProviderCredentialsSchema) UnmarshalJSON(data []byte) error {
	valueEmailProviderCredentialsSchemaZero := new(EmailProviderCredentialsSchemaZero)
	if err := json.Unmarshal(data, &valueEmailProviderCredentialsSchemaZero); err == nil {
		e.typ = "EmailProviderCredentialsSchemaZero"
		e.EmailProviderCredentialsSchemaZero = valueEmailProviderCredentialsSchemaZero
		return nil
	}
	valueEmailProviderCredentialsSchemaAccessKeyID := new(EmailProviderCredentialsSchemaAccessKeyID)
	if err := json.Unmarshal(data, &valueEmailProviderCredentialsSchemaAccessKeyID); err == nil {
		e.typ = "EmailProviderCredentialsSchemaAccessKeyID"
		e.EmailProviderCredentialsSchemaAccessKeyID = valueEmailProviderCredentialsSchemaAccessKeyID
		return nil
	}
	valueEmailProviderCredentialsSchemaSMTPHost := new(EmailProviderCredentialsSchemaSMTPHost)
	if err := json.Unmarshal(data, &valueEmailProviderCredentialsSchemaSMTPHost); err == nil {
		e.typ = "EmailProviderCredentialsSchemaSMTPHost"
		e.EmailProviderCredentialsSchemaSMTPHost = valueEmailProviderCredentialsSchemaSMTPHost
		return nil
	}
	valueEmailProviderCredentialsSchemaThree := new(EmailProviderCredentialsSchemaThree)
	if err := json.Unmarshal(data, &valueEmailProviderCredentialsSchemaThree); err == nil {
		e.typ = "EmailProviderCredentialsSchemaThree"
		e.EmailProviderCredentialsSchemaThree = valueEmailProviderCredentialsSchemaThree
		return nil
	}
	valueEmailProviderCredentialsSchemaAPIKey := new(EmailProviderCredentialsSchemaAPIKey)
	if err := json.Unmarshal(data, &valueEmailProviderCredentialsSchemaAPIKey); err == nil {
		e.typ = "EmailProviderCredentialsSchemaAPIKey"
		e.EmailProviderCredentialsSchemaAPIKey = valueEmailProviderCredentialsSchemaAPIKey
		return nil
	}
	valueEmailProviderCredentialsSchemaConnectionString := new(EmailProviderCredentialsSchemaConnectionString)
	if err := json.Unmarshal(data, &valueEmailProviderCredentialsSchemaConnectionString); err == nil {
		e.typ = "EmailProviderCredentialsSchemaConnectionString"
		e.EmailProviderCredentialsSchemaConnectionString = valueEmailProviderCredentialsSchemaConnectionString
		return nil
	}
	valueEmailProviderCredentialsSchemaClientID := new(EmailProviderCredentialsSchemaClientID)
	if err := json.Unmarshal(data, &valueEmailProviderCredentialsSchemaClientID); err == nil {
		e.typ = "EmailProviderCredentialsSchemaClientID"
		e.EmailProviderCredentialsSchemaClientID = valueEmailProviderCredentialsSchemaClientID
		return nil
	}
	valueExtensibilityEmailProviderCredentials := new(ExtensibilityEmailProviderCredentials)
	if err := json.Unmarshal(data, &valueExtensibilityEmailProviderCredentials); err == nil {
		e.typ = "ExtensibilityEmailProviderCredentials"
		e.ExtensibilityEmailProviderCredentials = valueExtensibilityEmailProviderCredentials
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, e)
}

func (e EmailProviderCredentialsSchema) MarshalJSON() ([]byte, error) {
	if e.typ == "EmailProviderCredentialsSchemaZero" || e.EmailProviderCredentialsSchemaZero != nil {
		return json.Marshal(e.EmailProviderCredentialsSchemaZero)
	}
	if e.typ == "EmailProviderCredentialsSchemaAccessKeyID" || e.EmailProviderCredentialsSchemaAccessKeyID != nil {
		return json.Marshal(e.EmailProviderCredentialsSchemaAccessKeyID)
	}
	if e.typ == "EmailProviderCredentialsSchemaSMTPHost" || e.EmailProviderCredentialsSchemaSMTPHost != nil {
		return json.Marshal(e.EmailProviderCredentialsSchemaSMTPHost)
	}
	if e.typ == "EmailProviderCredentialsSchemaThree" || e.EmailProviderCredentialsSchemaThree != nil {
		return json.Marshal(e.EmailProviderCredentialsSchemaThree)
	}
	if e.typ == "EmailProviderCredentialsSchemaAPIKey" || e.EmailProviderCredentialsSchemaAPIKey != nil {
		return json.Marshal(e.EmailProviderCredentialsSchemaAPIKey)
	}
	if e.typ == "EmailProviderCredentialsSchemaConnectionString" || e.EmailProviderCredentialsSchemaConnectionString != nil {
		return json.Marshal(e.EmailProviderCredentialsSchemaConnectionString)
	}
	if e.typ == "EmailProviderCredentialsSchemaClientID" || e.EmailProviderCredentialsSchemaClientID != nil {
		return json.Marshal(e.EmailProviderCredentialsSchemaClientID)
	}
	if e.typ == "ExtensibilityEmailProviderCredentials" || e.ExtensibilityEmailProviderCredentials != nil {
		return json.Marshal(e.ExtensibilityEmailProviderCredentials)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", e)
}

type EmailProviderCredentialsSchemaVisitor interface {
	VisitEmailProviderCredentialsSchemaZero(*EmailProviderCredentialsSchemaZero) error
	VisitEmailProviderCredentialsSchemaAccessKeyID(*EmailProviderCredentialsSchemaAccessKeyID) error
	VisitEmailProviderCredentialsSchemaSMTPHost(*EmailProviderCredentialsSchemaSMTPHost) error
	VisitEmailProviderCredentialsSchemaThree(*EmailProviderCredentialsSchemaThree) error
	VisitEmailProviderCredentialsSchemaAPIKey(*EmailProviderCredentialsSchemaAPIKey) error
	VisitEmailProviderCredentialsSchemaConnectionString(*EmailProviderCredentialsSchemaConnectionString) error
	VisitEmailProviderCredentialsSchemaClientID(*EmailProviderCredentialsSchemaClientID) error
	VisitExtensibilityEmailProviderCredentials(*ExtensibilityEmailProviderCredentials) error
}

func (e *EmailProviderCredentialsSchema) Accept(visitor EmailProviderCredentialsSchemaVisitor) error {
	if e.typ == "EmailProviderCredentialsSchemaZero" || e.EmailProviderCredentialsSchemaZero != nil {
		return visitor.VisitEmailProviderCredentialsSchemaZero(e.EmailProviderCredentialsSchemaZero)
	}
	if e.typ == "EmailProviderCredentialsSchemaAccessKeyID" || e.EmailProviderCredentialsSchemaAccessKeyID != nil {
		return visitor.VisitEmailProviderCredentialsSchemaAccessKeyID(e.EmailProviderCredentialsSchemaAccessKeyID)
	}
	if e.typ == "EmailProviderCredentialsSchemaSMTPHost" || e.EmailProviderCredentialsSchemaSMTPHost != nil {
		return visitor.VisitEmailProviderCredentialsSchemaSMTPHost(e.EmailProviderCredentialsSchemaSMTPHost)
	}
	if e.typ == "EmailProviderCredentialsSchemaThree" || e.EmailProviderCredentialsSchemaThree != nil {
		return visitor.VisitEmailProviderCredentialsSchemaThree(e.EmailProviderCredentialsSchemaThree)
	}
	if e.typ == "EmailProviderCredentialsSchemaAPIKey" || e.EmailProviderCredentialsSchemaAPIKey != nil {
		return visitor.VisitEmailProviderCredentialsSchemaAPIKey(e.EmailProviderCredentialsSchemaAPIKey)
	}
	if e.typ == "EmailProviderCredentialsSchemaConnectionString" || e.EmailProviderCredentialsSchemaConnectionString != nil {
		return visitor.VisitEmailProviderCredentialsSchemaConnectionString(e.EmailProviderCredentialsSchemaConnectionString)
	}
	if e.typ == "EmailProviderCredentialsSchemaClientID" || e.EmailProviderCredentialsSchemaClientID != nil {
		return visitor.VisitEmailProviderCredentialsSchemaClientID(e.EmailProviderCredentialsSchemaClientID)
	}
	if e.typ == "ExtensibilityEmailProviderCredentials" || e.ExtensibilityEmailProviderCredentials != nil {
		return visitor.VisitExtensibilityEmailProviderCredentials(e.ExtensibilityEmailProviderCredentials)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", e)
}

var (
	emailProviderCredentialsSchemaAccessKeyIDFieldAccessKeyID     = big.NewInt(1 << 0)
	emailProviderCredentialsSchemaAccessKeyIDFieldSecretAccessKey = big.NewInt(1 << 1)
	emailProviderCredentialsSchemaAccessKeyIDFieldRegion          = big.NewInt(1 << 2)
)

type EmailProviderCredentialsSchemaAccessKeyID struct {
	// AWS Access Key ID.
	AccessKeyID *string `json:"accessKeyId,omitempty" url:"accessKeyId,omitempty"`
	// AWS Secret Access Key.
	SecretAccessKey *string `json:"secretAccessKey,omitempty" url:"secretAccessKey,omitempty"`
	// AWS region.
	Region *string `json:"region,omitempty" url:"region,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 (e *EmailProviderCredentialsSchemaAccessKeyID) GetAccessKeyID() string {
	if e == nil || e.AccessKeyID == nil {
		return ""
	}
	return *e.AccessKeyID
}

func (e *EmailProviderCredentialsSchemaAccessKeyID) GetSecretAccessKey() string {
	if e == nil || e.SecretAccessKey == nil {
		return ""
	}
	return *e.SecretAccessKey
}

func (e *EmailProviderCredentialsSchemaAccessKeyID) GetRegion() string {
	if e == nil || e.Region == nil {
		return ""
	}
	return *e.Region
}

func (e *EmailProviderCredentialsSchemaAccessKeyID) GetExtraProperties() map[string]interface{} {
	return e.extraProperties
}

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

// SetAccessKeyID sets the AccessKeyID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaAccessKeyID) SetAccessKeyID(accessKeyID *string) {
	e.AccessKeyID = accessKeyID
	e.require(emailProviderCredentialsSchemaAccessKeyIDFieldAccessKeyID)
}

// SetSecretAccessKey sets the SecretAccessKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaAccessKeyID) SetSecretAccessKey(secretAccessKey *string) {
	e.SecretAccessKey = secretAccessKey
	e.require(emailProviderCredentialsSchemaAccessKeyIDFieldSecretAccessKey)
}

// SetRegion sets the Region field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaAccessKeyID) SetRegion(region *string) {
	e.Region = region
	e.require(emailProviderCredentialsSchemaAccessKeyIDFieldRegion)
}

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

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

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

var (
	emailProviderCredentialsSchemaAPIKeyFieldAPIKey = big.NewInt(1 << 0)
	emailProviderCredentialsSchemaAPIKeyFieldDomain = big.NewInt(1 << 1)
	emailProviderCredentialsSchemaAPIKeyFieldRegion = big.NewInt(1 << 2)
)

type EmailProviderCredentialsSchemaAPIKey struct {
	// API Key
	APIKey *string `json:"api_key,omitempty" url:"api_key,omitempty"`
	// Domain
	Domain *string                 `json:"domain,omitempty" url:"domain,omitempty"`
	Region *EmailMailgunRegionEnum `json:"region,omitempty" url:"region,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 (e *EmailProviderCredentialsSchemaAPIKey) GetAPIKey() string {
	if e == nil || e.APIKey == nil {
		return ""
	}
	return *e.APIKey
}

func (e *EmailProviderCredentialsSchemaAPIKey) GetDomain() string {
	if e == nil || e.Domain == nil {
		return ""
	}
	return *e.Domain
}

func (e *EmailProviderCredentialsSchemaAPIKey) GetExtraProperties() map[string]interface{} {
	return e.extraProperties
}

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

// SetAPIKey sets the APIKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaAPIKey) SetAPIKey(apiKey *string) {
	e.APIKey = apiKey
	e.require(emailProviderCredentialsSchemaAPIKeyFieldAPIKey)
}

// SetDomain sets the Domain field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaAPIKey) SetDomain(domain *string) {
	e.Domain = domain
	e.require(emailProviderCredentialsSchemaAPIKeyFieldDomain)
}

// SetRegion sets the Region field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaAPIKey) SetRegion(region *EmailMailgunRegionEnum) {
	e.Region = region
	e.require(emailProviderCredentialsSchemaAPIKeyFieldRegion)
}

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

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

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

var (
	emailProviderCredentialsSchemaClientIDFieldTenantID     = big.NewInt(1 << 0)
	emailProviderCredentialsSchemaClientIDFieldClientID     = big.NewInt(1 << 1)
	emailProviderCredentialsSchemaClientIDFieldClientSecret = big.NewInt(1 << 2)
)

type EmailProviderCredentialsSchemaClientID struct {
	// Microsoft 365 Tenant ID.
	TenantID *string `json:"tenantId,omitempty" url:"tenantId,omitempty"`
	// Microsoft 365 Client ID.
	ClientID *string `json:"clientId,omitempty" url:"clientId,omitempty"`
	// Microsoft 365 Client Secret.
	ClientSecret *string `json:"clientSecret,omitempty" url:"clientSecret,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 (e *EmailProviderCredentialsSchemaClientID) GetTenantID() string {
	if e == nil || e.TenantID == nil {
		return ""
	}
	return *e.TenantID
}

func (e *EmailProviderCredentialsSchemaClientID) GetClientID() string {
	if e == nil || e.ClientID == nil {
		return ""
	}
	return *e.ClientID
}

func (e *EmailProviderCredentialsSchemaClientID) GetClientSecret() string {
	if e == nil || e.ClientSecret == nil {
		return ""
	}
	return *e.ClientSecret
}

func (e *EmailProviderCredentialsSchemaClientID) GetExtraProperties() map[string]interface{} {
	return e.extraProperties
}

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

// SetTenantID sets the TenantID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaClientID) SetTenantID(tenantID *string) {
	e.TenantID = tenantID
	e.require(emailProviderCredentialsSchemaClientIDFieldTenantID)
}

// SetClientID sets the ClientID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaClientID) SetClientID(clientID *string) {
	e.ClientID = clientID
	e.require(emailProviderCredentialsSchemaClientIDFieldClientID)
}

// SetClientSecret sets the ClientSecret field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaClientID) SetClientSecret(clientSecret *string) {
	e.ClientSecret = clientSecret
	e.require(emailProviderCredentialsSchemaClientIDFieldClientSecret)
}

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

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

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

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

type EmailProviderCredentialsSchemaConnectionString struct {
	// Azure Communication Services Connection String.
	ConnectionString *string `json:"connectionString,omitempty" url:"connectionString,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 (e *EmailProviderCredentialsSchemaConnectionString) GetConnectionString() string {
	if e == nil || e.ConnectionString == nil {
		return ""
	}
	return *e.ConnectionString
}

func (e *EmailProviderCredentialsSchemaConnectionString) GetExtraProperties() map[string]interface{} {
	return e.extraProperties
}

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

// SetConnectionString sets the ConnectionString field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaConnectionString) SetConnectionString(connectionString *string) {
	e.ConnectionString = connectionString
	e.require(emailProviderCredentialsSchemaConnectionStringFieldConnectionString)
}

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

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

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

var (
	emailProviderCredentialsSchemaSMTPHostFieldSMTPHost = big.NewInt(1 << 0)
	emailProviderCredentialsSchemaSMTPHostFieldSMTPPort = big.NewInt(1 << 1)
	emailProviderCredentialsSchemaSMTPHostFieldSMTPUser = big.NewInt(1 << 2)
	emailProviderCredentialsSchemaSMTPHostFieldSMTPPass = big.NewInt(1 << 3)
)

type EmailProviderCredentialsSchemaSMTPHost struct {
	SMTPHost *EmailSMTPHost `json:"smtp_host,omitempty" url:"smtp_host,omitempty"`
	// SMTP port.
	SMTPPort *int `json:"smtp_port,omitempty" url:"smtp_port,omitempty"`
	// SMTP username.
	SMTPUser *string `json:"smtp_user,omitempty" url:"smtp_user,omitempty"`
	// SMTP password.
	SMTPPass *string `json:"smtp_pass,omitempty" url:"smtp_pass,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 (e *EmailProviderCredentialsSchemaSMTPHost) GetSMTPHost() EmailSMTPHost {
	if e == nil || e.SMTPHost == nil {
		return ""
	}
	return *e.SMTPHost
}

func (e *EmailProviderCredentialsSchemaSMTPHost) GetSMTPPort() int {
	if e == nil || e.SMTPPort == nil {
		return 0
	}
	return *e.SMTPPort
}

func (e *EmailProviderCredentialsSchemaSMTPHost) GetSMTPUser() string {
	if e == nil || e.SMTPUser == nil {
		return ""
	}
	return *e.SMTPUser
}

func (e *EmailProviderCredentialsSchemaSMTPHost) GetSMTPPass() string {
	if e == nil || e.SMTPPass == nil {
		return ""
	}
	return *e.SMTPPass
}

func (e *EmailProviderCredentialsSchemaSMTPHost) GetExtraProperties() map[string]interface{} {
	return e.extraProperties
}

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

// SetSMTPHost sets the SMTPHost field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaSMTPHost) SetSMTPHost(smtpHost *EmailSMTPHost) {
	e.SMTPHost = smtpHost
	e.require(emailProviderCredentialsSchemaSMTPHostFieldSMTPHost)
}

// SetSMTPPort sets the SMTPPort field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaSMTPHost) SetSMTPPort(smtpPort *int) {
	e.SMTPPort = smtpPort
	e.require(emailProviderCredentialsSchemaSMTPHostFieldSMTPPort)
}

// SetSMTPUser sets the SMTPUser field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaSMTPHost) SetSMTPUser(smtpUser *string) {
	e.SMTPUser = smtpUser
	e.require(emailProviderCredentialsSchemaSMTPHostFieldSMTPUser)
}

// SetSMTPPass sets the SMTPPass field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaSMTPHost) SetSMTPPass(smtpPass *string) {
	e.SMTPPass = smtpPass
	e.require(emailProviderCredentialsSchemaSMTPHostFieldSMTPPass)
}

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

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

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

var (
	emailProviderCredentialsSchemaThreeFieldAPIKey = big.NewInt(1 << 0)
	emailProviderCredentialsSchemaThreeFieldRegion = big.NewInt(1 << 1)
)

type EmailProviderCredentialsSchemaThree struct {
	// API Key
	APIKey *string                   `json:"api_key,omitempty" url:"api_key,omitempty"`
	Region *EmailSparkPostRegionEnum `json:"region,omitempty" url:"region,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 (e *EmailProviderCredentialsSchemaThree) GetAPIKey() string {
	if e == nil || e.APIKey == nil {
		return ""
	}
	return *e.APIKey
}

func (e *EmailProviderCredentialsSchemaThree) GetExtraProperties() map[string]interface{} {
	return e.extraProperties
}

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

// SetAPIKey sets the APIKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaThree) SetAPIKey(apiKey *string) {
	e.APIKey = apiKey
	e.require(emailProviderCredentialsSchemaThreeFieldAPIKey)
}

// SetRegion sets the Region field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaThree) SetRegion(region *EmailSparkPostRegionEnum) {
	e.Region = region
	e.require(emailProviderCredentialsSchemaThreeFieldRegion)
}

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

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

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

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

type EmailProviderCredentialsSchemaZero struct {
	// API Key
	APIKey string `json:"api_key" url:"api_key"`

	// 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 (e *EmailProviderCredentialsSchemaZero) GetAPIKey() string {
	if e == nil {
		return ""
	}
	return e.APIKey
}

func (e *EmailProviderCredentialsSchemaZero) GetExtraProperties() map[string]interface{} {
	return e.extraProperties
}

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

// SetAPIKey sets the APIKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EmailProviderCredentialsSchemaZero) SetAPIKey(apiKey string) {
	e.APIKey = apiKey
	e.require(emailProviderCredentialsSchemaZeroFieldAPIKey)
}

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

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

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

// Name of the email provider. Can be `mailgun`, `mandrill`, `sendgrid`, `ses`, `sparkpost`, `smtp`, `azure_cs`, `ms365`, or `custom`.
type EmailProviderNameEnum string

const (
	EmailProviderNameEnumMailgun   EmailProviderNameEnum = "mailgun"
	EmailProviderNameEnumMandrill  EmailProviderNameEnum = "mandrill"
	EmailProviderNameEnumSendgrid  EmailProviderNameEnum = "sendgrid"
	EmailProviderNameEnumSes       EmailProviderNameEnum = "ses"
	EmailProviderNameEnumSparkpost EmailProviderNameEnum = "sparkpost"
	EmailProviderNameEnumSMTP      EmailProviderNameEnum = "smtp"
	EmailProviderNameEnumAzureCs   EmailProviderNameEnum = "azure_cs"
	EmailProviderNameEnumMs365     EmailProviderNameEnum = "ms365"
	EmailProviderNameEnumCustom    EmailProviderNameEnum = "custom"
)

func NewEmailProviderNameEnumFromString(s string) (EmailProviderNameEnum, error) {
	switch s {
	case "mailgun":
		return EmailProviderNameEnumMailgun, nil
	case "mandrill":
		return EmailProviderNameEnumMandrill, nil
	case "sendgrid":
		return EmailProviderNameEnumSendgrid, nil
	case "ses":
		return EmailProviderNameEnumSes, nil
	case "sparkpost":
		return EmailProviderNameEnumSparkpost, nil
	case "smtp":
		return EmailProviderNameEnumSMTP, nil
	case "azure_cs":
		return EmailProviderNameEnumAzureCs, nil
	case "ms365":
		return EmailProviderNameEnumMs365, nil
	case "custom":
		return EmailProviderNameEnumCustom, nil
	}
	var t EmailProviderNameEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (e EmailProviderNameEnum) Ptr() *EmailProviderNameEnum {
	return &e
}

// Specific provider setting
type EmailProviderSettings = map[string]interface{}

// SMTP host.
type EmailSMTPHost = string

// Set to <code>eu</code> to use SparkPost service hosted in Western Europe. To use SparkPost hosted in North America, set it to <code>null</code>.
type EmailSparkPostRegionEnum = string

// Specific provider setting
type EmailSpecificProviderSettingsWithAdditionalProperties = map[string]interface{}

// Encryption key
var (
	encryptionKeyFieldKid       = big.NewInt(1 << 0)
	encryptionKeyFieldType      = big.NewInt(1 << 1)
	encryptionKeyFieldState     = big.NewInt(1 << 2)
	encryptionKeyFieldCreatedAt = big.NewInt(1 << 3)
	encryptionKeyFieldUpdatedAt = big.NewInt(1 << 4)
	encryptionKeyFieldParentKid = big.NewInt(1 << 5)
	encryptionKeyFieldPublicKey = big.NewInt(1 << 6)
)

type EncryptionKey struct {
	// Key ID
	Kid   string             `json:"kid" url:"kid"`
	Type  EncryptionKeyType  `json:"type" url:"type"`
	State EncryptionKeyState `json:"state" url:"state"`
	// Key creation timestamp
	CreatedAt time.Time `json:"created_at" url:"created_at"`
	// Key update timestamp
	UpdatedAt time.Time `json:"updated_at" url:"updated_at"`
	// ID of parent wrapping key
	ParentKid string `json:"parent_kid" url:"parent_kid"`
	// Public key in PEM format
	PublicKey *string `json:"public_key,omitempty" url:"public_key,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 (e *EncryptionKey) GetKid() string {
	if e == nil {
		return ""
	}
	return e.Kid
}

func (e *EncryptionKey) GetType() EncryptionKeyType {
	if e == nil {
		return ""
	}
	return e.Type
}

func (e *EncryptionKey) GetState() EncryptionKeyState {
	if e == nil {
		return ""
	}
	return e.State
}

func (e *EncryptionKey) GetCreatedAt() time.Time {
	if e == nil {
		return time.Time{}
	}
	return e.CreatedAt
}

func (e *EncryptionKey) GetUpdatedAt() time.Time {
	if e == nil {
		return time.Time{}
	}
	return e.UpdatedAt
}

func (e *EncryptionKey) GetParentKid() string {
	if e == nil {
		return ""
	}
	return e.ParentKid
}

func (e *EncryptionKey) GetPublicKey() string {
	if e == nil || e.PublicKey == nil {
		return ""
	}
	return *e.PublicKey
}

func (e *EncryptionKey) GetExtraProperties() map[string]interface{} {
	return e.extraProperties
}

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

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EncryptionKey) SetKid(kid string) {
	e.Kid = kid
	e.require(encryptionKeyFieldKid)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EncryptionKey) SetType(type_ EncryptionKeyType) {
	e.Type = type_
	e.require(encryptionKeyFieldType)
}

// SetState sets the State field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EncryptionKey) SetState(state EncryptionKeyState) {
	e.State = state
	e.require(encryptionKeyFieldState)
}

// 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 (e *EncryptionKey) SetCreatedAt(createdAt time.Time) {
	e.CreatedAt = createdAt
	e.require(encryptionKeyFieldCreatedAt)
}

// 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 (e *EncryptionKey) SetUpdatedAt(updatedAt time.Time) {
	e.UpdatedAt = updatedAt
	e.require(encryptionKeyFieldUpdatedAt)
}

// SetParentKid sets the ParentKid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EncryptionKey) SetParentKid(parentKid string) {
	e.ParentKid = parentKid
	e.require(encryptionKeyFieldParentKid)
}

// SetPublicKey sets the PublicKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EncryptionKey) SetPublicKey(publicKey *string) {
	e.PublicKey = publicKey
	e.require(encryptionKeyFieldPublicKey)
}

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

func (e *EncryptionKey) MarshalJSON() ([]byte, error) {
	type embed EncryptionKey
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at"`
		UpdatedAt *internal.DateTime `json:"updated_at"`
	}{
		embed:     embed(*e),
		CreatedAt: internal.NewDateTime(e.CreatedAt),
		UpdatedAt: internal.NewDateTime(e.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, e.explicitFields)
	return json.Marshal(explicitMarshaler)
}

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

// Encryption algorithm that shall be used to wrap your key material
type EncryptionKeyPublicWrappingAlgorithm = string

// Key state
type EncryptionKeyState string

const (
	EncryptionKeyStatePreActivation EncryptionKeyState = "pre-activation"
	EncryptionKeyStateActive        EncryptionKeyState = "active"
	EncryptionKeyStateDeactivated   EncryptionKeyState = "deactivated"
	EncryptionKeyStateDestroyed     EncryptionKeyState = "destroyed"
)

func NewEncryptionKeyStateFromString(s string) (EncryptionKeyState, error) {
	switch s {
	case "pre-activation":
		return EncryptionKeyStatePreActivation, nil
	case "active":
		return EncryptionKeyStateActive, nil
	case "deactivated":
		return EncryptionKeyStateDeactivated, nil
	case "destroyed":
		return EncryptionKeyStateDestroyed, nil
	}
	var t EncryptionKeyState
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (e EncryptionKeyState) Ptr() *EncryptionKeyState {
	return &e
}

// Key type
type EncryptionKeyType string

const (
	EncryptionKeyTypeCustomerProvidedRootKey EncryptionKeyType = "customer-provided-root-key"
	EncryptionKeyTypeEnvironmentRootKey      EncryptionKeyType = "environment-root-key"
	EncryptionKeyTypeTenantMasterKey         EncryptionKeyType = "tenant-master-key"
	EncryptionKeyTypeTenantEncryptionKey     EncryptionKeyType = "tenant-encryption-key"
)

func NewEncryptionKeyTypeFromString(s string) (EncryptionKeyType, error) {
	switch s {
	case "customer-provided-root-key":
		return EncryptionKeyTypeCustomerProvidedRootKey, nil
	case "environment-root-key":
		return EncryptionKeyTypeEnvironmentRootKey, nil
	case "tenant-master-key":
		return EncryptionKeyTypeTenantMasterKey, nil
	case "tenant-encryption-key":
		return EncryptionKeyTypeTenantEncryptionKey, nil
	}
	var t EncryptionKeyType
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (e EncryptionKeyType) Ptr() *EncryptionKeyType {
	return &e
}

// Event content. This will only be set if delivery failed.
var (
	eventStreamCloudEventFieldID          = big.NewInt(1 << 0)
	eventStreamCloudEventFieldSource      = big.NewInt(1 << 1)
	eventStreamCloudEventFieldSpecversion = big.NewInt(1 << 2)
	eventStreamCloudEventFieldType        = big.NewInt(1 << 3)
	eventStreamCloudEventFieldTime        = big.NewInt(1 << 4)
	eventStreamCloudEventFieldData        = big.NewInt(1 << 5)
)

type EventStreamCloudEvent struct {
	// Unique identifier for the event
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// Where the event originated
	Source *string `json:"source,omitempty" url:"source,omitempty"`
	// Version of CloudEvents spec
	Specversion *string `json:"specversion,omitempty" url:"specversion,omitempty"`
	// Type of the event (e.g., user.created)
	Type *string `json:"type,omitempty" url:"type,omitempty"`
	// Timestamp at which the event was generated
	Time *time.Time `json:"time,omitempty" url:"time,omitempty"`
	// Event contents encoded as a string.
	Data *string `json:"data,omitempty" url:"data,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 (e *EventStreamCloudEvent) GetID() string {
	if e == nil || e.ID == nil {
		return ""
	}
	return *e.ID
}

func (e *EventStreamCloudEvent) GetSource() string {
	if e == nil || e.Source == nil {
		return ""
	}
	return *e.Source
}

func (e *EventStreamCloudEvent) GetSpecversion() string {
	if e == nil || e.Specversion == nil {
		return ""
	}
	return *e.Specversion
}

func (e *EventStreamCloudEvent) GetType() string {
	if e == nil || e.Type == nil {
		return ""
	}
	return *e.Type
}

func (e *EventStreamCloudEvent) GetTime() time.Time {
	if e == nil || e.Time == nil {
		return time.Time{}
	}
	return *e.Time
}

func (e *EventStreamCloudEvent) GetData() string {
	if e == nil || e.Data == nil {
		return ""
	}
	return *e.Data
}

func (e *EventStreamCloudEvent) GetExtraProperties() map[string]interface{} {
	return e.extraProperties
}

func (e *EventStreamCloudEvent) require(field *big.Int) {
	if e.explicitFields == nil {
		e.explicitFields = big.NewInt(0)
	}
	e.explicitFields.Or(e.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 (e *EventStreamCloudEvent) SetID(id *string) {
	e.ID = id
	e.require(eventStreamCloudEventFieldID)
}

// 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 (e *EventStreamCloudEvent) SetSource(source *string) {
	e.Source = source
	e.require(eventStreamCloudEventFieldSource)
}

// SetSpecversion sets the Specversion field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EventStreamCloudEvent) SetSpecversion(specversion *string) {
	e.Specversion = specversion
	e.require(eventStreamCloudEventFieldSpecversion)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EventStreamCloudEvent) SetType(type_ *string) {
	e.Type = type_
	e.require(eventStreamCloudEventFieldType)
}

// SetTime sets the Time field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EventStreamCloudEvent) SetTime(time *time.Time) {
	e.Time = time
	e.require(eventStreamCloudEventFieldTime)
}

// 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 (e *EventStreamCloudEvent) SetData(data *string) {
	e.Data = data
	e.require(eventStreamCloudEventFieldData)
}

func (e *EventStreamCloudEvent) UnmarshalJSON(data []byte) error {
	type embed EventStreamCloudEvent
	var unmarshaler = struct {
		embed
		Time *internal.DateTime `json:"time,omitempty"`
	}{
		embed: embed(*e),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*e = EventStreamCloudEvent(unmarshaler.embed)
	e.Time = unmarshaler.Time.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *e)
	if err != nil {
		return err
	}
	e.extraProperties = extraProperties
	e.rawJSON = json.RawMessage(data)
	return nil
}

func (e *EventStreamCloudEvent) MarshalJSON() ([]byte, error) {
	type embed EventStreamCloudEvent
	var marshaler = struct {
		embed
		Time *internal.DateTime `json:"time,omitempty"`
	}{
		embed: embed(*e),
		Time:  internal.NewOptionalDateTime(e.Time),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, e.explicitFields)
	return json.Marshal(explicitMarshaler)
}

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

// Metadata about a specific attempt to deliver an event
var (
	eventStreamDeliveryFieldID            = big.NewInt(1 << 0)
	eventStreamDeliveryFieldEventStreamID = big.NewInt(1 << 1)
	eventStreamDeliveryFieldStatus        = big.NewInt(1 << 2)
	eventStreamDeliveryFieldEventType     = big.NewInt(1 << 3)
	eventStreamDeliveryFieldAttempts      = big.NewInt(1 << 4)
	eventStreamDeliveryFieldEvent         = big.NewInt(1 << 5)
)

type EventStreamDelivery struct {
	// Unique identifier for the delivery
	ID string `json:"id" url:"id"`
	// Unique identifier for the event stream.
	EventStreamID string                           `json:"event_stream_id" url:"event_stream_id"`
	Status        EventStreamDeliveryStatusEnum    `json:"status" url:"status"`
	EventType     EventStreamDeliveryEventTypeEnum `json:"event_type" url:"event_type"`
	// Results of delivery attempts
	Attempts []*EventStreamDeliveryAttempt `json:"attempts" url:"attempts"`
	Event    *EventStreamCloudEvent        `json:"event,omitempty" url:"event,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 (e *EventStreamDelivery) GetID() string {
	if e == nil {
		return ""
	}
	return e.ID
}

func (e *EventStreamDelivery) GetEventStreamID() string {
	if e == nil {
		return ""
	}
	return e.EventStreamID
}

func (e *EventStreamDelivery) GetEventType() EventStreamDeliveryEventTypeEnum {
	if e == nil {
		return ""
	}
	return e.EventType
}

func (e *EventStreamDelivery) GetAttempts() []*EventStreamDeliveryAttempt {
	if e == nil {
		return nil
	}
	return e.Attempts
}

func (e *EventStreamDelivery) GetEvent() EventStreamCloudEvent {
	if e == nil || e.Event == nil {
		return EventStreamCloudEvent{}
	}
	return *e.Event
}

func (e *EventStreamDelivery) GetExtraProperties() map[string]interface{} {
	return e.extraProperties
}

func (e *EventStreamDelivery) require(field *big.Int) {
	if e.explicitFields == nil {
		e.explicitFields = big.NewInt(0)
	}
	e.explicitFields.Or(e.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 (e *EventStreamDelivery) SetID(id string) {
	e.ID = id
	e.require(eventStreamDeliveryFieldID)
}

// SetEventStreamID sets the EventStreamID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EventStreamDelivery) SetEventStreamID(eventStreamID string) {
	e.EventStreamID = eventStreamID
	e.require(eventStreamDeliveryFieldEventStreamID)
}

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EventStreamDelivery) SetStatus(status EventStreamDeliveryStatusEnum) {
	e.Status = status
	e.require(eventStreamDeliveryFieldStatus)
}

// SetEventType sets the EventType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EventStreamDelivery) SetEventType(eventType EventStreamDeliveryEventTypeEnum) {
	e.EventType = eventType
	e.require(eventStreamDeliveryFieldEventType)
}

// SetAttempts sets the Attempts field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EventStreamDelivery) SetAttempts(attempts []*EventStreamDeliveryAttempt) {
	e.Attempts = attempts
	e.require(eventStreamDeliveryFieldAttempts)
}

// SetEvent sets the Event field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EventStreamDelivery) SetEvent(event *EventStreamCloudEvent) {
	e.Event = event
	e.require(eventStreamDeliveryFieldEvent)
}

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

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

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

var (
	eventStreamDeliveryAttemptFieldStatus       = big.NewInt(1 << 0)
	eventStreamDeliveryAttemptFieldTimestamp    = big.NewInt(1 << 1)
	eventStreamDeliveryAttemptFieldErrorMessage = big.NewInt(1 << 2)
)

type EventStreamDeliveryAttempt struct {
	Status EventStreamDeliveryStatusEnum `json:"status" url:"status"`
	// Timestamp of delivery attempt
	Timestamp time.Time `json:"timestamp" url:"timestamp"`
	// Delivery error message, if applicable
	ErrorMessage *string `json:"error_message,omitempty" url:"error_message,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 (e *EventStreamDeliveryAttempt) GetTimestamp() time.Time {
	if e == nil {
		return time.Time{}
	}
	return e.Timestamp
}

func (e *EventStreamDeliveryAttempt) GetErrorMessage() string {
	if e == nil || e.ErrorMessage == nil {
		return ""
	}
	return *e.ErrorMessage
}

func (e *EventStreamDeliveryAttempt) GetExtraProperties() map[string]interface{} {
	return e.extraProperties
}

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

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EventStreamDeliveryAttempt) SetStatus(status EventStreamDeliveryStatusEnum) {
	e.Status = status
	e.require(eventStreamDeliveryAttemptFieldStatus)
}

// 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 (e *EventStreamDeliveryAttempt) SetTimestamp(timestamp time.Time) {
	e.Timestamp = timestamp
	e.require(eventStreamDeliveryAttemptFieldTimestamp)
}

// SetErrorMessage sets the ErrorMessage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (e *EventStreamDeliveryAttempt) SetErrorMessage(errorMessage *string) {
	e.ErrorMessage = errorMessage
	e.require(eventStreamDeliveryAttemptFieldErrorMessage)
}

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

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

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

// Type of event
type EventStreamDeliveryEventTypeEnum string

const (
	EventStreamDeliveryEventTypeEnumUserCreated                    EventStreamDeliveryEventTypeEnum = "user.created"
	EventStreamDeliveryEventTypeEnumUserDeleted                    EventStreamDeliveryEventTypeEnum = "user.deleted"
	EventStreamDeliveryEventTypeEnumUserUpdated                    EventStreamDeliveryEventTypeEnum = "user.updated"
	EventStreamDeliveryEventTypeEnumOrganizationCreated            EventStreamDeliveryEventTypeEnum = "organization.created"
	EventStreamDeliveryEventTypeEnumOrganizationUpdated            EventStreamDeliveryEventTypeEnum = "organization.updated"
	EventStreamDeliveryEventTypeEnumOrganizationDeleted            EventStreamDeliveryEventTypeEnum = "organization.deleted"
	EventStreamDeliveryEventTypeEnumOrganizationMemberAdded        EventStreamDeliveryEventTypeEnum = "organization.member.added"
	EventStreamDeliveryEventTypeEnumOrganizationMemberDeleted      EventStreamDeliveryEventTypeEnum = "organization.member.deleted"
	EventStreamDeliveryEventTypeEnumOrganizationMemberRoleAssigned EventStreamDeliveryEventTypeEnum = "organization.member.role.assigned"
	EventStreamDeliveryEventTypeEnumOrganizationMemberRoleDeleted  EventStreamDeliveryEventTypeEnum = "organization.member.role.deleted"
	EventStreamDeliveryEventTypeEnumOrganizationConnectionAdded    EventStreamDeliveryEventTypeEnum = "organization.connection.added"
	EventStreamDeliveryEventTypeEnumOrganizationConnectionUpdated  EventStreamDeliveryEventTypeEnum = "organization.connection.updated"
	EventStreamDeliveryEventTypeEnumOrganizationConnectionRemoved  EventStreamDeliveryEventTypeEnum = "organization.connection.removed"
)

func NewEventStreamDeliveryEventTypeEnumFromString(s string) (EventStreamDeliveryEventTypeEnum, error) {
	switch s {
	case "user.created":
		return EventStreamDeliveryEventTypeEnumUserCreated, nil
	case "user.deleted":
		return EventStreamDeliveryEventTypeEnumUserDeleted, nil
	case "user.updated":
		return EventStreamDeliveryEventTypeEnumUserUpdated, nil
	case "organization.created":
		return EventStreamDeliveryEventTypeEnumOrganizationCreated, nil
	case "organization.updated":
		return EventStreamDeliveryEventTypeEnumOrganizationUpdated, nil
	case "organization.deleted":
		return EventStreamDeliveryEventTypeEnumOrganizationDeleted, nil
	case "organization.member.added":
		return EventStreamDeliveryEventTypeEnumOrganizationMemberAdded, nil
	case "organization.member.deleted":
		return EventStreamDeliveryEventTypeEnumOrganizationMemberDeleted, nil
	case "organization.member.role.assigned":
		return EventStreamDeliveryEventTypeEnumOrganizationMemberRoleAssigned, nil
	case "organization.member.role.deleted":
		return EventStreamDeliveryEventTypeEnumOrganizationMemberRoleDeleted, nil
	case "organization.connection.added":
		return EventStreamDeliveryEventTypeEnumOrganizationConnectionAdded, nil
	case "organization.connection.updated":
		return EventStreamDeliveryEventTypeEnumOrganizationConnectionUpdated, nil
	case "organization.connection.removed":
		return EventStreamDeliveryEventTypeEnumOrganizationConnectionRemoved, nil
	}
	var t EventStreamDeliveryEventTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (e EventStreamDeliveryEventTypeEnum) Ptr() *EventStreamDeliveryEventTypeEnum {
	return &e
}

// Delivery status
type EventStreamDeliveryStatusEnum = string

type EventStreamEventTypeEnum string

const (
	EventStreamEventTypeEnumUserCreated                    EventStreamEventTypeEnum = "user.created"
	EventStreamEventTypeEnumUserDeleted                    EventStreamEventTypeEnum = "user.deleted"
	EventStreamEventTypeEnumUserUpdated                    EventStreamEventTypeEnum = "user.updated"
	EventStreamEventTypeEnumOrganizationCreated            EventStreamEventTypeEnum = "organization.created"
	EventStreamEventTypeEnumOrganizationUpdated            EventStreamEventTypeEnum = "organization.updated"
	EventStreamEventTypeEnumOrganizationDeleted            EventStreamEventTypeEnum = "organization.deleted"
	EventStreamEventTypeEnumOrganizationMemberAdded        EventStreamEventTypeEnum = "organization.member.added"
	EventStreamEventTypeEnumOrganizationMemberDeleted      EventStreamEventTypeEnum = "organization.member.deleted"
	EventStreamEventTypeEnumOrganizationMemberRoleAssigned EventStreamEventTypeEnum = "organization.member.role.assigned"
	EventStreamEventTypeEnumOrganizationMemberRoleDeleted  EventStreamEventTypeEnum = "organization.member.role.deleted"
	EventStreamEventTypeEnumOrganizationConnectionAdded    EventStreamEventTypeEnum = "organization.connection.added"
	EventStreamEventTypeEnumOrganizationConnectionUpdated  EventStreamEventTypeEnum = "organization.connection.updated"
	EventStreamEventTypeEnumOrganizationConnectionRemoved  EventStreamEventTypeEnum = "organization.connection.removed"
)

func NewEventStreamEventTypeEnumFromString(s string) (EventStreamEventTypeEnum, error) {
	switch s {
	case "user.created":
		return EventStreamEventTypeEnumUserCreated, nil
	case "user.deleted":
		return EventStreamEventTypeEnumUserDeleted, nil
	case "user.updated":
		return EventStreamEventTypeEnumUserUpdated, nil
	case "organization.created":
		return EventStreamEventTypeEnumOrganizationCreated, nil
	case "organization.updated":
		return EventStreamEventTypeEnumOrganizationUpdated, nil
	case "organization.deleted":
		return EventStreamEventTypeEnumOrganizationDeleted, nil
	case "organization.member.added":
		return EventStreamEventTypeEnumOrganizationMemberAdded, nil
	case "organization.member.deleted":
		return EventStreamEventTypeEnumOrganizationMemberDeleted, nil
	case "organization.member.role.assigned":
		return EventStreamEventTypeEnumOrganizationMemberRoleAssigned, nil
	case "organization.member.role.deleted":
		return EventStreamEventTypeEnumOrganizationMemberRoleDeleted, nil
	case "organization.connection.added":
		return EventStreamEventTypeEnumOrganizationConnectionAdded, nil
	case "organization.connection.updated":
		return EventStreamEventTypeEnumOrganizationConnectionUpdated, nil
	case "organization.connection.removed":
		return EventStreamEventTypeEnumOrganizationConnectionRemoved, nil
	}
	var t EventStreamEventTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (e EventStreamEventTypeEnum) Ptr() *EventStreamEventTypeEnum {
	return &e
}

type ExtensibilityEmailProviderCredentials struct {

	// 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 (e *ExtensibilityEmailProviderCredentials) GetExtraProperties() map[string]interface{} {
	return e.extraProperties
}

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

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

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

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

var (
	federatedConnectionTokenSetFieldID         = big.NewInt(1 << 0)
	federatedConnectionTokenSetFieldConnection = big.NewInt(1 << 1)
	federatedConnectionTokenSetFieldScope      = big.NewInt(1 << 2)
	federatedConnectionTokenSetFieldExpiresAt  = big.NewInt(1 << 3)
	federatedConnectionTokenSetFieldIssuedAt   = big.NewInt(1 << 4)
	federatedConnectionTokenSetFieldLastUsedAt = big.NewInt(1 << 5)
)

type FederatedConnectionTokenSet struct {
	ID         *string    `json:"id,omitempty" url:"id,omitempty"`
	Connection *string    `json:"connection,omitempty" url:"connection,omitempty"`
	Scope      *string    `json:"scope,omitempty" url:"scope,omitempty"`
	ExpiresAt  *time.Time `json:"expires_at,omitempty" url:"expires_at,omitempty"`
	IssuedAt   *time.Time `json:"issued_at,omitempty" url:"issued_at,omitempty"`
	LastUsedAt *time.Time `json:"last_used_at,omitempty" url:"last_used_at,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (f *FederatedConnectionTokenSet) GetID() string {
	if f == nil || f.ID == nil {
		return ""
	}
	return *f.ID
}

func (f *FederatedConnectionTokenSet) GetConnection() string {
	if f == nil || f.Connection == nil {
		return ""
	}
	return *f.Connection
}

func (f *FederatedConnectionTokenSet) GetScope() string {
	if f == nil || f.Scope == nil {
		return ""
	}
	return *f.Scope
}

func (f *FederatedConnectionTokenSet) GetExpiresAt() time.Time {
	if f == nil || f.ExpiresAt == nil {
		return time.Time{}
	}
	return *f.ExpiresAt
}

func (f *FederatedConnectionTokenSet) GetIssuedAt() time.Time {
	if f == nil || f.IssuedAt == nil {
		return time.Time{}
	}
	return *f.IssuedAt
}

func (f *FederatedConnectionTokenSet) GetLastUsedAt() time.Time {
	if f == nil || f.LastUsedAt == nil {
		return time.Time{}
	}
	return *f.LastUsedAt
}

func (f *FederatedConnectionTokenSet) GetExtraProperties() map[string]interface{} {
	return f.ExtraProperties
}

func (f *FederatedConnectionTokenSet) require(field *big.Int) {
	if f.explicitFields == nil {
		f.explicitFields = big.NewInt(0)
	}
	f.explicitFields.Or(f.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 (f *FederatedConnectionTokenSet) SetID(id *string) {
	f.ID = id
	f.require(federatedConnectionTokenSetFieldID)
}

// SetConnection sets the Connection field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FederatedConnectionTokenSet) SetConnection(connection *string) {
	f.Connection = connection
	f.require(federatedConnectionTokenSetFieldConnection)
}

// SetScope sets the Scope field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FederatedConnectionTokenSet) SetScope(scope *string) {
	f.Scope = scope
	f.require(federatedConnectionTokenSetFieldScope)
}

// SetExpiresAt sets the ExpiresAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FederatedConnectionTokenSet) SetExpiresAt(expiresAt *time.Time) {
	f.ExpiresAt = expiresAt
	f.require(federatedConnectionTokenSetFieldExpiresAt)
}

// SetIssuedAt sets the IssuedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FederatedConnectionTokenSet) SetIssuedAt(issuedAt *time.Time) {
	f.IssuedAt = issuedAt
	f.require(federatedConnectionTokenSetFieldIssuedAt)
}

// SetLastUsedAt sets the LastUsedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FederatedConnectionTokenSet) SetLastUsedAt(lastUsedAt *time.Time) {
	f.LastUsedAt = lastUsedAt
	f.require(federatedConnectionTokenSetFieldLastUsedAt)
}

func (f *FederatedConnectionTokenSet) UnmarshalJSON(data []byte) error {
	type embed FederatedConnectionTokenSet
	var unmarshaler = struct {
		embed
		ExpiresAt  *internal.DateTime `json:"expires_at,omitempty"`
		IssuedAt   *internal.DateTime `json:"issued_at,omitempty"`
		LastUsedAt *internal.DateTime `json:"last_used_at,omitempty"`
	}{
		embed: embed(*f),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*f = FederatedConnectionTokenSet(unmarshaler.embed)
	f.ExpiresAt = unmarshaler.ExpiresAt.TimePtr()
	f.IssuedAt = unmarshaler.IssuedAt.TimePtr()
	f.LastUsedAt = unmarshaler.LastUsedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *f)
	if err != nil {
		return err
	}
	f.ExtraProperties = extraProperties
	f.rawJSON = json.RawMessage(data)
	return nil
}

func (f *FederatedConnectionTokenSet) MarshalJSON() ([]byte, error) {
	type embed FederatedConnectionTokenSet
	var marshaler = struct {
		embed
		ExpiresAt  *internal.DateTime `json:"expires_at,omitempty"`
		IssuedAt   *internal.DateTime `json:"issued_at,omitempty"`
		LastUsedAt *internal.DateTime `json:"last_used_at,omitempty"`
	}{
		embed:      embed(*f),
		ExpiresAt:  internal.NewOptionalDateTime(f.ExpiresAt),
		IssuedAt:   internal.NewOptionalDateTime(f.IssuedAt),
		LastUsedAt: internal.NewOptionalDateTime(f.LastUsedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, f.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, f.ExtraProperties)
}

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

// Flow execution debug.
type FlowExecutionDebug = map[string]interface{}

var (
	flowExecutionSummaryFieldID        = big.NewInt(1 << 0)
	flowExecutionSummaryFieldTraceID   = big.NewInt(1 << 1)
	flowExecutionSummaryFieldJourneyID = big.NewInt(1 << 2)
	flowExecutionSummaryFieldStatus    = big.NewInt(1 << 3)
	flowExecutionSummaryFieldCreatedAt = big.NewInt(1 << 4)
	flowExecutionSummaryFieldUpdatedAt = big.NewInt(1 << 5)
	flowExecutionSummaryFieldStartedAt = big.NewInt(1 << 6)
	flowExecutionSummaryFieldEndedAt   = big.NewInt(1 << 7)
)

type FlowExecutionSummary struct {
	// Flow execution identifier
	ID string `json:"id" url:"id"`
	// Trace id
	TraceID string `json:"trace_id" url:"trace_id"`
	// Journey id
	JourneyID *string `json:"journey_id,omitempty" url:"journey_id,omitempty"`
	// Execution status
	Status string `json:"status" url:"status"`
	// The ISO 8601 formatted date when this flow execution was created.
	CreatedAt time.Time `json:"created_at" url:"created_at"`
	// The ISO 8601 formatted date when this flow execution was updated.
	UpdatedAt time.Time `json:"updated_at" url:"updated_at"`
	// The ISO 8601 formatted date when this flow execution started.
	StartedAt *time.Time `json:"started_at,omitempty" url:"started_at,omitempty"`
	// The ISO 8601 formatted date when this flow execution ended.
	EndedAt *time.Time `json:"ended_at,omitempty" url:"ended_at,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 (f *FlowExecutionSummary) GetID() string {
	if f == nil {
		return ""
	}
	return f.ID
}

func (f *FlowExecutionSummary) GetTraceID() string {
	if f == nil {
		return ""
	}
	return f.TraceID
}

func (f *FlowExecutionSummary) GetJourneyID() string {
	if f == nil || f.JourneyID == nil {
		return ""
	}
	return *f.JourneyID
}

func (f *FlowExecutionSummary) GetStatus() string {
	if f == nil {
		return ""
	}
	return f.Status
}

func (f *FlowExecutionSummary) GetCreatedAt() time.Time {
	if f == nil {
		return time.Time{}
	}
	return f.CreatedAt
}

func (f *FlowExecutionSummary) GetUpdatedAt() time.Time {
	if f == nil {
		return time.Time{}
	}
	return f.UpdatedAt
}

func (f *FlowExecutionSummary) GetStartedAt() time.Time {
	if f == nil || f.StartedAt == nil {
		return time.Time{}
	}
	return *f.StartedAt
}

func (f *FlowExecutionSummary) GetEndedAt() time.Time {
	if f == nil || f.EndedAt == nil {
		return time.Time{}
	}
	return *f.EndedAt
}

func (f *FlowExecutionSummary) GetExtraProperties() map[string]interface{} {
	return f.extraProperties
}

func (f *FlowExecutionSummary) require(field *big.Int) {
	if f.explicitFields == nil {
		f.explicitFields = big.NewInt(0)
	}
	f.explicitFields.Or(f.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 (f *FlowExecutionSummary) SetID(id string) {
	f.ID = id
	f.require(flowExecutionSummaryFieldID)
}

// 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 (f *FlowExecutionSummary) SetTraceID(traceID string) {
	f.TraceID = traceID
	f.require(flowExecutionSummaryFieldTraceID)
}

// SetJourneyID sets the JourneyID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowExecutionSummary) SetJourneyID(journeyID *string) {
	f.JourneyID = journeyID
	f.require(flowExecutionSummaryFieldJourneyID)
}

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowExecutionSummary) SetStatus(status string) {
	f.Status = status
	f.require(flowExecutionSummaryFieldStatus)
}

// 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 (f *FlowExecutionSummary) SetCreatedAt(createdAt time.Time) {
	f.CreatedAt = createdAt
	f.require(flowExecutionSummaryFieldCreatedAt)
}

// 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 (f *FlowExecutionSummary) SetUpdatedAt(updatedAt time.Time) {
	f.UpdatedAt = updatedAt
	f.require(flowExecutionSummaryFieldUpdatedAt)
}

// SetStartedAt sets the StartedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowExecutionSummary) SetStartedAt(startedAt *time.Time) {
	f.StartedAt = startedAt
	f.require(flowExecutionSummaryFieldStartedAt)
}

// SetEndedAt sets the EndedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowExecutionSummary) SetEndedAt(endedAt *time.Time) {
	f.EndedAt = endedAt
	f.require(flowExecutionSummaryFieldEndedAt)
}

func (f *FlowExecutionSummary) UnmarshalJSON(data []byte) error {
	type embed FlowExecutionSummary
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at"`
		UpdatedAt *internal.DateTime `json:"updated_at"`
		StartedAt *internal.DateTime `json:"started_at,omitempty"`
		EndedAt   *internal.DateTime `json:"ended_at,omitempty"`
	}{
		embed: embed(*f),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*f = FlowExecutionSummary(unmarshaler.embed)
	f.CreatedAt = unmarshaler.CreatedAt.Time()
	f.UpdatedAt = unmarshaler.UpdatedAt.Time()
	f.StartedAt = unmarshaler.StartedAt.TimePtr()
	f.EndedAt = unmarshaler.EndedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *f)
	if err != nil {
		return err
	}
	f.extraProperties = extraProperties
	f.rawJSON = json.RawMessage(data)
	return nil
}

func (f *FlowExecutionSummary) MarshalJSON() ([]byte, error) {
	type embed FlowExecutionSummary
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at"`
		UpdatedAt *internal.DateTime `json:"updated_at"`
		StartedAt *internal.DateTime `json:"started_at,omitempty"`
		EndedAt   *internal.DateTime `json:"ended_at,omitempty"`
	}{
		embed:     embed(*f),
		CreatedAt: internal.NewDateTime(f.CreatedAt),
		UpdatedAt: internal.NewDateTime(f.UpdatedAt),
		StartedAt: internal.NewOptionalDateTime(f.StartedAt),
		EndedAt:   internal.NewOptionalDateTime(f.EndedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, f.explicitFields)
	return json.Marshal(explicitMarshaler)
}

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

var (
	flowsVaultConnectioSetupAPIKeyFieldType   = big.NewInt(1 << 0)
	flowsVaultConnectioSetupAPIKeyFieldAPIKey = big.NewInt(1 << 1)
)

type FlowsVaultConnectioSetupAPIKey struct {
	Type   FlowsVaultConnectioSetupTypeAPIKeyEnum `json:"type" url:"type"`
	APIKey string                                 `json:"api_key" url:"api_key"`

	// 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 (f *FlowsVaultConnectioSetupAPIKey) GetAPIKey() string {
	if f == nil {
		return ""
	}
	return f.APIKey
}

func (f *FlowsVaultConnectioSetupAPIKey) GetExtraProperties() map[string]interface{} {
	return f.extraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupAPIKey) SetType(type_ FlowsVaultConnectioSetupTypeAPIKeyEnum) {
	f.Type = type_
	f.require(flowsVaultConnectioSetupAPIKeyFieldType)
}

// SetAPIKey sets the APIKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupAPIKey) SetAPIKey(apiKey string) {
	f.APIKey = apiKey
	f.require(flowsVaultConnectioSetupAPIKeyFieldAPIKey)
}

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

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

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

var (
	flowsVaultConnectioSetupAPIKeyWithBaseURLFieldType    = big.NewInt(1 << 0)
	flowsVaultConnectioSetupAPIKeyWithBaseURLFieldAPIKey  = big.NewInt(1 << 1)
	flowsVaultConnectioSetupAPIKeyWithBaseURLFieldBaseURL = big.NewInt(1 << 2)
)

type FlowsVaultConnectioSetupAPIKeyWithBaseURL struct {
	Type    FlowsVaultConnectioSetupTypeAPIKeyEnum `json:"type" url:"type"`
	APIKey  string                                 `json:"api_key" url:"api_key"`
	BaseURL *string                                `json:"base_url,omitempty" url:"base_url,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 (f *FlowsVaultConnectioSetupAPIKeyWithBaseURL) GetAPIKey() string {
	if f == nil {
		return ""
	}
	return f.APIKey
}

func (f *FlowsVaultConnectioSetupAPIKeyWithBaseURL) GetBaseURL() string {
	if f == nil || f.BaseURL == nil {
		return ""
	}
	return *f.BaseURL
}

func (f *FlowsVaultConnectioSetupAPIKeyWithBaseURL) GetExtraProperties() map[string]interface{} {
	return f.extraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupAPIKeyWithBaseURL) SetType(type_ FlowsVaultConnectioSetupTypeAPIKeyEnum) {
	f.Type = type_
	f.require(flowsVaultConnectioSetupAPIKeyWithBaseURLFieldType)
}

// SetAPIKey sets the APIKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupAPIKeyWithBaseURL) SetAPIKey(apiKey string) {
	f.APIKey = apiKey
	f.require(flowsVaultConnectioSetupAPIKeyWithBaseURLFieldAPIKey)
}

// SetBaseURL sets the BaseURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupAPIKeyWithBaseURL) SetBaseURL(baseURL *string) {
	f.BaseURL = baseURL
	f.require(flowsVaultConnectioSetupAPIKeyWithBaseURLFieldBaseURL)
}

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

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

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

var (
	flowsVaultConnectioSetupBigqueryOauthJwtFieldType        = big.NewInt(1 << 0)
	flowsVaultConnectioSetupBigqueryOauthJwtFieldProjectID   = big.NewInt(1 << 1)
	flowsVaultConnectioSetupBigqueryOauthJwtFieldPrivateKey  = big.NewInt(1 << 2)
	flowsVaultConnectioSetupBigqueryOauthJwtFieldClientEmail = big.NewInt(1 << 3)
)

type FlowsVaultConnectioSetupBigqueryOauthJwt struct {
	Type        *FlowsVaultConnectioSetupTypeOauthJwtEnum `json:"type,omitempty" url:"type,omitempty"`
	ProjectID   *string                                   `json:"project_id,omitempty" url:"project_id,omitempty"`
	PrivateKey  *string                                   `json:"private_key,omitempty" url:"private_key,omitempty"`
	ClientEmail *string                                   `json:"client_email,omitempty" url:"client_email,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 (f *FlowsVaultConnectioSetupBigqueryOauthJwt) GetProjectID() string {
	if f == nil || f.ProjectID == nil {
		return ""
	}
	return *f.ProjectID
}

func (f *FlowsVaultConnectioSetupBigqueryOauthJwt) GetPrivateKey() string {
	if f == nil || f.PrivateKey == nil {
		return ""
	}
	return *f.PrivateKey
}

func (f *FlowsVaultConnectioSetupBigqueryOauthJwt) GetClientEmail() string {
	if f == nil || f.ClientEmail == nil {
		return ""
	}
	return *f.ClientEmail
}

func (f *FlowsVaultConnectioSetupBigqueryOauthJwt) GetExtraProperties() map[string]interface{} {
	return f.extraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupBigqueryOauthJwt) SetType(type_ *FlowsVaultConnectioSetupTypeOauthJwtEnum) {
	f.Type = type_
	f.require(flowsVaultConnectioSetupBigqueryOauthJwtFieldType)
}

// SetProjectID sets the ProjectID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupBigqueryOauthJwt) SetProjectID(projectID *string) {
	f.ProjectID = projectID
	f.require(flowsVaultConnectioSetupBigqueryOauthJwtFieldProjectID)
}

// SetPrivateKey sets the PrivateKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupBigqueryOauthJwt) SetPrivateKey(privateKey *string) {
	f.PrivateKey = privateKey
	f.require(flowsVaultConnectioSetupBigqueryOauthJwtFieldPrivateKey)
}

// SetClientEmail sets the ClientEmail field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupBigqueryOauthJwt) SetClientEmail(clientEmail *string) {
	f.ClientEmail = clientEmail
	f.require(flowsVaultConnectioSetupBigqueryOauthJwtFieldClientEmail)
}

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

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

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

var (
	flowsVaultConnectioSetupHTTPBearerFieldType  = big.NewInt(1 << 0)
	flowsVaultConnectioSetupHTTPBearerFieldToken = big.NewInt(1 << 1)
)

type FlowsVaultConnectioSetupHTTPBearer struct {
	Type  FlowsVaultConnectioSetupTypeBearerEnum `json:"type" url:"type"`
	Token string                                 `json:"token" url:"token"`

	// 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 (f *FlowsVaultConnectioSetupHTTPBearer) GetToken() string {
	if f == nil {
		return ""
	}
	return f.Token
}

func (f *FlowsVaultConnectioSetupHTTPBearer) GetExtraProperties() map[string]interface{} {
	return f.extraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupHTTPBearer) SetType(type_ FlowsVaultConnectioSetupTypeBearerEnum) {
	f.Type = type_
	f.require(flowsVaultConnectioSetupHTTPBearerFieldType)
}

// SetToken sets the Token field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupHTTPBearer) SetToken(token string) {
	f.Token = token
	f.require(flowsVaultConnectioSetupHTTPBearerFieldToken)
}

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

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

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

var (
	flowsVaultConnectioSetupJwtFieldType      = big.NewInt(1 << 0)
	flowsVaultConnectioSetupJwtFieldAlgorithm = big.NewInt(1 << 1)
)

type FlowsVaultConnectioSetupJwt struct {
	Type      FlowsVaultConnectioSetupTypeJwtEnum      `json:"type" url:"type"`
	Algorithm FlowsVaultConnectioSetupJwtAlgorithmEnum `json:"algorithm" url:"algorithm"`

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

	ExtraProperties map[string]interface{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (f *FlowsVaultConnectioSetupJwt) GetAlgorithm() FlowsVaultConnectioSetupJwtAlgorithmEnum {
	if f == nil {
		return ""
	}
	return f.Algorithm
}

func (f *FlowsVaultConnectioSetupJwt) GetExtraProperties() map[string]interface{} {
	return f.ExtraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupJwt) SetType(type_ FlowsVaultConnectioSetupTypeJwtEnum) {
	f.Type = type_
	f.require(flowsVaultConnectioSetupJwtFieldType)
}

// SetAlgorithm sets the Algorithm field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupJwt) SetAlgorithm(algorithm FlowsVaultConnectioSetupJwtAlgorithmEnum) {
	f.Algorithm = algorithm
	f.require(flowsVaultConnectioSetupJwtFieldAlgorithm)
}

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

func (f *FlowsVaultConnectioSetupJwt) MarshalJSON() ([]byte, error) {
	type embed FlowsVaultConnectioSetupJwt
	var marshaler = struct {
		embed
	}{
		embed: embed(*f),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, f.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, f.ExtraProperties)
}

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

type FlowsVaultConnectioSetupJwtAlgorithmEnum string

const (
	FlowsVaultConnectioSetupJwtAlgorithmEnumHs256 FlowsVaultConnectioSetupJwtAlgorithmEnum = "HS256"
	FlowsVaultConnectioSetupJwtAlgorithmEnumHs384 FlowsVaultConnectioSetupJwtAlgorithmEnum = "HS384"
	FlowsVaultConnectioSetupJwtAlgorithmEnumHs512 FlowsVaultConnectioSetupJwtAlgorithmEnum = "HS512"
	FlowsVaultConnectioSetupJwtAlgorithmEnumRs256 FlowsVaultConnectioSetupJwtAlgorithmEnum = "RS256"
	FlowsVaultConnectioSetupJwtAlgorithmEnumRs384 FlowsVaultConnectioSetupJwtAlgorithmEnum = "RS384"
	FlowsVaultConnectioSetupJwtAlgorithmEnumRs512 FlowsVaultConnectioSetupJwtAlgorithmEnum = "RS512"
	FlowsVaultConnectioSetupJwtAlgorithmEnumEs256 FlowsVaultConnectioSetupJwtAlgorithmEnum = "ES256"
	FlowsVaultConnectioSetupJwtAlgorithmEnumEs384 FlowsVaultConnectioSetupJwtAlgorithmEnum = "ES384"
	FlowsVaultConnectioSetupJwtAlgorithmEnumEs512 FlowsVaultConnectioSetupJwtAlgorithmEnum = "ES512"
	FlowsVaultConnectioSetupJwtAlgorithmEnumPs256 FlowsVaultConnectioSetupJwtAlgorithmEnum = "PS256"
	FlowsVaultConnectioSetupJwtAlgorithmEnumPs384 FlowsVaultConnectioSetupJwtAlgorithmEnum = "PS384"
	FlowsVaultConnectioSetupJwtAlgorithmEnumPs512 FlowsVaultConnectioSetupJwtAlgorithmEnum = "PS512"
)

func NewFlowsVaultConnectioSetupJwtAlgorithmEnumFromString(s string) (FlowsVaultConnectioSetupJwtAlgorithmEnum, error) {
	switch s {
	case "HS256":
		return FlowsVaultConnectioSetupJwtAlgorithmEnumHs256, nil
	case "HS384":
		return FlowsVaultConnectioSetupJwtAlgorithmEnumHs384, nil
	case "HS512":
		return FlowsVaultConnectioSetupJwtAlgorithmEnumHs512, nil
	case "RS256":
		return FlowsVaultConnectioSetupJwtAlgorithmEnumRs256, nil
	case "RS384":
		return FlowsVaultConnectioSetupJwtAlgorithmEnumRs384, nil
	case "RS512":
		return FlowsVaultConnectioSetupJwtAlgorithmEnumRs512, nil
	case "ES256":
		return FlowsVaultConnectioSetupJwtAlgorithmEnumEs256, nil
	case "ES384":
		return FlowsVaultConnectioSetupJwtAlgorithmEnumEs384, nil
	case "ES512":
		return FlowsVaultConnectioSetupJwtAlgorithmEnumEs512, nil
	case "PS256":
		return FlowsVaultConnectioSetupJwtAlgorithmEnumPs256, nil
	case "PS384":
		return FlowsVaultConnectioSetupJwtAlgorithmEnumPs384, nil
	case "PS512":
		return FlowsVaultConnectioSetupJwtAlgorithmEnumPs512, nil
	}
	var t FlowsVaultConnectioSetupJwtAlgorithmEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (f FlowsVaultConnectioSetupJwtAlgorithmEnum) Ptr() *FlowsVaultConnectioSetupJwtAlgorithmEnum {
	return &f
}

var (
	flowsVaultConnectioSetupMailjetAPIKeyFieldType      = big.NewInt(1 << 0)
	flowsVaultConnectioSetupMailjetAPIKeyFieldAPIKey    = big.NewInt(1 << 1)
	flowsVaultConnectioSetupMailjetAPIKeyFieldSecretKey = big.NewInt(1 << 2)
)

type FlowsVaultConnectioSetupMailjetAPIKey struct {
	Type      FlowsVaultConnectioSetupTypeAPIKeyEnum `json:"type" url:"type"`
	APIKey    string                                 `json:"api_key" url:"api_key"`
	SecretKey string                                 `json:"secret_key" url:"secret_key"`

	// 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 (f *FlowsVaultConnectioSetupMailjetAPIKey) GetAPIKey() string {
	if f == nil {
		return ""
	}
	return f.APIKey
}

func (f *FlowsVaultConnectioSetupMailjetAPIKey) GetSecretKey() string {
	if f == nil {
		return ""
	}
	return f.SecretKey
}

func (f *FlowsVaultConnectioSetupMailjetAPIKey) GetExtraProperties() map[string]interface{} {
	return f.extraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupMailjetAPIKey) SetType(type_ FlowsVaultConnectioSetupTypeAPIKeyEnum) {
	f.Type = type_
	f.require(flowsVaultConnectioSetupMailjetAPIKeyFieldType)
}

// SetAPIKey sets the APIKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupMailjetAPIKey) SetAPIKey(apiKey string) {
	f.APIKey = apiKey
	f.require(flowsVaultConnectioSetupMailjetAPIKeyFieldAPIKey)
}

// SetSecretKey sets the SecretKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupMailjetAPIKey) SetSecretKey(secretKey string) {
	f.SecretKey = secretKey
	f.require(flowsVaultConnectioSetupMailjetAPIKeyFieldSecretKey)
}

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

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

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

var (
	flowsVaultConnectioSetupOauthAppFieldType         = big.NewInt(1 << 0)
	flowsVaultConnectioSetupOauthAppFieldClientID     = big.NewInt(1 << 1)
	flowsVaultConnectioSetupOauthAppFieldClientSecret = big.NewInt(1 << 2)
	flowsVaultConnectioSetupOauthAppFieldDomain       = big.NewInt(1 << 3)
	flowsVaultConnectioSetupOauthAppFieldAudience     = big.NewInt(1 << 4)
)

type FlowsVaultConnectioSetupOauthApp struct {
	Type         FlowsVaultConnectioSetupTypeOauthAppEnum `json:"type" url:"type"`
	ClientID     string                                   `json:"client_id" url:"client_id"`
	ClientSecret string                                   `json:"client_secret" url:"client_secret"`
	Domain       string                                   `json:"domain" url:"domain"`
	Audience     *string                                  `json:"audience,omitempty" url:"audience,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 (f *FlowsVaultConnectioSetupOauthApp) GetClientID() string {
	if f == nil {
		return ""
	}
	return f.ClientID
}

func (f *FlowsVaultConnectioSetupOauthApp) GetClientSecret() string {
	if f == nil {
		return ""
	}
	return f.ClientSecret
}

func (f *FlowsVaultConnectioSetupOauthApp) GetDomain() string {
	if f == nil {
		return ""
	}
	return f.Domain
}

func (f *FlowsVaultConnectioSetupOauthApp) GetAudience() string {
	if f == nil || f.Audience == nil {
		return ""
	}
	return *f.Audience
}

func (f *FlowsVaultConnectioSetupOauthApp) GetExtraProperties() map[string]interface{} {
	return f.extraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupOauthApp) SetType(type_ FlowsVaultConnectioSetupTypeOauthAppEnum) {
	f.Type = type_
	f.require(flowsVaultConnectioSetupOauthAppFieldType)
}

// SetClientID sets the ClientID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupOauthApp) SetClientID(clientID string) {
	f.ClientID = clientID
	f.require(flowsVaultConnectioSetupOauthAppFieldClientID)
}

// SetClientSecret sets the ClientSecret field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupOauthApp) SetClientSecret(clientSecret string) {
	f.ClientSecret = clientSecret
	f.require(flowsVaultConnectioSetupOauthAppFieldClientSecret)
}

// SetDomain sets the Domain field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupOauthApp) SetDomain(domain string) {
	f.Domain = domain
	f.require(flowsVaultConnectioSetupOauthAppFieldDomain)
}

// SetAudience sets the Audience field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupOauthApp) SetAudience(audience *string) {
	f.Audience = audience
	f.require(flowsVaultConnectioSetupOauthAppFieldAudience)
}

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

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

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

var (
	flowsVaultConnectioSetupOauthCodeFieldType = big.NewInt(1 << 0)
	flowsVaultConnectioSetupOauthCodeFieldCode = big.NewInt(1 << 1)
)

type FlowsVaultConnectioSetupOauthCode struct {
	Type *FlowsVaultConnectioSetupTypeOauthCodeEnum `json:"type,omitempty" url:"type,omitempty"`
	Code *string                                    `json:"code,omitempty" url:"code,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (f *FlowsVaultConnectioSetupOauthCode) GetCode() string {
	if f == nil || f.Code == nil {
		return ""
	}
	return *f.Code
}

func (f *FlowsVaultConnectioSetupOauthCode) GetExtraProperties() map[string]interface{} {
	return f.ExtraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupOauthCode) SetType(type_ *FlowsVaultConnectioSetupTypeOauthCodeEnum) {
	f.Type = type_
	f.require(flowsVaultConnectioSetupOauthCodeFieldType)
}

// SetCode sets the Code field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupOauthCode) SetCode(code *string) {
	f.Code = code
	f.require(flowsVaultConnectioSetupOauthCodeFieldCode)
}

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

func (f *FlowsVaultConnectioSetupOauthCode) MarshalJSON() ([]byte, error) {
	type embed FlowsVaultConnectioSetupOauthCode
	var marshaler = struct {
		embed
	}{
		embed: embed(*f),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, f.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, f.ExtraProperties)
}

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

var (
	flowsVaultConnectioSetupSecretAPIKeyFieldType      = big.NewInt(1 << 0)
	flowsVaultConnectioSetupSecretAPIKeyFieldSecretKey = big.NewInt(1 << 1)
)

type FlowsVaultConnectioSetupSecretAPIKey struct {
	Type      FlowsVaultConnectioSetupTypeAPIKeyEnum `json:"type" url:"type"`
	SecretKey string                                 `json:"secret_key" url:"secret_key"`

	// 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 (f *FlowsVaultConnectioSetupSecretAPIKey) GetSecretKey() string {
	if f == nil {
		return ""
	}
	return f.SecretKey
}

func (f *FlowsVaultConnectioSetupSecretAPIKey) GetExtraProperties() map[string]interface{} {
	return f.extraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupSecretAPIKey) SetType(type_ FlowsVaultConnectioSetupTypeAPIKeyEnum) {
	f.Type = type_
	f.require(flowsVaultConnectioSetupSecretAPIKeyFieldType)
}

// SetSecretKey sets the SecretKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupSecretAPIKey) SetSecretKey(secretKey string) {
	f.SecretKey = secretKey
	f.require(flowsVaultConnectioSetupSecretAPIKeyFieldSecretKey)
}

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

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

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

var (
	flowsVaultConnectioSetupStripeKeyPairFieldType       = big.NewInt(1 << 0)
	flowsVaultConnectioSetupStripeKeyPairFieldPrivateKey = big.NewInt(1 << 1)
	flowsVaultConnectioSetupStripeKeyPairFieldPublicKey  = big.NewInt(1 << 2)
)

type FlowsVaultConnectioSetupStripeKeyPair struct {
	Type       FlowsVaultConnectioSetupTypeKeyPairEnum `json:"type" url:"type"`
	PrivateKey string                                  `json:"private_key" url:"private_key"`
	PublicKey  string                                  `json:"public_key" url:"public_key"`

	// 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 (f *FlowsVaultConnectioSetupStripeKeyPair) GetPrivateKey() string {
	if f == nil {
		return ""
	}
	return f.PrivateKey
}

func (f *FlowsVaultConnectioSetupStripeKeyPair) GetPublicKey() string {
	if f == nil {
		return ""
	}
	return f.PublicKey
}

func (f *FlowsVaultConnectioSetupStripeKeyPair) GetExtraProperties() map[string]interface{} {
	return f.extraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupStripeKeyPair) SetType(type_ FlowsVaultConnectioSetupTypeKeyPairEnum) {
	f.Type = type_
	f.require(flowsVaultConnectioSetupStripeKeyPairFieldType)
}

// SetPrivateKey sets the PrivateKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupStripeKeyPair) SetPrivateKey(privateKey string) {
	f.PrivateKey = privateKey
	f.require(flowsVaultConnectioSetupStripeKeyPairFieldPrivateKey)
}

// SetPublicKey sets the PublicKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupStripeKeyPair) SetPublicKey(publicKey string) {
	f.PublicKey = publicKey
	f.require(flowsVaultConnectioSetupStripeKeyPairFieldPublicKey)
}

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

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

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

var (
	flowsVaultConnectioSetupTokenFieldType  = big.NewInt(1 << 0)
	flowsVaultConnectioSetupTokenFieldToken = big.NewInt(1 << 1)
)

type FlowsVaultConnectioSetupToken struct {
	Type  FlowsVaultConnectioSetupTypeTokenEnum `json:"type" url:"type"`
	Token string                                `json:"token" url:"token"`

	// 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 (f *FlowsVaultConnectioSetupToken) GetToken() string {
	if f == nil {
		return ""
	}
	return f.Token
}

func (f *FlowsVaultConnectioSetupToken) GetExtraProperties() map[string]interface{} {
	return f.extraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupToken) SetType(type_ FlowsVaultConnectioSetupTypeTokenEnum) {
	f.Type = type_
	f.require(flowsVaultConnectioSetupTokenFieldType)
}

// SetToken sets the Token field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupToken) SetToken(token string) {
	f.Token = token
	f.require(flowsVaultConnectioSetupTokenFieldToken)
}

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

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

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

var (
	flowsVaultConnectioSetupTwilioAPIKeyFieldType      = big.NewInt(1 << 0)
	flowsVaultConnectioSetupTwilioAPIKeyFieldAccountID = big.NewInt(1 << 1)
	flowsVaultConnectioSetupTwilioAPIKeyFieldAPIKey    = big.NewInt(1 << 2)
)

type FlowsVaultConnectioSetupTwilioAPIKey struct {
	Type      FlowsVaultConnectioSetupTypeAPIKeyEnum `json:"type" url:"type"`
	AccountID string                                 `json:"account_id" url:"account_id"`
	APIKey    string                                 `json:"api_key" url:"api_key"`

	// 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 (f *FlowsVaultConnectioSetupTwilioAPIKey) GetAccountID() string {
	if f == nil {
		return ""
	}
	return f.AccountID
}

func (f *FlowsVaultConnectioSetupTwilioAPIKey) GetAPIKey() string {
	if f == nil {
		return ""
	}
	return f.APIKey
}

func (f *FlowsVaultConnectioSetupTwilioAPIKey) GetExtraProperties() map[string]interface{} {
	return f.extraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupTwilioAPIKey) SetType(type_ FlowsVaultConnectioSetupTypeAPIKeyEnum) {
	f.Type = type_
	f.require(flowsVaultConnectioSetupTwilioAPIKeyFieldType)
}

// SetAccountID sets the AccountID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupTwilioAPIKey) SetAccountID(accountID string) {
	f.AccountID = accountID
	f.require(flowsVaultConnectioSetupTwilioAPIKeyFieldAccountID)
}

// SetAPIKey sets the APIKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupTwilioAPIKey) SetAPIKey(apiKey string) {
	f.APIKey = apiKey
	f.require(flowsVaultConnectioSetupTwilioAPIKeyFieldAPIKey)
}

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

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

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

type FlowsVaultConnectioSetupTypeAPIKeyEnum = string

type FlowsVaultConnectioSetupTypeBearerEnum = string

type FlowsVaultConnectioSetupTypeJwtEnum = string

type FlowsVaultConnectioSetupTypeKeyPairEnum = string

type FlowsVaultConnectioSetupTypeOauthAppEnum = string

type FlowsVaultConnectioSetupTypeOauthCodeEnum = string

type FlowsVaultConnectioSetupTypeOauthJwtEnum = string

type FlowsVaultConnectioSetupTypeTokenEnum = string

type FlowsVaultConnectioSetupTypeWebhookEnum = string

var (
	flowsVaultConnectioSetupWebhookFieldType = big.NewInt(1 << 0)
	flowsVaultConnectioSetupWebhookFieldURL  = big.NewInt(1 << 1)
)

type FlowsVaultConnectioSetupWebhook struct {
	Type FlowsVaultConnectioSetupTypeWebhookEnum `json:"type" url:"type"`
	URL  string                                  `json:"url" url:"url"`

	// 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 (f *FlowsVaultConnectioSetupWebhook) GetURL() string {
	if f == nil {
		return ""
	}
	return f.URL
}

func (f *FlowsVaultConnectioSetupWebhook) GetExtraProperties() map[string]interface{} {
	return f.extraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupWebhook) SetType(type_ FlowsVaultConnectioSetupTypeWebhookEnum) {
	f.Type = type_
	f.require(flowsVaultConnectioSetupWebhookFieldType)
}

// SetURL sets the URL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectioSetupWebhook) SetURL(url string) {
	f.URL = url
	f.require(flowsVaultConnectioSetupWebhookFieldURL)
}

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

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

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

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDActivecampaignEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDAirtableEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDAuth0Enum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDBigqueryEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDClearbitEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDDocusignEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDGoogleSheetsEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIdHttpEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDHubspotEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDJwtEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDMailchimpEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDMailjetEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDPipedriveEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDSalesforceEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDSendgridEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDSlackEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDStripeEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDTelegramEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDTwilioEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDWhatsappEnum = string

// Flows Vault Connection app identifier.
type FlowsVaultConnectionAppIDZapierEnum = string

var (
	flowsVaultConnectionSummaryFieldID          = big.NewInt(1 << 0)
	flowsVaultConnectionSummaryFieldAppID       = big.NewInt(1 << 1)
	flowsVaultConnectionSummaryFieldName        = big.NewInt(1 << 2)
	flowsVaultConnectionSummaryFieldAccountName = big.NewInt(1 << 3)
	flowsVaultConnectionSummaryFieldReady       = big.NewInt(1 << 4)
	flowsVaultConnectionSummaryFieldCreatedAt   = big.NewInt(1 << 5)
	flowsVaultConnectionSummaryFieldUpdatedAt   = big.NewInt(1 << 6)
	flowsVaultConnectionSummaryFieldRefreshedAt = big.NewInt(1 << 7)
	flowsVaultConnectionSummaryFieldFingerprint = big.NewInt(1 << 8)
)

type FlowsVaultConnectionSummary struct {
	// Flows Vault Connection identifier.
	ID string `json:"id" url:"id"`
	// Flows Vault Connection app identifier.
	AppID string `json:"app_id" url:"app_id"`
	// Flows Vault Connection name.
	Name string `json:"name" url:"name"`
	// Flows Vault Connection custom account name.
	AccountName *string `json:"account_name,omitempty" url:"account_name,omitempty"`
	// Whether the Flows Vault Connection is configured.
	Ready bool `json:"ready" url:"ready"`
	// The ISO 8601 formatted date when this Flows Vault Connection was created.
	CreatedAt time.Time `json:"created_at" url:"created_at"`
	// The ISO 8601 formatted date when this Flows Vault Connection was updated.
	UpdatedAt time.Time `json:"updated_at" url:"updated_at"`
	// The ISO 8601 formatted date when this Flows Vault Connection was refreshed.
	RefreshedAt *time.Time `json:"refreshed_at,omitempty" url:"refreshed_at,omitempty"`
	Fingerprint string     `json:"fingerprint" url:"fingerprint"`

	// 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 (f *FlowsVaultConnectionSummary) GetID() string {
	if f == nil {
		return ""
	}
	return f.ID
}

func (f *FlowsVaultConnectionSummary) GetAppID() string {
	if f == nil {
		return ""
	}
	return f.AppID
}

func (f *FlowsVaultConnectionSummary) GetName() string {
	if f == nil {
		return ""
	}
	return f.Name
}

func (f *FlowsVaultConnectionSummary) GetAccountName() string {
	if f == nil || f.AccountName == nil {
		return ""
	}
	return *f.AccountName
}

func (f *FlowsVaultConnectionSummary) GetReady() bool {
	if f == nil {
		return false
	}
	return f.Ready
}

func (f *FlowsVaultConnectionSummary) GetCreatedAt() time.Time {
	if f == nil {
		return time.Time{}
	}
	return f.CreatedAt
}

func (f *FlowsVaultConnectionSummary) GetUpdatedAt() time.Time {
	if f == nil {
		return time.Time{}
	}
	return f.UpdatedAt
}

func (f *FlowsVaultConnectionSummary) GetRefreshedAt() time.Time {
	if f == nil || f.RefreshedAt == nil {
		return time.Time{}
	}
	return *f.RefreshedAt
}

func (f *FlowsVaultConnectionSummary) GetFingerprint() string {
	if f == nil {
		return ""
	}
	return f.Fingerprint
}

func (f *FlowsVaultConnectionSummary) GetExtraProperties() map[string]interface{} {
	return f.extraProperties
}

func (f *FlowsVaultConnectionSummary) require(field *big.Int) {
	if f.explicitFields == nil {
		f.explicitFields = big.NewInt(0)
	}
	f.explicitFields.Or(f.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 (f *FlowsVaultConnectionSummary) SetID(id string) {
	f.ID = id
	f.require(flowsVaultConnectionSummaryFieldID)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectionSummary) SetAppID(appID string) {
	f.AppID = appID
	f.require(flowsVaultConnectionSummaryFieldAppID)
}

// 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 (f *FlowsVaultConnectionSummary) SetName(name string) {
	f.Name = name
	f.require(flowsVaultConnectionSummaryFieldName)
}

// SetAccountName sets the AccountName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectionSummary) SetAccountName(accountName *string) {
	f.AccountName = accountName
	f.require(flowsVaultConnectionSummaryFieldAccountName)
}

// SetReady sets the Ready field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectionSummary) SetReady(ready bool) {
	f.Ready = ready
	f.require(flowsVaultConnectionSummaryFieldReady)
}

// 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 (f *FlowsVaultConnectionSummary) SetCreatedAt(createdAt time.Time) {
	f.CreatedAt = createdAt
	f.require(flowsVaultConnectionSummaryFieldCreatedAt)
}

// 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 (f *FlowsVaultConnectionSummary) SetUpdatedAt(updatedAt time.Time) {
	f.UpdatedAt = updatedAt
	f.require(flowsVaultConnectionSummaryFieldUpdatedAt)
}

// SetRefreshedAt sets the RefreshedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectionSummary) SetRefreshedAt(refreshedAt *time.Time) {
	f.RefreshedAt = refreshedAt
	f.require(flowsVaultConnectionSummaryFieldRefreshedAt)
}

// SetFingerprint sets the Fingerprint field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (f *FlowsVaultConnectionSummary) SetFingerprint(fingerprint string) {
	f.Fingerprint = fingerprint
	f.require(flowsVaultConnectionSummaryFieldFingerprint)
}

func (f *FlowsVaultConnectionSummary) UnmarshalJSON(data []byte) error {
	type embed FlowsVaultConnectionSummary
	var unmarshaler = struct {
		embed
		CreatedAt   *internal.DateTime `json:"created_at"`
		UpdatedAt   *internal.DateTime `json:"updated_at"`
		RefreshedAt *internal.DateTime `json:"refreshed_at,omitempty"`
	}{
		embed: embed(*f),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*f = FlowsVaultConnectionSummary(unmarshaler.embed)
	f.CreatedAt = unmarshaler.CreatedAt.Time()
	f.UpdatedAt = unmarshaler.UpdatedAt.Time()
	f.RefreshedAt = unmarshaler.RefreshedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *f)
	if err != nil {
		return err
	}
	f.extraProperties = extraProperties
	f.rawJSON = json.RawMessage(data)
	return nil
}

func (f *FlowsVaultConnectionSummary) MarshalJSON() ([]byte, error) {
	type embed FlowsVaultConnectionSummary
	var marshaler = struct {
		embed
		CreatedAt   *internal.DateTime `json:"created_at"`
		UpdatedAt   *internal.DateTime `json:"updated_at"`
		RefreshedAt *internal.DateTime `json:"refreshed_at,omitempty"`
	}{
		embed:       embed(*f),
		CreatedAt:   internal.NewDateTime(f.CreatedAt),
		UpdatedAt:   internal.NewDateTime(f.UpdatedAt),
		RefreshedAt: internal.NewOptionalDateTime(f.RefreshedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, f.explicitFields)
	return json.Marshal(explicitMarshaler)
}

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

// The result of a specific execution of a trigger.
var (
	getActionExecutionResponseContentFieldID        = big.NewInt(1 << 0)
	getActionExecutionResponseContentFieldTriggerID = big.NewInt(1 << 1)
	getActionExecutionResponseContentFieldStatus    = big.NewInt(1 << 2)
	getActionExecutionResponseContentFieldResults   = big.NewInt(1 << 3)
	getActionExecutionResponseContentFieldCreatedAt = big.NewInt(1 << 4)
	getActionExecutionResponseContentFieldUpdatedAt = big.NewInt(1 << 5)
)

type GetActionExecutionResponseContent struct {
	// ID identifies this specific execution simulation. These IDs would resemble real executions in production.
	ID        *string                    `json:"id,omitempty" url:"id,omitempty"`
	TriggerID *ActionTriggerTypeEnum     `json:"trigger_id,omitempty" url:"trigger_id,omitempty"`
	Status    *ActionExecutionStatusEnum `json:"status,omitempty" url:"status,omitempty"`
	Results   []*ActionExecutionResult   `json:"results,omitempty" url:"results,omitempty"`
	// The time that the execution was started.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The time that the exeution finished executing.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,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 *GetActionExecutionResponseContent) GetID() string {
	if g == nil || g.ID == nil {
		return ""
	}
	return *g.ID
}

func (g *GetActionExecutionResponseContent) GetTriggerID() ActionTriggerTypeEnum {
	if g == nil || g.TriggerID == nil {
		return ""
	}
	return *g.TriggerID
}

func (g *GetActionExecutionResponseContent) GetStatus() ActionExecutionStatusEnum {
	if g == nil || g.Status == nil {
		return ""
	}
	return *g.Status
}

func (g *GetActionExecutionResponseContent) GetResults() []*ActionExecutionResult {
	if g == nil || g.Results == nil {
		return nil
	}
	return g.Results
}

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

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

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

func (g *GetActionExecutionResponseContent) 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 *GetActionExecutionResponseContent) SetID(id *string) {
	g.ID = id
	g.require(getActionExecutionResponseContentFieldID)
}

// SetTriggerID sets the TriggerID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetActionExecutionResponseContent) SetTriggerID(triggerID *ActionTriggerTypeEnum) {
	g.TriggerID = triggerID
	g.require(getActionExecutionResponseContentFieldTriggerID)
}

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetActionExecutionResponseContent) SetStatus(status *ActionExecutionStatusEnum) {
	g.Status = status
	g.require(getActionExecutionResponseContentFieldStatus)
}

// SetResults sets the Results field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetActionExecutionResponseContent) SetResults(results []*ActionExecutionResult) {
	g.Results = results
	g.require(getActionExecutionResponseContentFieldResults)
}

// 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 *GetActionExecutionResponseContent) SetCreatedAt(createdAt *time.Time) {
	g.CreatedAt = createdAt
	g.require(getActionExecutionResponseContentFieldCreatedAt)
}

// 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 *GetActionExecutionResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getActionExecutionResponseContentFieldUpdatedAt)
}

func (g *GetActionExecutionResponseContent) UnmarshalJSON(data []byte) error {
	type embed GetActionExecutionResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetActionExecutionResponseContent(unmarshaler.embed)
	g.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	g.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetActionExecutionResponseContent) MarshalJSON() ([]byte, error) {
	type embed GetActionExecutionResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*g),
		CreatedAt: internal.NewOptionalDateTime(g.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(g.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetActionExecutionResponseContent) 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 (
	getActionVersionResponseContentFieldID                = big.NewInt(1 << 0)
	getActionVersionResponseContentFieldActionID          = big.NewInt(1 << 1)
	getActionVersionResponseContentFieldCode              = big.NewInt(1 << 2)
	getActionVersionResponseContentFieldDependencies      = big.NewInt(1 << 3)
	getActionVersionResponseContentFieldDeployed          = big.NewInt(1 << 4)
	getActionVersionResponseContentFieldRuntime           = big.NewInt(1 << 5)
	getActionVersionResponseContentFieldSecrets           = big.NewInt(1 << 6)
	getActionVersionResponseContentFieldStatus            = big.NewInt(1 << 7)
	getActionVersionResponseContentFieldNumber            = big.NewInt(1 << 8)
	getActionVersionResponseContentFieldErrors            = big.NewInt(1 << 9)
	getActionVersionResponseContentFieldAction            = big.NewInt(1 << 10)
	getActionVersionResponseContentFieldBuiltAt           = big.NewInt(1 << 11)
	getActionVersionResponseContentFieldCreatedAt         = big.NewInt(1 << 12)
	getActionVersionResponseContentFieldUpdatedAt         = big.NewInt(1 << 13)
	getActionVersionResponseContentFieldSupportedTriggers = big.NewInt(1 << 14)
)

type GetActionVersionResponseContent struct {
	// The unique id of an action version.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The id of the action to which this version belongs.
	ActionID *string `json:"action_id,omitempty" url:"action_id,omitempty"`
	// The source code of this specific version of the action.
	Code *string `json:"code,omitempty" url:"code,omitempty"`
	// The list of third party npm modules, and their versions, that this specific version depends on.
	Dependencies []*ActionVersionDependency `json:"dependencies,omitempty" url:"dependencies,omitempty"`
	// Indicates if this specific version is the currently one deployed.
	Deployed *bool `json:"deployed,omitempty" url:"deployed,omitempty"`
	// The Node runtime. For example: `node22`
	Runtime *string `json:"runtime,omitempty" url:"runtime,omitempty"`
	// The list of secrets that are included in an action or a version of an action.
	Secrets []*ActionSecretResponse       `json:"secrets,omitempty" url:"secrets,omitempty"`
	Status  *ActionVersionBuildStatusEnum `json:"status,omitempty" url:"status,omitempty"`
	// The index of this version in list of versions for the action.
	Number *float64 `json:"number,omitempty" url:"number,omitempty"`
	// Any errors that occurred while the version was being built.
	Errors []*ActionError `json:"errors,omitempty" url:"errors,omitempty"`
	Action *ActionBase    `json:"action,omitempty" url:"action,omitempty"`
	// The time when this version was built successfully.
	BuiltAt *time.Time `json:"built_at,omitempty" url:"built_at,omitempty"`
	// The time when this version was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The time when a version was updated. Versions are never updated externally. Only Auth0 will update an action version as it is being built.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,omitempty"`
	// The list of triggers that this version supports. At this time, a version can only target a single trigger at a time.
	SupportedTriggers []*ActionTrigger `json:"supported_triggers,omitempty" url:"supported_triggers,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 *GetActionVersionResponseContent) GetID() string {
	if g == nil || g.ID == nil {
		return ""
	}
	return *g.ID
}

func (g *GetActionVersionResponseContent) GetActionID() string {
	if g == nil || g.ActionID == nil {
		return ""
	}
	return *g.ActionID
}

func (g *GetActionVersionResponseContent) GetCode() string {
	if g == nil || g.Code == nil {
		return ""
	}
	return *g.Code
}

func (g *GetActionVersionResponseContent) GetDependencies() []*ActionVersionDependency {
	if g == nil || g.Dependencies == nil {
		return nil
	}
	return g.Dependencies
}

func (g *GetActionVersionResponseContent) GetDeployed() bool {
	if g == nil || g.Deployed == nil {
		return false
	}
	return *g.Deployed
}

func (g *GetActionVersionResponseContent) GetRuntime() string {
	if g == nil || g.Runtime == nil {
		return ""
	}
	return *g.Runtime
}

func (g *GetActionVersionResponseContent) GetSecrets() []*ActionSecretResponse {
	if g == nil || g.Secrets == nil {
		return nil
	}
	return g.Secrets
}

func (g *GetActionVersionResponseContent) GetStatus() ActionVersionBuildStatusEnum {
	if g == nil || g.Status == nil {
		return ""
	}
	return *g.Status
}

func (g *GetActionVersionResponseContent) GetNumber() float64 {
	if g == nil || g.Number == nil {
		return 0
	}
	return *g.Number
}

func (g *GetActionVersionResponseContent) GetErrors() []*ActionError {
	if g == nil || g.Errors == nil {
		return nil
	}
	return g.Errors
}

func (g *GetActionVersionResponseContent) GetAction() ActionBase {
	if g == nil || g.Action == nil {
		return ActionBase{}
	}
	return *g.Action
}

func (g *GetActionVersionResponseContent) GetBuiltAt() time.Time {
	if g == nil || g.BuiltAt == nil {
		return time.Time{}
	}
	return *g.BuiltAt
}

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

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

func (g *GetActionVersionResponseContent) GetSupportedTriggers() []*ActionTrigger {
	if g == nil || g.SupportedTriggers == nil {
		return nil
	}
	return g.SupportedTriggers
}

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

func (g *GetActionVersionResponseContent) 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 *GetActionVersionResponseContent) SetID(id *string) {
	g.ID = id
	g.require(getActionVersionResponseContentFieldID)
}

// SetActionID sets the ActionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetActionVersionResponseContent) SetActionID(actionID *string) {
	g.ActionID = actionID
	g.require(getActionVersionResponseContentFieldActionID)
}

// SetCode sets the Code field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetActionVersionResponseContent) SetCode(code *string) {
	g.Code = code
	g.require(getActionVersionResponseContentFieldCode)
}

// SetDependencies sets the Dependencies field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetActionVersionResponseContent) SetDependencies(dependencies []*ActionVersionDependency) {
	g.Dependencies = dependencies
	g.require(getActionVersionResponseContentFieldDependencies)
}

// SetDeployed sets the Deployed field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetActionVersionResponseContent) SetDeployed(deployed *bool) {
	g.Deployed = deployed
	g.require(getActionVersionResponseContentFieldDeployed)
}

// SetRuntime sets the Runtime field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetActionVersionResponseContent) SetRuntime(runtime *string) {
	g.Runtime = runtime
	g.require(getActionVersionResponseContentFieldRuntime)
}

// SetSecrets sets the Secrets field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetActionVersionResponseContent) SetSecrets(secrets []*ActionSecretResponse) {
	g.Secrets = secrets
	g.require(getActionVersionResponseContentFieldSecrets)
}

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetActionVersionResponseContent) SetStatus(status *ActionVersionBuildStatusEnum) {
	g.Status = status
	g.require(getActionVersionResponseContentFieldStatus)
}

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

// SetErrors sets the Errors field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetActionVersionResponseContent) SetErrors(errors []*ActionError) {
	g.Errors = errors
	g.require(getActionVersionResponseContentFieldErrors)
}

// SetAction sets the Action field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetActionVersionResponseContent) SetAction(action *ActionBase) {
	g.Action = action
	g.require(getActionVersionResponseContentFieldAction)
}

// SetBuiltAt sets the BuiltAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetActionVersionResponseContent) SetBuiltAt(builtAt *time.Time) {
	g.BuiltAt = builtAt
	g.require(getActionVersionResponseContentFieldBuiltAt)
}

// 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 *GetActionVersionResponseContent) SetCreatedAt(createdAt *time.Time) {
	g.CreatedAt = createdAt
	g.require(getActionVersionResponseContentFieldCreatedAt)
}

// 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 *GetActionVersionResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getActionVersionResponseContentFieldUpdatedAt)
}

// SetSupportedTriggers sets the SupportedTriggers field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetActionVersionResponseContent) SetSupportedTriggers(supportedTriggers []*ActionTrigger) {
	g.SupportedTriggers = supportedTriggers
	g.require(getActionVersionResponseContentFieldSupportedTriggers)
}

func (g *GetActionVersionResponseContent) UnmarshalJSON(data []byte) error {
	type embed GetActionVersionResponseContent
	var unmarshaler = struct {
		embed
		BuiltAt   *internal.DateTime `json:"built_at,omitempty"`
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetActionVersionResponseContent(unmarshaler.embed)
	g.BuiltAt = unmarshaler.BuiltAt.TimePtr()
	g.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	g.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetActionVersionResponseContent) MarshalJSON() ([]byte, error) {
	type embed GetActionVersionResponseContent
	var marshaler = struct {
		embed
		BuiltAt   *internal.DateTime `json:"built_at,omitempty"`
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*g),
		BuiltAt:   internal.NewOptionalDateTime(g.BuiltAt),
		CreatedAt: internal.NewOptionalDateTime(g.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(g.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetActionVersionResponseContent) 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 (
	getAculResponseContentFieldTenant                  = big.NewInt(1 << 0)
	getAculResponseContentFieldPrompt                  = big.NewInt(1 << 1)
	getAculResponseContentFieldScreen                  = big.NewInt(1 << 2)
	getAculResponseContentFieldRenderingMode           = big.NewInt(1 << 3)
	getAculResponseContentFieldContextConfiguration    = big.NewInt(1 << 4)
	getAculResponseContentFieldDefaultHeadTagsDisabled = big.NewInt(1 << 5)
	getAculResponseContentFieldHeadTags                = big.NewInt(1 << 6)
	getAculResponseContentFieldFilters                 = big.NewInt(1 << 7)
	getAculResponseContentFieldUsePageTemplate         = big.NewInt(1 << 8)
)

type GetAculResponseContent struct {
	// Tenant ID
	Tenant *string `json:"tenant,omitempty" url:"tenant,omitempty"`
	// Name of the prompt
	Prompt *string `json:"prompt,omitempty" url:"prompt,omitempty"`
	// Name of the screen
	Screen        *string                `json:"screen,omitempty" url:"screen,omitempty"`
	RenderingMode *AculRenderingModeEnum `json:"rendering_mode,omitempty" url:"rendering_mode,omitempty"`
	// Context values to make available
	ContextConfiguration []string `json:"context_configuration,omitempty" url:"context_configuration,omitempty"`
	// Override Universal Login default head tags
	DefaultHeadTagsDisabled *bool `json:"default_head_tags_disabled,omitempty" url:"default_head_tags_disabled,omitempty"`
	// An array of head tags
	HeadTags []*AculHeadTag `json:"head_tags,omitempty" url:"head_tags,omitempty"`
	Filters  *AculFilters   `json:"filters,omitempty" url:"filters,omitempty"`
	// Use page template with ACUL
	UsePageTemplate *bool `json:"use_page_template,omitempty" url:"use_page_template,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (g *GetAculResponseContent) GetTenant() string {
	if g == nil || g.Tenant == nil {
		return ""
	}
	return *g.Tenant
}

func (g *GetAculResponseContent) GetPrompt() string {
	if g == nil || g.Prompt == nil {
		return ""
	}
	return *g.Prompt
}

func (g *GetAculResponseContent) GetScreen() string {
	if g == nil || g.Screen == nil {
		return ""
	}
	return *g.Screen
}

func (g *GetAculResponseContent) GetRenderingMode() AculRenderingModeEnum {
	if g == nil || g.RenderingMode == nil {
		return ""
	}
	return *g.RenderingMode
}

func (g *GetAculResponseContent) GetContextConfiguration() []string {
	if g == nil || g.ContextConfiguration == nil {
		return nil
	}
	return g.ContextConfiguration
}

func (g *GetAculResponseContent) GetDefaultHeadTagsDisabled() bool {
	if g == nil || g.DefaultHeadTagsDisabled == nil {
		return false
	}
	return *g.DefaultHeadTagsDisabled
}

func (g *GetAculResponseContent) GetHeadTags() []*AculHeadTag {
	if g == nil || g.HeadTags == nil {
		return nil
	}
	return g.HeadTags
}

func (g *GetAculResponseContent) GetFilters() AculFilters {
	if g == nil || g.Filters == nil {
		return AculFilters{}
	}
	return *g.Filters
}

func (g *GetAculResponseContent) GetUsePageTemplate() bool {
	if g == nil || g.UsePageTemplate == nil {
		return false
	}
	return *g.UsePageTemplate
}

func (g *GetAculResponseContent) GetExtraProperties() map[string]interface{} {
	return g.ExtraProperties
}

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

// SetTenant sets the Tenant field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetAculResponseContent) SetTenant(tenant *string) {
	g.Tenant = tenant
	g.require(getAculResponseContentFieldTenant)
}

// SetPrompt sets the Prompt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetAculResponseContent) SetPrompt(prompt *string) {
	g.Prompt = prompt
	g.require(getAculResponseContentFieldPrompt)
}

// SetScreen sets the Screen field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetAculResponseContent) SetScreen(screen *string) {
	g.Screen = screen
	g.require(getAculResponseContentFieldScreen)
}

// SetRenderingMode sets the RenderingMode field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetAculResponseContent) SetRenderingMode(renderingMode *AculRenderingModeEnum) {
	g.RenderingMode = renderingMode
	g.require(getAculResponseContentFieldRenderingMode)
}

// SetContextConfiguration sets the ContextConfiguration field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetAculResponseContent) SetContextConfiguration(contextConfiguration []string) {
	g.ContextConfiguration = contextConfiguration
	g.require(getAculResponseContentFieldContextConfiguration)
}

// SetDefaultHeadTagsDisabled sets the DefaultHeadTagsDisabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetAculResponseContent) SetDefaultHeadTagsDisabled(defaultHeadTagsDisabled *bool) {
	g.DefaultHeadTagsDisabled = defaultHeadTagsDisabled
	g.require(getAculResponseContentFieldDefaultHeadTagsDisabled)
}

// SetHeadTags sets the HeadTags field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetAculResponseContent) SetHeadTags(headTags []*AculHeadTag) {
	g.HeadTags = headTags
	g.require(getAculResponseContentFieldHeadTags)
}

// SetFilters sets the Filters field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetAculResponseContent) SetFilters(filters *AculFilters) {
	g.Filters = filters
	g.require(getAculResponseContentFieldFilters)
}

// SetUsePageTemplate sets the UsePageTemplate field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetAculResponseContent) SetUsePageTemplate(usePageTemplate *bool) {
	g.UsePageTemplate = usePageTemplate
	g.require(getAculResponseContentFieldUsePageTemplate)
}

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

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

func (g *GetAculResponseContent) 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 (
	getBrandingDefaultThemeResponseContentFieldBorders        = big.NewInt(1 << 0)
	getBrandingDefaultThemeResponseContentFieldColors         = big.NewInt(1 << 1)
	getBrandingDefaultThemeResponseContentFieldDisplayName    = big.NewInt(1 << 2)
	getBrandingDefaultThemeResponseContentFieldFonts          = big.NewInt(1 << 3)
	getBrandingDefaultThemeResponseContentFieldPageBackground = big.NewInt(1 << 4)
	getBrandingDefaultThemeResponseContentFieldThemeID        = big.NewInt(1 << 5)
	getBrandingDefaultThemeResponseContentFieldWidget         = big.NewInt(1 << 6)
)

type GetBrandingDefaultThemeResponseContent struct {
	Borders *BrandingThemeBorders `json:"borders" url:"borders"`
	Colors  *BrandingThemeColors  `json:"colors" url:"colors"`
	// Display Name
	DisplayName    string                       `json:"displayName" url:"displayName"`
	Fonts          *BrandingThemeFonts          `json:"fonts" url:"fonts"`
	PageBackground *BrandingThemePageBackground `json:"page_background" url:"page_background"`
	// Theme Id
	ThemeID string               `json:"themeId" url:"themeId"`
	Widget  *BrandingThemeWidget `json:"widget" url:"widget"`

	// 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 *GetBrandingDefaultThemeResponseContent) GetBorders() *BrandingThemeBorders {
	if g == nil {
		return nil
	}
	return g.Borders
}

func (g *GetBrandingDefaultThemeResponseContent) GetColors() *BrandingThemeColors {
	if g == nil {
		return nil
	}
	return g.Colors
}

func (g *GetBrandingDefaultThemeResponseContent) GetDisplayName() string {
	if g == nil {
		return ""
	}
	return g.DisplayName
}

func (g *GetBrandingDefaultThemeResponseContent) GetFonts() *BrandingThemeFonts {
	if g == nil {
		return nil
	}
	return g.Fonts
}

func (g *GetBrandingDefaultThemeResponseContent) GetPageBackground() *BrandingThemePageBackground {
	if g == nil {
		return nil
	}
	return g.PageBackground
}

func (g *GetBrandingDefaultThemeResponseContent) GetThemeID() string {
	if g == nil {
		return ""
	}
	return g.ThemeID
}

func (g *GetBrandingDefaultThemeResponseContent) GetWidget() *BrandingThemeWidget {
	if g == nil {
		return nil
	}
	return g.Widget
}

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

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

// SetBorders sets the Borders field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingDefaultThemeResponseContent) SetBorders(borders *BrandingThemeBorders) {
	g.Borders = borders
	g.require(getBrandingDefaultThemeResponseContentFieldBorders)
}

// SetColors sets the Colors field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingDefaultThemeResponseContent) SetColors(colors *BrandingThemeColors) {
	g.Colors = colors
	g.require(getBrandingDefaultThemeResponseContentFieldColors)
}

// SetDisplayName sets the DisplayName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingDefaultThemeResponseContent) SetDisplayName(displayName string) {
	g.DisplayName = displayName
	g.require(getBrandingDefaultThemeResponseContentFieldDisplayName)
}

// SetFonts sets the Fonts field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingDefaultThemeResponseContent) SetFonts(fonts *BrandingThemeFonts) {
	g.Fonts = fonts
	g.require(getBrandingDefaultThemeResponseContentFieldFonts)
}

// SetPageBackground sets the PageBackground field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingDefaultThemeResponseContent) SetPageBackground(pageBackground *BrandingThemePageBackground) {
	g.PageBackground = pageBackground
	g.require(getBrandingDefaultThemeResponseContentFieldPageBackground)
}

// SetThemeID sets the ThemeID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingDefaultThemeResponseContent) SetThemeID(themeID string) {
	g.ThemeID = themeID
	g.require(getBrandingDefaultThemeResponseContentFieldThemeID)
}

// SetWidget sets the Widget field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingDefaultThemeResponseContent) SetWidget(widget *BrandingThemeWidget) {
	g.Widget = widget
	g.require(getBrandingDefaultThemeResponseContentFieldWidget)
}

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

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

func (g *GetBrandingDefaultThemeResponseContent) 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)
}

// Phone provider configuration schema
var (
	getBrandingPhoneProviderResponseContentFieldID            = big.NewInt(1 << 0)
	getBrandingPhoneProviderResponseContentFieldTenant        = big.NewInt(1 << 1)
	getBrandingPhoneProviderResponseContentFieldName          = big.NewInt(1 << 2)
	getBrandingPhoneProviderResponseContentFieldChannel       = big.NewInt(1 << 3)
	getBrandingPhoneProviderResponseContentFieldDisabled      = big.NewInt(1 << 4)
	getBrandingPhoneProviderResponseContentFieldConfiguration = big.NewInt(1 << 5)
	getBrandingPhoneProviderResponseContentFieldCreatedAt     = big.NewInt(1 << 6)
	getBrandingPhoneProviderResponseContentFieldUpdatedAt     = big.NewInt(1 << 7)
)

type GetBrandingPhoneProviderResponseContent struct {
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name of the tenant
	Tenant  *string                   `json:"tenant,omitempty" url:"tenant,omitempty"`
	Name    PhoneProviderNameEnum     `json:"name" url:"name"`
	Channel *PhoneProviderChannelEnum `json:"channel,omitempty" url:"channel,omitempty"`
	// Whether the provider is enabled (false) or disabled (true).
	Disabled      *bool                       `json:"disabled,omitempty" url:"disabled,omitempty"`
	Configuration *PhoneProviderConfiguration `json:"configuration,omitempty" url:"configuration,omitempty"`
	// The provider's creation date and time in ISO 8601 format
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The date and time of the last update to the provider in ISO 8601 format
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,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 *GetBrandingPhoneProviderResponseContent) GetID() string {
	if g == nil || g.ID == nil {
		return ""
	}
	return *g.ID
}

func (g *GetBrandingPhoneProviderResponseContent) GetTenant() string {
	if g == nil || g.Tenant == nil {
		return ""
	}
	return *g.Tenant
}

func (g *GetBrandingPhoneProviderResponseContent) GetName() PhoneProviderNameEnum {
	if g == nil {
		return ""
	}
	return g.Name
}

func (g *GetBrandingPhoneProviderResponseContent) GetDisabled() bool {
	if g == nil || g.Disabled == nil {
		return false
	}
	return *g.Disabled
}

func (g *GetBrandingPhoneProviderResponseContent) GetConfiguration() PhoneProviderConfiguration {
	if g == nil || g.Configuration == nil {
		return PhoneProviderConfiguration{}
	}
	return *g.Configuration
}

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

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

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

func (g *GetBrandingPhoneProviderResponseContent) 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 *GetBrandingPhoneProviderResponseContent) SetID(id *string) {
	g.ID = id
	g.require(getBrandingPhoneProviderResponseContentFieldID)
}

// SetTenant sets the Tenant field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingPhoneProviderResponseContent) SetTenant(tenant *string) {
	g.Tenant = tenant
	g.require(getBrandingPhoneProviderResponseContentFieldTenant)
}

// 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 *GetBrandingPhoneProviderResponseContent) SetName(name PhoneProviderNameEnum) {
	g.Name = name
	g.require(getBrandingPhoneProviderResponseContentFieldName)
}

// SetChannel sets the Channel field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingPhoneProviderResponseContent) SetChannel(channel *PhoneProviderChannelEnum) {
	g.Channel = channel
	g.require(getBrandingPhoneProviderResponseContentFieldChannel)
}

// SetDisabled sets the Disabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingPhoneProviderResponseContent) SetDisabled(disabled *bool) {
	g.Disabled = disabled
	g.require(getBrandingPhoneProviderResponseContentFieldDisabled)
}

// SetConfiguration sets the Configuration field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingPhoneProviderResponseContent) SetConfiguration(configuration *PhoneProviderConfiguration) {
	g.Configuration = configuration
	g.require(getBrandingPhoneProviderResponseContentFieldConfiguration)
}

// 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 *GetBrandingPhoneProviderResponseContent) SetCreatedAt(createdAt *time.Time) {
	g.CreatedAt = createdAt
	g.require(getBrandingPhoneProviderResponseContentFieldCreatedAt)
}

// 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 *GetBrandingPhoneProviderResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getBrandingPhoneProviderResponseContentFieldUpdatedAt)
}

func (g *GetBrandingPhoneProviderResponseContent) UnmarshalJSON(data []byte) error {
	type embed GetBrandingPhoneProviderResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetBrandingPhoneProviderResponseContent(unmarshaler.embed)
	g.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	g.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetBrandingPhoneProviderResponseContent) MarshalJSON() ([]byte, error) {
	type embed GetBrandingPhoneProviderResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*g),
		CreatedAt: internal.NewOptionalDateTime(g.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(g.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetBrandingPhoneProviderResponseContent) 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 (
	getBrandingThemeResponseContentFieldBorders        = big.NewInt(1 << 0)
	getBrandingThemeResponseContentFieldColors         = big.NewInt(1 << 1)
	getBrandingThemeResponseContentFieldDisplayName    = big.NewInt(1 << 2)
	getBrandingThemeResponseContentFieldFonts          = big.NewInt(1 << 3)
	getBrandingThemeResponseContentFieldPageBackground = big.NewInt(1 << 4)
	getBrandingThemeResponseContentFieldThemeID        = big.NewInt(1 << 5)
	getBrandingThemeResponseContentFieldWidget         = big.NewInt(1 << 6)
)

type GetBrandingThemeResponseContent struct {
	Borders *BrandingThemeBorders `json:"borders" url:"borders"`
	Colors  *BrandingThemeColors  `json:"colors" url:"colors"`
	// Display Name
	DisplayName    string                       `json:"displayName" url:"displayName"`
	Fonts          *BrandingThemeFonts          `json:"fonts" url:"fonts"`
	PageBackground *BrandingThemePageBackground `json:"page_background" url:"page_background"`
	// Theme Id
	ThemeID string               `json:"themeId" url:"themeId"`
	Widget  *BrandingThemeWidget `json:"widget" url:"widget"`

	// 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 *GetBrandingThemeResponseContent) GetBorders() *BrandingThemeBorders {
	if g == nil {
		return nil
	}
	return g.Borders
}

func (g *GetBrandingThemeResponseContent) GetColors() *BrandingThemeColors {
	if g == nil {
		return nil
	}
	return g.Colors
}

func (g *GetBrandingThemeResponseContent) GetDisplayName() string {
	if g == nil {
		return ""
	}
	return g.DisplayName
}

func (g *GetBrandingThemeResponseContent) GetFonts() *BrandingThemeFonts {
	if g == nil {
		return nil
	}
	return g.Fonts
}

func (g *GetBrandingThemeResponseContent) GetPageBackground() *BrandingThemePageBackground {
	if g == nil {
		return nil
	}
	return g.PageBackground
}

func (g *GetBrandingThemeResponseContent) GetThemeID() string {
	if g == nil {
		return ""
	}
	return g.ThemeID
}

func (g *GetBrandingThemeResponseContent) GetWidget() *BrandingThemeWidget {
	if g == nil {
		return nil
	}
	return g.Widget
}

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

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

// SetBorders sets the Borders field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingThemeResponseContent) SetBorders(borders *BrandingThemeBorders) {
	g.Borders = borders
	g.require(getBrandingThemeResponseContentFieldBorders)
}

// SetColors sets the Colors field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingThemeResponseContent) SetColors(colors *BrandingThemeColors) {
	g.Colors = colors
	g.require(getBrandingThemeResponseContentFieldColors)
}

// SetDisplayName sets the DisplayName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingThemeResponseContent) SetDisplayName(displayName string) {
	g.DisplayName = displayName
	g.require(getBrandingThemeResponseContentFieldDisplayName)
}

// SetFonts sets the Fonts field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingThemeResponseContent) SetFonts(fonts *BrandingThemeFonts) {
	g.Fonts = fonts
	g.require(getBrandingThemeResponseContentFieldFonts)
}

// SetPageBackground sets the PageBackground field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingThemeResponseContent) SetPageBackground(pageBackground *BrandingThemePageBackground) {
	g.PageBackground = pageBackground
	g.require(getBrandingThemeResponseContentFieldPageBackground)
}

// SetThemeID sets the ThemeID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingThemeResponseContent) SetThemeID(themeID string) {
	g.ThemeID = themeID
	g.require(getBrandingThemeResponseContentFieldThemeID)
}

// SetWidget sets the Widget field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBrandingThemeResponseContent) SetWidget(widget *BrandingThemeWidget) {
	g.Widget = widget
	g.require(getBrandingThemeResponseContentFieldWidget)
}

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

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

func (g *GetBrandingThemeResponseContent) 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 (
	getBreachedPasswordDetectionSettingsResponseContentFieldEnabled                    = big.NewInt(1 << 0)
	getBreachedPasswordDetectionSettingsResponseContentFieldShields                    = big.NewInt(1 << 1)
	getBreachedPasswordDetectionSettingsResponseContentFieldAdminNotificationFrequency = big.NewInt(1 << 2)
	getBreachedPasswordDetectionSettingsResponseContentFieldMethod                     = big.NewInt(1 << 3)
	getBreachedPasswordDetectionSettingsResponseContentFieldStage                      = big.NewInt(1 << 4)
)

type GetBreachedPasswordDetectionSettingsResponseContent struct {
	// Whether or not breached password detection is active.
	Enabled *bool `json:"enabled,omitempty" url:"enabled,omitempty"`
	// Action to take when a breached password is detected during a login.
	//
	//	Possible values: <code>block</code>, <code>user_notification</code>, <code>admin_notification</code>.
	Shields []BreachedPasswordDetectionShieldsEnum `json:"shields,omitempty" url:"shields,omitempty"`
	// When "admin_notification" is enabled, determines how often email notifications are sent.
	//
	//	Possible values: <code>immediately</code>, <code>daily</code>, <code>weekly</code>, <code>monthly</code>.
	AdminNotificationFrequency []BreachedPasswordDetectionAdminNotificationFrequencyEnum `json:"admin_notification_frequency,omitempty" url:"admin_notification_frequency,omitempty"`
	Method                     *BreachedPasswordDetectionMethodEnum                      `json:"method,omitempty" url:"method,omitempty"`
	Stage                      *BreachedPasswordDetectionStage                           `json:"stage,omitempty" url:"stage,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 *GetBreachedPasswordDetectionSettingsResponseContent) GetEnabled() bool {
	if g == nil || g.Enabled == nil {
		return false
	}
	return *g.Enabled
}

func (g *GetBreachedPasswordDetectionSettingsResponseContent) GetShields() []BreachedPasswordDetectionShieldsEnum {
	if g == nil || g.Shields == nil {
		return nil
	}
	return g.Shields
}

func (g *GetBreachedPasswordDetectionSettingsResponseContent) GetAdminNotificationFrequency() []BreachedPasswordDetectionAdminNotificationFrequencyEnum {
	if g == nil || g.AdminNotificationFrequency == nil {
		return nil
	}
	return g.AdminNotificationFrequency
}

func (g *GetBreachedPasswordDetectionSettingsResponseContent) GetMethod() BreachedPasswordDetectionMethodEnum {
	if g == nil || g.Method == nil {
		return ""
	}
	return *g.Method
}

func (g *GetBreachedPasswordDetectionSettingsResponseContent) GetStage() BreachedPasswordDetectionStage {
	if g == nil || g.Stage == nil {
		return BreachedPasswordDetectionStage{}
	}
	return *g.Stage
}

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

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

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBreachedPasswordDetectionSettingsResponseContent) SetEnabled(enabled *bool) {
	g.Enabled = enabled
	g.require(getBreachedPasswordDetectionSettingsResponseContentFieldEnabled)
}

// SetShields sets the Shields field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBreachedPasswordDetectionSettingsResponseContent) SetShields(shields []BreachedPasswordDetectionShieldsEnum) {
	g.Shields = shields
	g.require(getBreachedPasswordDetectionSettingsResponseContentFieldShields)
}

// SetAdminNotificationFrequency sets the AdminNotificationFrequency field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBreachedPasswordDetectionSettingsResponseContent) SetAdminNotificationFrequency(adminNotificationFrequency []BreachedPasswordDetectionAdminNotificationFrequencyEnum) {
	g.AdminNotificationFrequency = adminNotificationFrequency
	g.require(getBreachedPasswordDetectionSettingsResponseContentFieldAdminNotificationFrequency)
}

// SetMethod sets the Method field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBreachedPasswordDetectionSettingsResponseContent) SetMethod(method *BreachedPasswordDetectionMethodEnum) {
	g.Method = method
	g.require(getBreachedPasswordDetectionSettingsResponseContentFieldMethod)
}

// SetStage sets the Stage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBreachedPasswordDetectionSettingsResponseContent) SetStage(stage *BreachedPasswordDetectionStage) {
	g.Stage = stage
	g.require(getBreachedPasswordDetectionSettingsResponseContentFieldStage)
}

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

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

func (g *GetBreachedPasswordDetectionSettingsResponseContent) 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 (
	getBruteForceSettingsResponseContentFieldEnabled     = big.NewInt(1 << 0)
	getBruteForceSettingsResponseContentFieldShields     = big.NewInt(1 << 1)
	getBruteForceSettingsResponseContentFieldAllowlist   = big.NewInt(1 << 2)
	getBruteForceSettingsResponseContentFieldMode        = big.NewInt(1 << 3)
	getBruteForceSettingsResponseContentFieldMaxAttempts = big.NewInt(1 << 4)
)

type GetBruteForceSettingsResponseContent struct {
	// Whether or not brute force attack protections are active.
	Enabled *bool `json:"enabled,omitempty" url:"enabled,omitempty"`
	// Action to take when a brute force protection threshold is violated.
	//
	//	Possible values: <code>block</code>, <code>user_notification</code>.
	Shields []GetBruteForceSettingsResponseContentShieldsItem `json:"shields,omitempty" url:"shields,omitempty"`
	// List of trusted IP addresses that will not have attack protection enforced against them.
	Allowlist []string `json:"allowlist,omitempty" url:"allowlist,omitempty"`
	// Account Lockout: Determines whether or not IP address is used when counting failed attempts.
	//
	//	Possible values: <code>count_per_identifier_and_ip</code>, <code>count_per_identifier</code>.
	Mode *GetBruteForceSettingsResponseContentMode `json:"mode,omitempty" url:"mode,omitempty"`
	// Maximum number of unsuccessful attempts.
	MaxAttempts *int `json:"max_attempts,omitempty" url:"max_attempts,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 *GetBruteForceSettingsResponseContent) GetEnabled() bool {
	if g == nil || g.Enabled == nil {
		return false
	}
	return *g.Enabled
}

func (g *GetBruteForceSettingsResponseContent) GetShields() []GetBruteForceSettingsResponseContentShieldsItem {
	if g == nil || g.Shields == nil {
		return nil
	}
	return g.Shields
}

func (g *GetBruteForceSettingsResponseContent) GetAllowlist() []string {
	if g == nil || g.Allowlist == nil {
		return nil
	}
	return g.Allowlist
}

func (g *GetBruteForceSettingsResponseContent) GetMode() GetBruteForceSettingsResponseContentMode {
	if g == nil || g.Mode == nil {
		return ""
	}
	return *g.Mode
}

func (g *GetBruteForceSettingsResponseContent) GetMaxAttempts() int {
	if g == nil || g.MaxAttempts == nil {
		return 0
	}
	return *g.MaxAttempts
}

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

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

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBruteForceSettingsResponseContent) SetEnabled(enabled *bool) {
	g.Enabled = enabled
	g.require(getBruteForceSettingsResponseContentFieldEnabled)
}

// SetShields sets the Shields field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBruteForceSettingsResponseContent) SetShields(shields []GetBruteForceSettingsResponseContentShieldsItem) {
	g.Shields = shields
	g.require(getBruteForceSettingsResponseContentFieldShields)
}

// SetAllowlist sets the Allowlist field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBruteForceSettingsResponseContent) SetAllowlist(allowlist []string) {
	g.Allowlist = allowlist
	g.require(getBruteForceSettingsResponseContentFieldAllowlist)
}

// SetMode sets the Mode field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBruteForceSettingsResponseContent) SetMode(mode *GetBruteForceSettingsResponseContentMode) {
	g.Mode = mode
	g.require(getBruteForceSettingsResponseContentFieldMode)
}

// SetMaxAttempts sets the MaxAttempts field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetBruteForceSettingsResponseContent) SetMaxAttempts(maxAttempts *int) {
	g.MaxAttempts = maxAttempts
	g.require(getBruteForceSettingsResponseContentFieldMaxAttempts)
}

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

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

func (g *GetBruteForceSettingsResponseContent) 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)
}

// Account Lockout: Determines whether or not IP address is used when counting failed attempts.
//
//	Possible values: <code>count_per_identifier_and_ip</code>, <code>count_per_identifier</code>.
type GetBruteForceSettingsResponseContentMode string

const (
	GetBruteForceSettingsResponseContentModeCountPerIdentifierAndIP GetBruteForceSettingsResponseContentMode = "count_per_identifier_and_ip"
	GetBruteForceSettingsResponseContentModeCountPerIdentifier      GetBruteForceSettingsResponseContentMode = "count_per_identifier"
)

func NewGetBruteForceSettingsResponseContentModeFromString(s string) (GetBruteForceSettingsResponseContentMode, error) {
	switch s {
	case "count_per_identifier_and_ip":
		return GetBruteForceSettingsResponseContentModeCountPerIdentifierAndIP, nil
	case "count_per_identifier":
		return GetBruteForceSettingsResponseContentModeCountPerIdentifier, nil
	}
	var t GetBruteForceSettingsResponseContentMode
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

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

type GetBruteForceSettingsResponseContentShieldsItem string

const (
	GetBruteForceSettingsResponseContentShieldsItemBlock            GetBruteForceSettingsResponseContentShieldsItem = "block"
	GetBruteForceSettingsResponseContentShieldsItemUserNotification GetBruteForceSettingsResponseContentShieldsItem = "user_notification"
)

func NewGetBruteForceSettingsResponseContentShieldsItemFromString(s string) (GetBruteForceSettingsResponseContentShieldsItem, error) {
	switch s {
	case "block":
		return GetBruteForceSettingsResponseContentShieldsItemBlock, nil
	case "user_notification":
		return GetBruteForceSettingsResponseContentShieldsItemUserNotification, nil
	}
	var t GetBruteForceSettingsResponseContentShieldsItem
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

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

var (
	getClientCredentialResponseContentFieldID               = big.NewInt(1 << 0)
	getClientCredentialResponseContentFieldName             = big.NewInt(1 << 1)
	getClientCredentialResponseContentFieldKid              = big.NewInt(1 << 2)
	getClientCredentialResponseContentFieldAlg              = big.NewInt(1 << 3)
	getClientCredentialResponseContentFieldCredentialType   = big.NewInt(1 << 4)
	getClientCredentialResponseContentFieldSubjectDn        = big.NewInt(1 << 5)
	getClientCredentialResponseContentFieldThumbprintSha256 = big.NewInt(1 << 6)
	getClientCredentialResponseContentFieldCreatedAt        = big.NewInt(1 << 7)
	getClientCredentialResponseContentFieldUpdatedAt        = big.NewInt(1 << 8)
	getClientCredentialResponseContentFieldExpiresAt        = big.NewInt(1 << 9)
)

type GetClientCredentialResponseContent struct {
	// ID of the credential. Generated on creation.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name given to the credential by the user.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// The key identifier of the credential, generated on creation.
	Kid            *string                        `json:"kid,omitempty" url:"kid,omitempty"`
	Alg            *ClientCredentialAlgorithmEnum `json:"alg,omitempty" url:"alg,omitempty"`
	CredentialType *ClientCredentialTypeEnum      `json:"credential_type,omitempty" url:"credential_type,omitempty"`
	// The X509 certificate's Subject Distinguished Name
	SubjectDn *string `json:"subject_dn,omitempty" url:"subject_dn,omitempty"`
	// The X509 certificate's SHA256 thumbprint
	ThumbprintSha256 *string `json:"thumbprint_sha256,omitempty" url:"thumbprint_sha256,omitempty"`
	// The ISO 8601 formatted date the credential was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The ISO 8601 formatted date the credential was updated.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,omitempty"`
	// The ISO 8601 formatted date representing the expiration of the credential.
	ExpiresAt *time.Time `json:"expires_at,omitempty" url:"expires_at,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

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

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

func (g *GetClientCredentialResponseContent) GetKid() string {
	if g == nil || g.Kid == nil {
		return ""
	}
	return *g.Kid
}

func (g *GetClientCredentialResponseContent) GetAlg() ClientCredentialAlgorithmEnum {
	if g == nil || g.Alg == nil {
		return ""
	}
	return *g.Alg
}

func (g *GetClientCredentialResponseContent) GetCredentialType() ClientCredentialTypeEnum {
	if g == nil || g.CredentialType == nil {
		return ""
	}
	return *g.CredentialType
}

func (g *GetClientCredentialResponseContent) GetSubjectDn() string {
	if g == nil || g.SubjectDn == nil {
		return ""
	}
	return *g.SubjectDn
}

func (g *GetClientCredentialResponseContent) GetThumbprintSha256() string {
	if g == nil || g.ThumbprintSha256 == nil {
		return ""
	}
	return *g.ThumbprintSha256
}

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

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

func (g *GetClientCredentialResponseContent) GetExpiresAt() time.Time {
	if g == nil || g.ExpiresAt == nil {
		return time.Time{}
	}
	return *g.ExpiresAt
}

func (g *GetClientCredentialResponseContent) GetExtraProperties() map[string]interface{} {
	return g.ExtraProperties
}

func (g *GetClientCredentialResponseContent) 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 *GetClientCredentialResponseContent) SetID(id *string) {
	g.ID = id
	g.require(getClientCredentialResponseContentFieldID)
}

// 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 *GetClientCredentialResponseContent) SetName(name *string) {
	g.Name = name
	g.require(getClientCredentialResponseContentFieldName)
}

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetClientCredentialResponseContent) SetKid(kid *string) {
	g.Kid = kid
	g.require(getClientCredentialResponseContentFieldKid)
}

// SetAlg sets the Alg field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetClientCredentialResponseContent) SetAlg(alg *ClientCredentialAlgorithmEnum) {
	g.Alg = alg
	g.require(getClientCredentialResponseContentFieldAlg)
}

// SetCredentialType sets the CredentialType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetClientCredentialResponseContent) SetCredentialType(credentialType *ClientCredentialTypeEnum) {
	g.CredentialType = credentialType
	g.require(getClientCredentialResponseContentFieldCredentialType)
}

// SetSubjectDn sets the SubjectDn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetClientCredentialResponseContent) SetSubjectDn(subjectDn *string) {
	g.SubjectDn = subjectDn
	g.require(getClientCredentialResponseContentFieldSubjectDn)
}

// SetThumbprintSha256 sets the ThumbprintSha256 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetClientCredentialResponseContent) SetThumbprintSha256(thumbprintSha256 *string) {
	g.ThumbprintSha256 = thumbprintSha256
	g.require(getClientCredentialResponseContentFieldThumbprintSha256)
}

// 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 *GetClientCredentialResponseContent) SetCreatedAt(createdAt *time.Time) {
	g.CreatedAt = createdAt
	g.require(getClientCredentialResponseContentFieldCreatedAt)
}

// 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 *GetClientCredentialResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getClientCredentialResponseContentFieldUpdatedAt)
}

// SetExpiresAt sets the ExpiresAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetClientCredentialResponseContent) SetExpiresAt(expiresAt *time.Time) {
	g.ExpiresAt = expiresAt
	g.require(getClientCredentialResponseContentFieldExpiresAt)
}

func (g *GetClientCredentialResponseContent) UnmarshalJSON(data []byte) error {
	type embed GetClientCredentialResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetClientCredentialResponseContent(unmarshaler.embed)
	g.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	g.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	g.ExpiresAt = unmarshaler.ExpiresAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.ExtraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetClientCredentialResponseContent) MarshalJSON() ([]byte, error) {
	type embed GetClientCredentialResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed:     embed(*g),
		CreatedAt: internal.NewOptionalDateTime(g.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(g.UpdatedAt),
		ExpiresAt: internal.NewOptionalDateTime(g.ExpiresAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, g.ExtraProperties)
}

func (g *GetClientCredentialResponseContent) 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 (
	getConnectionEnabledClientsResponseContentFieldClients = big.NewInt(1 << 0)
	getConnectionEnabledClientsResponseContentFieldNext    = big.NewInt(1 << 1)
)

type GetConnectionEnabledClientsResponseContent struct {
	// Clients for which the connection is enabled
	Clients []*ConnectionEnabledClient `json:"clients" url:"clients"`
	// Encoded next token
	Next *string `json:"next,omitempty" url:"next,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (g *GetConnectionEnabledClientsResponseContent) GetClients() []*ConnectionEnabledClient {
	if g == nil {
		return nil
	}
	return g.Clients
}

func (g *GetConnectionEnabledClientsResponseContent) GetNext() string {
	if g == nil || g.Next == nil {
		return ""
	}
	return *g.Next
}

func (g *GetConnectionEnabledClientsResponseContent) GetExtraProperties() map[string]interface{} {
	return g.ExtraProperties
}

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

// SetClients sets the Clients field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetConnectionEnabledClientsResponseContent) SetClients(clients []*ConnectionEnabledClient) {
	g.Clients = clients
	g.require(getConnectionEnabledClientsResponseContentFieldClients)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetConnectionEnabledClientsResponseContent) SetNext(next *string) {
	g.Next = next
	g.require(getConnectionEnabledClientsResponseContentFieldNext)
}

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

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

func (g *GetConnectionEnabledClientsResponseContent) 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)
}

// JWKS representing an array of custom public signing keys.
var (
	getCustomSigningKeysResponseContentFieldKeys = big.NewInt(1 << 0)
)

type GetCustomSigningKeysResponseContent struct {
	// An array of custom public signing keys.
	Keys []*CustomSigningKeyJwk `json:"keys,omitempty" url:"keys,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 *GetCustomSigningKeysResponseContent) GetKeys() []*CustomSigningKeyJwk {
	if g == nil || g.Keys == nil {
		return nil
	}
	return g.Keys
}

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

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

// SetKeys sets the Keys field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetCustomSigningKeysResponseContent) SetKeys(keys []*CustomSigningKeyJwk) {
	g.Keys = keys
	g.require(getCustomSigningKeysResponseContentFieldKeys)
}

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

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

func (g *GetCustomSigningKeysResponseContent) 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)
}

// An object containing custom dictionaries for a group of screens.
type GetCustomTextsByLanguageResponseContent = map[string]interface{}

var (
	getEmailProviderResponseContentFieldName               = big.NewInt(1 << 0)
	getEmailProviderResponseContentFieldEnabled            = big.NewInt(1 << 1)
	getEmailProviderResponseContentFieldDefaultFromAddress = big.NewInt(1 << 2)
	getEmailProviderResponseContentFieldCredentials        = big.NewInt(1 << 3)
	getEmailProviderResponseContentFieldSettings           = big.NewInt(1 << 4)
)

type GetEmailProviderResponseContent struct {
	// Name of the email provider. Can be `mailgun`, `mandrill`, `sendgrid`, `ses`, `sparkpost`, `smtp`, `azure_cs`, `ms365`, or `custom`.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Whether the provider is enabled (true) or disabled (false).
	Enabled *bool `json:"enabled,omitempty" url:"enabled,omitempty"`
	// Email address to use as "from" when no other address specified.
	DefaultFromAddress *string                   `json:"default_from_address,omitempty" url:"default_from_address,omitempty"`
	Credentials        *EmailProviderCredentials `json:"credentials,omitempty" url:"credentials,omitempty"`
	Settings           *EmailProviderSettings    `json:"settings,omitempty" url:"settings,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 *GetEmailProviderResponseContent) GetName() string {
	if g == nil || g.Name == nil {
		return ""
	}
	return *g.Name
}

func (g *GetEmailProviderResponseContent) GetEnabled() bool {
	if g == nil || g.Enabled == nil {
		return false
	}
	return *g.Enabled
}

func (g *GetEmailProviderResponseContent) GetDefaultFromAddress() string {
	if g == nil || g.DefaultFromAddress == nil {
		return ""
	}
	return *g.DefaultFromAddress
}

func (g *GetEmailProviderResponseContent) GetCredentials() EmailProviderCredentials {
	if g == nil || g.Credentials == nil {
		return EmailProviderCredentials{}
	}
	return *g.Credentials
}

func (g *GetEmailProviderResponseContent) GetSettings() EmailProviderSettings {
	if g == nil || g.Settings == nil {
		return nil
	}
	return *g.Settings
}

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

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

// 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 *GetEmailProviderResponseContent) SetName(name *string) {
	g.Name = name
	g.require(getEmailProviderResponseContentFieldName)
}

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetEmailProviderResponseContent) SetEnabled(enabled *bool) {
	g.Enabled = enabled
	g.require(getEmailProviderResponseContentFieldEnabled)
}

// SetDefaultFromAddress sets the DefaultFromAddress field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetEmailProviderResponseContent) SetDefaultFromAddress(defaultFromAddress *string) {
	g.DefaultFromAddress = defaultFromAddress
	g.require(getEmailProviderResponseContentFieldDefaultFromAddress)
}

// SetCredentials sets the Credentials field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetEmailProviderResponseContent) SetCredentials(credentials *EmailProviderCredentials) {
	g.Credentials = credentials
	g.require(getEmailProviderResponseContentFieldCredentials)
}

// SetSettings sets the Settings field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetEmailProviderResponseContent) SetSettings(settings *EmailProviderSettings) {
	g.Settings = settings
	g.require(getEmailProviderResponseContentFieldSettings)
}

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

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

func (g *GetEmailProviderResponseContent) 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)
}

// Encryption key
var (
	getEncryptionKeyResponseContentFieldKid       = big.NewInt(1 << 0)
	getEncryptionKeyResponseContentFieldType      = big.NewInt(1 << 1)
	getEncryptionKeyResponseContentFieldState     = big.NewInt(1 << 2)
	getEncryptionKeyResponseContentFieldCreatedAt = big.NewInt(1 << 3)
	getEncryptionKeyResponseContentFieldUpdatedAt = big.NewInt(1 << 4)
	getEncryptionKeyResponseContentFieldParentKid = big.NewInt(1 << 5)
	getEncryptionKeyResponseContentFieldPublicKey = big.NewInt(1 << 6)
)

type GetEncryptionKeyResponseContent struct {
	// Key ID
	Kid   string             `json:"kid" url:"kid"`
	Type  EncryptionKeyType  `json:"type" url:"type"`
	State EncryptionKeyState `json:"state" url:"state"`
	// Key creation timestamp
	CreatedAt time.Time `json:"created_at" url:"created_at"`
	// Key update timestamp
	UpdatedAt time.Time `json:"updated_at" url:"updated_at"`
	// ID of parent wrapping key
	ParentKid string `json:"parent_kid" url:"parent_kid"`
	// Public key in PEM format
	PublicKey *string `json:"public_key,omitempty" url:"public_key,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 *GetEncryptionKeyResponseContent) GetKid() string {
	if g == nil {
		return ""
	}
	return g.Kid
}

func (g *GetEncryptionKeyResponseContent) GetType() EncryptionKeyType {
	if g == nil {
		return ""
	}
	return g.Type
}

func (g *GetEncryptionKeyResponseContent) GetState() EncryptionKeyState {
	if g == nil {
		return ""
	}
	return g.State
}

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

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

func (g *GetEncryptionKeyResponseContent) GetParentKid() string {
	if g == nil {
		return ""
	}
	return g.ParentKid
}

func (g *GetEncryptionKeyResponseContent) GetPublicKey() string {
	if g == nil || g.PublicKey == nil {
		return ""
	}
	return *g.PublicKey
}

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

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

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetEncryptionKeyResponseContent) SetKid(kid string) {
	g.Kid = kid
	g.require(getEncryptionKeyResponseContentFieldKid)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetEncryptionKeyResponseContent) SetType(type_ EncryptionKeyType) {
	g.Type = type_
	g.require(getEncryptionKeyResponseContentFieldType)
}

// SetState sets the State field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetEncryptionKeyResponseContent) SetState(state EncryptionKeyState) {
	g.State = state
	g.require(getEncryptionKeyResponseContentFieldState)
}

// 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 *GetEncryptionKeyResponseContent) SetCreatedAt(createdAt time.Time) {
	g.CreatedAt = createdAt
	g.require(getEncryptionKeyResponseContentFieldCreatedAt)
}

// 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 *GetEncryptionKeyResponseContent) SetUpdatedAt(updatedAt time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getEncryptionKeyResponseContentFieldUpdatedAt)
}

// SetParentKid sets the ParentKid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetEncryptionKeyResponseContent) SetParentKid(parentKid string) {
	g.ParentKid = parentKid
	g.require(getEncryptionKeyResponseContentFieldParentKid)
}

// SetPublicKey sets the PublicKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetEncryptionKeyResponseContent) SetPublicKey(publicKey *string) {
	g.PublicKey = publicKey
	g.require(getEncryptionKeyResponseContentFieldPublicKey)
}

func (g *GetEncryptionKeyResponseContent) UnmarshalJSON(data []byte) error {
	type embed GetEncryptionKeyResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at"`
		UpdatedAt *internal.DateTime `json:"updated_at"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetEncryptionKeyResponseContent(unmarshaler.embed)
	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 *GetEncryptionKeyResponseContent) MarshalJSON() ([]byte, error) {
	type embed GetEncryptionKeyResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at"`
		UpdatedAt *internal.DateTime `json:"updated_at"`
	}{
		embed:     embed(*g),
		CreatedAt: internal.NewDateTime(g.CreatedAt),
		UpdatedAt: internal.NewDateTime(g.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetEncryptionKeyResponseContent) 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)
}

// Metadata about a specific attempt to deliver an event
var (
	getEventStreamDeliveryHistoryResponseContentFieldID            = big.NewInt(1 << 0)
	getEventStreamDeliveryHistoryResponseContentFieldEventStreamID = big.NewInt(1 << 1)
	getEventStreamDeliveryHistoryResponseContentFieldStatus        = big.NewInt(1 << 2)
	getEventStreamDeliveryHistoryResponseContentFieldEventType     = big.NewInt(1 << 3)
	getEventStreamDeliveryHistoryResponseContentFieldAttempts      = big.NewInt(1 << 4)
	getEventStreamDeliveryHistoryResponseContentFieldEvent         = big.NewInt(1 << 5)
)

type GetEventStreamDeliveryHistoryResponseContent struct {
	// Unique identifier for the delivery
	ID string `json:"id" url:"id"`
	// Unique identifier for the event stream.
	EventStreamID string                           `json:"event_stream_id" url:"event_stream_id"`
	Status        EventStreamDeliveryStatusEnum    `json:"status" url:"status"`
	EventType     EventStreamDeliveryEventTypeEnum `json:"event_type" url:"event_type"`
	// Results of delivery attempts
	Attempts []*EventStreamDeliveryAttempt `json:"attempts" url:"attempts"`
	Event    *EventStreamCloudEvent        `json:"event,omitempty" url:"event,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 *GetEventStreamDeliveryHistoryResponseContent) GetID() string {
	if g == nil {
		return ""
	}
	return g.ID
}

func (g *GetEventStreamDeliveryHistoryResponseContent) GetEventStreamID() string {
	if g == nil {
		return ""
	}
	return g.EventStreamID
}

func (g *GetEventStreamDeliveryHistoryResponseContent) GetEventType() EventStreamDeliveryEventTypeEnum {
	if g == nil {
		return ""
	}
	return g.EventType
}

func (g *GetEventStreamDeliveryHistoryResponseContent) GetAttempts() []*EventStreamDeliveryAttempt {
	if g == nil {
		return nil
	}
	return g.Attempts
}

func (g *GetEventStreamDeliveryHistoryResponseContent) GetEvent() EventStreamCloudEvent {
	if g == nil || g.Event == nil {
		return EventStreamCloudEvent{}
	}
	return *g.Event
}

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

func (g *GetEventStreamDeliveryHistoryResponseContent) 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 *GetEventStreamDeliveryHistoryResponseContent) SetID(id string) {
	g.ID = id
	g.require(getEventStreamDeliveryHistoryResponseContentFieldID)
}

// SetEventStreamID sets the EventStreamID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetEventStreamDeliveryHistoryResponseContent) SetEventStreamID(eventStreamID string) {
	g.EventStreamID = eventStreamID
	g.require(getEventStreamDeliveryHistoryResponseContentFieldEventStreamID)
}

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetEventStreamDeliveryHistoryResponseContent) SetStatus(status EventStreamDeliveryStatusEnum) {
	g.Status = status
	g.require(getEventStreamDeliveryHistoryResponseContentFieldStatus)
}

// SetEventType sets the EventType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetEventStreamDeliveryHistoryResponseContent) SetEventType(eventType EventStreamDeliveryEventTypeEnum) {
	g.EventType = eventType
	g.require(getEventStreamDeliveryHistoryResponseContentFieldEventType)
}

// SetAttempts sets the Attempts field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetEventStreamDeliveryHistoryResponseContent) SetAttempts(attempts []*EventStreamDeliveryAttempt) {
	g.Attempts = attempts
	g.require(getEventStreamDeliveryHistoryResponseContentFieldAttempts)
}

// SetEvent sets the Event field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetEventStreamDeliveryHistoryResponseContent) SetEvent(event *EventStreamCloudEvent) {
	g.Event = event
	g.require(getEventStreamDeliveryHistoryResponseContentFieldEvent)
}

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

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

func (g *GetEventStreamDeliveryHistoryResponseContent) 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 (
	getFlowExecutionResponseContentFieldID        = big.NewInt(1 << 0)
	getFlowExecutionResponseContentFieldTraceID   = big.NewInt(1 << 1)
	getFlowExecutionResponseContentFieldJourneyID = big.NewInt(1 << 2)
	getFlowExecutionResponseContentFieldStatus    = big.NewInt(1 << 3)
	getFlowExecutionResponseContentFieldDebug     = big.NewInt(1 << 4)
	getFlowExecutionResponseContentFieldCreatedAt = big.NewInt(1 << 5)
	getFlowExecutionResponseContentFieldUpdatedAt = big.NewInt(1 << 6)
	getFlowExecutionResponseContentFieldStartedAt = big.NewInt(1 << 7)
	getFlowExecutionResponseContentFieldEndedAt   = big.NewInt(1 << 8)
)

type GetFlowExecutionResponseContent struct {
	// Flow execution identifier
	ID string `json:"id" url:"id"`
	// Trace id
	TraceID string `json:"trace_id" url:"trace_id"`
	// Journey id
	JourneyID *string `json:"journey_id,omitempty" url:"journey_id,omitempty"`
	// Execution status
	Status string              `json:"status" url:"status"`
	Debug  *FlowExecutionDebug `json:"debug,omitempty" url:"debug,omitempty"`
	// The ISO 8601 formatted date when this flow execution was created.
	CreatedAt time.Time `json:"created_at" url:"created_at"`
	// The ISO 8601 formatted date when this flow execution was updated.
	UpdatedAt time.Time `json:"updated_at" url:"updated_at"`
	// The ISO 8601 formatted date when this flow execution started.
	StartedAt *time.Time `json:"started_at,omitempty" url:"started_at,omitempty"`
	// The ISO 8601 formatted date when this flow execution ended.
	EndedAt *time.Time `json:"ended_at,omitempty" url:"ended_at,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 *GetFlowExecutionResponseContent) GetID() string {
	if g == nil {
		return ""
	}
	return g.ID
}

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

func (g *GetFlowExecutionResponseContent) GetJourneyID() string {
	if g == nil || g.JourneyID == nil {
		return ""
	}
	return *g.JourneyID
}

func (g *GetFlowExecutionResponseContent) GetStatus() string {
	if g == nil {
		return ""
	}
	return g.Status
}

func (g *GetFlowExecutionResponseContent) GetDebug() FlowExecutionDebug {
	if g == nil || g.Debug == nil {
		return nil
	}
	return *g.Debug
}

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

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

func (g *GetFlowExecutionResponseContent) GetStartedAt() time.Time {
	if g == nil || g.StartedAt == nil {
		return time.Time{}
	}
	return *g.StartedAt
}

func (g *GetFlowExecutionResponseContent) GetEndedAt() time.Time {
	if g == nil || g.EndedAt == nil {
		return time.Time{}
	}
	return *g.EndedAt
}

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

func (g *GetFlowExecutionResponseContent) 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 *GetFlowExecutionResponseContent) SetID(id string) {
	g.ID = id
	g.require(getFlowExecutionResponseContentFieldID)
}

// 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 *GetFlowExecutionResponseContent) SetTraceID(traceID string) {
	g.TraceID = traceID
	g.require(getFlowExecutionResponseContentFieldTraceID)
}

// SetJourneyID sets the JourneyID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetFlowExecutionResponseContent) SetJourneyID(journeyID *string) {
	g.JourneyID = journeyID
	g.require(getFlowExecutionResponseContentFieldJourneyID)
}

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetFlowExecutionResponseContent) SetStatus(status string) {
	g.Status = status
	g.require(getFlowExecutionResponseContentFieldStatus)
}

// SetDebug sets the Debug field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetFlowExecutionResponseContent) SetDebug(debug *FlowExecutionDebug) {
	g.Debug = debug
	g.require(getFlowExecutionResponseContentFieldDebug)
}

// 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 *GetFlowExecutionResponseContent) SetCreatedAt(createdAt time.Time) {
	g.CreatedAt = createdAt
	g.require(getFlowExecutionResponseContentFieldCreatedAt)
}

// 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 *GetFlowExecutionResponseContent) SetUpdatedAt(updatedAt time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getFlowExecutionResponseContentFieldUpdatedAt)
}

// SetStartedAt sets the StartedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetFlowExecutionResponseContent) SetStartedAt(startedAt *time.Time) {
	g.StartedAt = startedAt
	g.require(getFlowExecutionResponseContentFieldStartedAt)
}

// SetEndedAt sets the EndedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetFlowExecutionResponseContent) SetEndedAt(endedAt *time.Time) {
	g.EndedAt = endedAt
	g.require(getFlowExecutionResponseContentFieldEndedAt)
}

func (g *GetFlowExecutionResponseContent) UnmarshalJSON(data []byte) error {
	type embed GetFlowExecutionResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at"`
		UpdatedAt *internal.DateTime `json:"updated_at"`
		StartedAt *internal.DateTime `json:"started_at,omitempty"`
		EndedAt   *internal.DateTime `json:"ended_at,omitempty"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetFlowExecutionResponseContent(unmarshaler.embed)
	g.CreatedAt = unmarshaler.CreatedAt.Time()
	g.UpdatedAt = unmarshaler.UpdatedAt.Time()
	g.StartedAt = unmarshaler.StartedAt.TimePtr()
	g.EndedAt = unmarshaler.EndedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetFlowExecutionResponseContent) MarshalJSON() ([]byte, error) {
	type embed GetFlowExecutionResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at"`
		UpdatedAt *internal.DateTime `json:"updated_at"`
		StartedAt *internal.DateTime `json:"started_at,omitempty"`
		EndedAt   *internal.DateTime `json:"ended_at,omitempty"`
	}{
		embed:     embed(*g),
		CreatedAt: internal.NewDateTime(g.CreatedAt),
		UpdatedAt: internal.NewDateTime(g.UpdatedAt),
		StartedAt: internal.NewOptionalDateTime(g.StartedAt),
		EndedAt:   internal.NewOptionalDateTime(g.EndedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetFlowExecutionResponseContent) 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 (
	getFlowsVaultConnectionResponseContentFieldID          = big.NewInt(1 << 0)
	getFlowsVaultConnectionResponseContentFieldAppID       = big.NewInt(1 << 1)
	getFlowsVaultConnectionResponseContentFieldEnvironment = big.NewInt(1 << 2)
	getFlowsVaultConnectionResponseContentFieldName        = big.NewInt(1 << 3)
	getFlowsVaultConnectionResponseContentFieldAccountName = big.NewInt(1 << 4)
	getFlowsVaultConnectionResponseContentFieldReady       = big.NewInt(1 << 5)
	getFlowsVaultConnectionResponseContentFieldCreatedAt   = big.NewInt(1 << 6)
	getFlowsVaultConnectionResponseContentFieldUpdatedAt   = big.NewInt(1 << 7)
	getFlowsVaultConnectionResponseContentFieldRefreshedAt = big.NewInt(1 << 8)
	getFlowsVaultConnectionResponseContentFieldFingerprint = big.NewInt(1 << 9)
)

type GetFlowsVaultConnectionResponseContent struct {
	// Flows Vault Connection identifier.
	ID string `json:"id" url:"id"`
	// Flows Vault Connection app identifier.
	AppID string `json:"app_id" url:"app_id"`
	// Flows Vault Connection environment.
	Environment *string `json:"environment,omitempty" url:"environment,omitempty"`
	// Flows Vault Connection name.
	Name string `json:"name" url:"name"`
	// Flows Vault Connection custom account name.
	AccountName *string `json:"account_name,omitempty" url:"account_name,omitempty"`
	// Whether the Flows Vault Connection is configured.
	Ready bool `json:"ready" url:"ready"`
	// The ISO 8601 formatted date when this Flows Vault Connection was created.
	CreatedAt time.Time `json:"created_at" url:"created_at"`
	// The ISO 8601 formatted date when this Flows Vault Connection was updated.
	UpdatedAt time.Time `json:"updated_at" url:"updated_at"`
	// The ISO 8601 formatted date when this Flows Vault Connection was refreshed.
	RefreshedAt *time.Time `json:"refreshed_at,omitempty" url:"refreshed_at,omitempty"`
	Fingerprint string     `json:"fingerprint" url:"fingerprint"`

	// 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 *GetFlowsVaultConnectionResponseContent) GetID() string {
	if g == nil {
		return ""
	}
	return g.ID
}

func (g *GetFlowsVaultConnectionResponseContent) GetAppID() string {
	if g == nil {
		return ""
	}
	return g.AppID
}

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

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

func (g *GetFlowsVaultConnectionResponseContent) GetAccountName() string {
	if g == nil || g.AccountName == nil {
		return ""
	}
	return *g.AccountName
}

func (g *GetFlowsVaultConnectionResponseContent) GetReady() bool {
	if g == nil {
		return false
	}
	return g.Ready
}

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

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

func (g *GetFlowsVaultConnectionResponseContent) GetRefreshedAt() time.Time {
	if g == nil || g.RefreshedAt == nil {
		return time.Time{}
	}
	return *g.RefreshedAt
}

func (g *GetFlowsVaultConnectionResponseContent) GetFingerprint() string {
	if g == nil {
		return ""
	}
	return g.Fingerprint
}

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

func (g *GetFlowsVaultConnectionResponseContent) 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 *GetFlowsVaultConnectionResponseContent) SetID(id string) {
	g.ID = id
	g.require(getFlowsVaultConnectionResponseContentFieldID)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetFlowsVaultConnectionResponseContent) SetAppID(appID string) {
	g.AppID = appID
	g.require(getFlowsVaultConnectionResponseContentFieldAppID)
}

// 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 *GetFlowsVaultConnectionResponseContent) SetEnvironment(environment *string) {
	g.Environment = environment
	g.require(getFlowsVaultConnectionResponseContentFieldEnvironment)
}

// 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 *GetFlowsVaultConnectionResponseContent) SetName(name string) {
	g.Name = name
	g.require(getFlowsVaultConnectionResponseContentFieldName)
}

// SetAccountName sets the AccountName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetFlowsVaultConnectionResponseContent) SetAccountName(accountName *string) {
	g.AccountName = accountName
	g.require(getFlowsVaultConnectionResponseContentFieldAccountName)
}

// SetReady sets the Ready field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetFlowsVaultConnectionResponseContent) SetReady(ready bool) {
	g.Ready = ready
	g.require(getFlowsVaultConnectionResponseContentFieldReady)
}

// 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 *GetFlowsVaultConnectionResponseContent) SetCreatedAt(createdAt time.Time) {
	g.CreatedAt = createdAt
	g.require(getFlowsVaultConnectionResponseContentFieldCreatedAt)
}

// 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 *GetFlowsVaultConnectionResponseContent) SetUpdatedAt(updatedAt time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getFlowsVaultConnectionResponseContentFieldUpdatedAt)
}

// SetRefreshedAt sets the RefreshedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetFlowsVaultConnectionResponseContent) SetRefreshedAt(refreshedAt *time.Time) {
	g.RefreshedAt = refreshedAt
	g.require(getFlowsVaultConnectionResponseContentFieldRefreshedAt)
}

// SetFingerprint sets the Fingerprint field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetFlowsVaultConnectionResponseContent) SetFingerprint(fingerprint string) {
	g.Fingerprint = fingerprint
	g.require(getFlowsVaultConnectionResponseContentFieldFingerprint)
}

func (g *GetFlowsVaultConnectionResponseContent) UnmarshalJSON(data []byte) error {
	type embed GetFlowsVaultConnectionResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt   *internal.DateTime `json:"created_at"`
		UpdatedAt   *internal.DateTime `json:"updated_at"`
		RefreshedAt *internal.DateTime `json:"refreshed_at,omitempty"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetFlowsVaultConnectionResponseContent(unmarshaler.embed)
	g.CreatedAt = unmarshaler.CreatedAt.Time()
	g.UpdatedAt = unmarshaler.UpdatedAt.Time()
	g.RefreshedAt = unmarshaler.RefreshedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetFlowsVaultConnectionResponseContent) MarshalJSON() ([]byte, error) {
	type embed GetFlowsVaultConnectionResponseContent
	var marshaler = struct {
		embed
		CreatedAt   *internal.DateTime `json:"created_at"`
		UpdatedAt   *internal.DateTime `json:"updated_at"`
		RefreshedAt *internal.DateTime `json:"refreshed_at,omitempty"`
	}{
		embed:       embed(*g),
		CreatedAt:   internal.NewDateTime(g.CreatedAt),
		UpdatedAt:   internal.NewDateTime(g.UpdatedAt),
		RefreshedAt: internal.NewOptionalDateTime(g.RefreshedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetFlowsVaultConnectionResponseContent) 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 (
	getGuardianEnrollmentResponseContentFieldID          = big.NewInt(1 << 0)
	getGuardianEnrollmentResponseContentFieldStatus      = big.NewInt(1 << 1)
	getGuardianEnrollmentResponseContentFieldName        = big.NewInt(1 << 2)
	getGuardianEnrollmentResponseContentFieldIdentifier  = big.NewInt(1 << 3)
	getGuardianEnrollmentResponseContentFieldPhoneNumber = big.NewInt(1 << 4)
	getGuardianEnrollmentResponseContentFieldEnrolledAt  = big.NewInt(1 << 5)
	getGuardianEnrollmentResponseContentFieldLastAuth    = big.NewInt(1 << 6)
)

type GetGuardianEnrollmentResponseContent struct {
	// ID for this enrollment.
	ID     string                    `json:"id" url:"id"`
	Status *GuardianEnrollmentStatus `json:"status,omitempty" url:"status,omitempty"`
	// Device name (only for push notification).
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Device identifier. This is usually the phone identifier.
	Identifier *string `json:"identifier,omitempty" url:"identifier,omitempty"`
	// Phone number.
	PhoneNumber *string                 `json:"phone_number,omitempty" url:"phone_number,omitempty"`
	EnrolledAt  *GuardianEnrollmentDate `json:"enrolled_at,omitempty" url:"enrolled_at,omitempty"`
	LastAuth    *GuardianEnrollmentDate `json:"last_auth,omitempty" url:"last_auth,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 *GetGuardianEnrollmentResponseContent) GetID() string {
	if g == nil {
		return ""
	}
	return g.ID
}

func (g *GetGuardianEnrollmentResponseContent) GetStatus() GuardianEnrollmentStatus {
	if g == nil || g.Status == nil {
		return ""
	}
	return *g.Status
}

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

func (g *GetGuardianEnrollmentResponseContent) GetIdentifier() string {
	if g == nil || g.Identifier == nil {
		return ""
	}
	return *g.Identifier
}

func (g *GetGuardianEnrollmentResponseContent) GetPhoneNumber() string {
	if g == nil || g.PhoneNumber == nil {
		return ""
	}
	return *g.PhoneNumber
}

func (g *GetGuardianEnrollmentResponseContent) GetEnrolledAt() GuardianEnrollmentDate {
	if g == nil || g.EnrolledAt == nil {
		return ""
	}
	return *g.EnrolledAt
}

func (g *GetGuardianEnrollmentResponseContent) GetLastAuth() GuardianEnrollmentDate {
	if g == nil || g.LastAuth == nil {
		return ""
	}
	return *g.LastAuth
}

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

func (g *GetGuardianEnrollmentResponseContent) 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 *GetGuardianEnrollmentResponseContent) SetID(id string) {
	g.ID = id
	g.require(getGuardianEnrollmentResponseContentFieldID)
}

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianEnrollmentResponseContent) SetStatus(status *GuardianEnrollmentStatus) {
	g.Status = status
	g.require(getGuardianEnrollmentResponseContentFieldStatus)
}

// 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 *GetGuardianEnrollmentResponseContent) SetName(name *string) {
	g.Name = name
	g.require(getGuardianEnrollmentResponseContentFieldName)
}

// SetIdentifier sets the Identifier field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianEnrollmentResponseContent) SetIdentifier(identifier *string) {
	g.Identifier = identifier
	g.require(getGuardianEnrollmentResponseContentFieldIdentifier)
}

// SetPhoneNumber sets the PhoneNumber field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianEnrollmentResponseContent) SetPhoneNumber(phoneNumber *string) {
	g.PhoneNumber = phoneNumber
	g.require(getGuardianEnrollmentResponseContentFieldPhoneNumber)
}

// SetEnrolledAt sets the EnrolledAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianEnrollmentResponseContent) SetEnrolledAt(enrolledAt *GuardianEnrollmentDate) {
	g.EnrolledAt = enrolledAt
	g.require(getGuardianEnrollmentResponseContentFieldEnrolledAt)
}

// SetLastAuth sets the LastAuth field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianEnrollmentResponseContent) SetLastAuth(lastAuth *GuardianEnrollmentDate) {
	g.LastAuth = lastAuth
	g.require(getGuardianEnrollmentResponseContentFieldLastAuth)
}

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

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

func (g *GetGuardianEnrollmentResponseContent) 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 (
	getGuardianFactorDuoSettingsResponseContentFieldIkey = big.NewInt(1 << 0)
	getGuardianFactorDuoSettingsResponseContentFieldSkey = big.NewInt(1 << 1)
	getGuardianFactorDuoSettingsResponseContentFieldHost = big.NewInt(1 << 2)
)

type GetGuardianFactorDuoSettingsResponseContent struct {
	Ikey *string `json:"ikey,omitempty" url:"ikey,omitempty"`
	Skey *string `json:"skey,omitempty" url:"skey,omitempty"`
	Host *string `json:"host,omitempty" url:"host,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 *GetGuardianFactorDuoSettingsResponseContent) GetIkey() string {
	if g == nil || g.Ikey == nil {
		return ""
	}
	return *g.Ikey
}

func (g *GetGuardianFactorDuoSettingsResponseContent) GetSkey() string {
	if g == nil || g.Skey == nil {
		return ""
	}
	return *g.Skey
}

func (g *GetGuardianFactorDuoSettingsResponseContent) GetHost() string {
	if g == nil || g.Host == nil {
		return ""
	}
	return *g.Host
}

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

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

// SetIkey sets the Ikey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorDuoSettingsResponseContent) SetIkey(ikey *string) {
	g.Ikey = ikey
	g.require(getGuardianFactorDuoSettingsResponseContentFieldIkey)
}

// SetSkey sets the Skey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorDuoSettingsResponseContent) SetSkey(skey *string) {
	g.Skey = skey
	g.require(getGuardianFactorDuoSettingsResponseContentFieldSkey)
}

// SetHost sets the Host field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorDuoSettingsResponseContent) SetHost(host *string) {
	g.Host = host
	g.require(getGuardianFactorDuoSettingsResponseContentFieldHost)
}

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

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

func (g *GetGuardianFactorDuoSettingsResponseContent) 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 (
	getGuardianFactorPhoneMessageTypesResponseContentFieldMessageTypes = big.NewInt(1 << 0)
)

type GetGuardianFactorPhoneMessageTypesResponseContent struct {
	// The list of phone factors to enable on the tenant. Can include `sms` and `voice`.
	MessageTypes []GuardianFactorPhoneFactorMessageTypeEnum `json:"message_types,omitempty" url:"message_types,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 *GetGuardianFactorPhoneMessageTypesResponseContent) GetMessageTypes() []GuardianFactorPhoneFactorMessageTypeEnum {
	if g == nil || g.MessageTypes == nil {
		return nil
	}
	return g.MessageTypes
}

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

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

// SetMessageTypes sets the MessageTypes field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorPhoneMessageTypesResponseContent) SetMessageTypes(messageTypes []GuardianFactorPhoneFactorMessageTypeEnum) {
	g.MessageTypes = messageTypes
	g.require(getGuardianFactorPhoneMessageTypesResponseContentFieldMessageTypes)
}

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

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

func (g *GetGuardianFactorPhoneMessageTypesResponseContent) 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 (
	getGuardianFactorPhoneTemplatesResponseContentFieldEnrollmentMessage   = big.NewInt(1 << 0)
	getGuardianFactorPhoneTemplatesResponseContentFieldVerificationMessage = big.NewInt(1 << 1)
)

type GetGuardianFactorPhoneTemplatesResponseContent struct {
	// Message sent to the user when they are invited to enroll with a phone number.
	EnrollmentMessage string `json:"enrollment_message" url:"enrollment_message"`
	// Message sent to the user when they are prompted to verify their account.
	VerificationMessage string `json:"verification_message" url:"verification_message"`

	// 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 *GetGuardianFactorPhoneTemplatesResponseContent) GetEnrollmentMessage() string {
	if g == nil {
		return ""
	}
	return g.EnrollmentMessage
}

func (g *GetGuardianFactorPhoneTemplatesResponseContent) GetVerificationMessage() string {
	if g == nil {
		return ""
	}
	return g.VerificationMessage
}

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

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

// SetEnrollmentMessage sets the EnrollmentMessage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorPhoneTemplatesResponseContent) SetEnrollmentMessage(enrollmentMessage string) {
	g.EnrollmentMessage = enrollmentMessage
	g.require(getGuardianFactorPhoneTemplatesResponseContentFieldEnrollmentMessage)
}

// SetVerificationMessage sets the VerificationMessage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorPhoneTemplatesResponseContent) SetVerificationMessage(verificationMessage string) {
	g.VerificationMessage = verificationMessage
	g.require(getGuardianFactorPhoneTemplatesResponseContentFieldVerificationMessage)
}

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

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

func (g *GetGuardianFactorPhoneTemplatesResponseContent) 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 (
	getGuardianFactorSmsTemplatesResponseContentFieldEnrollmentMessage   = big.NewInt(1 << 0)
	getGuardianFactorSmsTemplatesResponseContentFieldVerificationMessage = big.NewInt(1 << 1)
)

type GetGuardianFactorSmsTemplatesResponseContent struct {
	// Message sent to the user when they are invited to enroll with a phone number.
	EnrollmentMessage string `json:"enrollment_message" url:"enrollment_message"`
	// Message sent to the user when they are prompted to verify their account.
	VerificationMessage string `json:"verification_message" url:"verification_message"`

	// 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 *GetGuardianFactorSmsTemplatesResponseContent) GetEnrollmentMessage() string {
	if g == nil {
		return ""
	}
	return g.EnrollmentMessage
}

func (g *GetGuardianFactorSmsTemplatesResponseContent) GetVerificationMessage() string {
	if g == nil {
		return ""
	}
	return g.VerificationMessage
}

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

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

// SetEnrollmentMessage sets the EnrollmentMessage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorSmsTemplatesResponseContent) SetEnrollmentMessage(enrollmentMessage string) {
	g.EnrollmentMessage = enrollmentMessage
	g.require(getGuardianFactorSmsTemplatesResponseContentFieldEnrollmentMessage)
}

// SetVerificationMessage sets the VerificationMessage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorSmsTemplatesResponseContent) SetVerificationMessage(verificationMessage string) {
	g.VerificationMessage = verificationMessage
	g.require(getGuardianFactorSmsTemplatesResponseContentFieldVerificationMessage)
}

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

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

func (g *GetGuardianFactorSmsTemplatesResponseContent) 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 (
	getGuardianFactorsProviderApnsResponseContentFieldBundleID = big.NewInt(1 << 0)
	getGuardianFactorsProviderApnsResponseContentFieldSandbox  = big.NewInt(1 << 1)
	getGuardianFactorsProviderApnsResponseContentFieldEnabled  = big.NewInt(1 << 2)
)

type GetGuardianFactorsProviderApnsResponseContent struct {
	BundleID *string `json:"bundle_id,omitempty" url:"bundle_id,omitempty"`
	Sandbox  *bool   `json:"sandbox,omitempty" url:"sandbox,omitempty"`
	Enabled  *bool   `json:"enabled,omitempty" url:"enabled,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 *GetGuardianFactorsProviderApnsResponseContent) GetBundleID() string {
	if g == nil || g.BundleID == nil {
		return ""
	}
	return *g.BundleID
}

func (g *GetGuardianFactorsProviderApnsResponseContent) GetSandbox() bool {
	if g == nil || g.Sandbox == nil {
		return false
	}
	return *g.Sandbox
}

func (g *GetGuardianFactorsProviderApnsResponseContent) GetEnabled() bool {
	if g == nil || g.Enabled == nil {
		return false
	}
	return *g.Enabled
}

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

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

// SetBundleID sets the BundleID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderApnsResponseContent) SetBundleID(bundleID *string) {
	g.BundleID = bundleID
	g.require(getGuardianFactorsProviderApnsResponseContentFieldBundleID)
}

// SetSandbox sets the Sandbox field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderApnsResponseContent) SetSandbox(sandbox *bool) {
	g.Sandbox = sandbox
	g.require(getGuardianFactorsProviderApnsResponseContentFieldSandbox)
}

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderApnsResponseContent) SetEnabled(enabled *bool) {
	g.Enabled = enabled
	g.require(getGuardianFactorsProviderApnsResponseContentFieldEnabled)
}

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

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

func (g *GetGuardianFactorsProviderApnsResponseContent) 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 (
	getGuardianFactorsProviderPhoneResponseContentFieldProvider = big.NewInt(1 << 0)
)

type GetGuardianFactorsProviderPhoneResponseContent struct {
	Provider *GuardianFactorsProviderSmsProviderEnum `json:"provider,omitempty" url:"provider,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 *GetGuardianFactorsProviderPhoneResponseContent) GetProvider() GuardianFactorsProviderSmsProviderEnum {
	if g == nil || g.Provider == nil {
		return ""
	}
	return *g.Provider
}

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

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

// SetProvider sets the Provider field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderPhoneResponseContent) SetProvider(provider *GuardianFactorsProviderSmsProviderEnum) {
	g.Provider = provider
	g.require(getGuardianFactorsProviderPhoneResponseContentFieldProvider)
}

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

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

func (g *GetGuardianFactorsProviderPhoneResponseContent) 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 (
	getGuardianFactorsProviderPhoneTwilioResponseContentFieldFrom                = big.NewInt(1 << 0)
	getGuardianFactorsProviderPhoneTwilioResponseContentFieldMessagingServiceSid = big.NewInt(1 << 1)
	getGuardianFactorsProviderPhoneTwilioResponseContentFieldAuthToken           = big.NewInt(1 << 2)
	getGuardianFactorsProviderPhoneTwilioResponseContentFieldSid                 = big.NewInt(1 << 3)
)

type GetGuardianFactorsProviderPhoneTwilioResponseContent struct {
	// From number
	From *string `json:"from,omitempty" url:"from,omitempty"`
	// Copilot SID
	MessagingServiceSid *string `json:"messaging_service_sid,omitempty" url:"messaging_service_sid,omitempty"`
	// Twilio Authentication token
	AuthToken *string `json:"auth_token,omitempty" url:"auth_token,omitempty"`
	// Twilio SID
	Sid *string `json:"sid,omitempty" url:"sid,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 *GetGuardianFactorsProviderPhoneTwilioResponseContent) GetFrom() string {
	if g == nil || g.From == nil {
		return ""
	}
	return *g.From
}

func (g *GetGuardianFactorsProviderPhoneTwilioResponseContent) GetMessagingServiceSid() string {
	if g == nil || g.MessagingServiceSid == nil {
		return ""
	}
	return *g.MessagingServiceSid
}

func (g *GetGuardianFactorsProviderPhoneTwilioResponseContent) GetAuthToken() string {
	if g == nil || g.AuthToken == nil {
		return ""
	}
	return *g.AuthToken
}

func (g *GetGuardianFactorsProviderPhoneTwilioResponseContent) GetSid() string {
	if g == nil || g.Sid == nil {
		return ""
	}
	return *g.Sid
}

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

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

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

// SetMessagingServiceSid sets the MessagingServiceSid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderPhoneTwilioResponseContent) SetMessagingServiceSid(messagingServiceSid *string) {
	g.MessagingServiceSid = messagingServiceSid
	g.require(getGuardianFactorsProviderPhoneTwilioResponseContentFieldMessagingServiceSid)
}

// SetAuthToken sets the AuthToken field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderPhoneTwilioResponseContent) SetAuthToken(authToken *string) {
	g.AuthToken = authToken
	g.require(getGuardianFactorsProviderPhoneTwilioResponseContentFieldAuthToken)
}

// SetSid sets the Sid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderPhoneTwilioResponseContent) SetSid(sid *string) {
	g.Sid = sid
	g.require(getGuardianFactorsProviderPhoneTwilioResponseContentFieldSid)
}

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

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

func (g *GetGuardianFactorsProviderPhoneTwilioResponseContent) 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 (
	getGuardianFactorsProviderPushNotificationResponseContentFieldProvider = big.NewInt(1 << 0)
)

type GetGuardianFactorsProviderPushNotificationResponseContent struct {
	Provider *GuardianFactorsProviderPushNotificationProviderDataEnum `json:"provider,omitempty" url:"provider,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 *GetGuardianFactorsProviderPushNotificationResponseContent) GetProvider() GuardianFactorsProviderPushNotificationProviderDataEnum {
	if g == nil || g.Provider == nil {
		return ""
	}
	return *g.Provider
}

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

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

// SetProvider sets the Provider field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderPushNotificationResponseContent) SetProvider(provider *GuardianFactorsProviderPushNotificationProviderDataEnum) {
	g.Provider = provider
	g.require(getGuardianFactorsProviderPushNotificationResponseContentFieldProvider)
}

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

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

func (g *GetGuardianFactorsProviderPushNotificationResponseContent) 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 (
	getGuardianFactorsProviderSmsResponseContentFieldProvider = big.NewInt(1 << 0)
)

type GetGuardianFactorsProviderSmsResponseContent struct {
	Provider *GuardianFactorsProviderSmsProviderEnum `json:"provider,omitempty" url:"provider,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 *GetGuardianFactorsProviderSmsResponseContent) GetProvider() GuardianFactorsProviderSmsProviderEnum {
	if g == nil || g.Provider == nil {
		return ""
	}
	return *g.Provider
}

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

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

// SetProvider sets the Provider field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderSmsResponseContent) SetProvider(provider *GuardianFactorsProviderSmsProviderEnum) {
	g.Provider = provider
	g.require(getGuardianFactorsProviderSmsResponseContentFieldProvider)
}

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

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

func (g *GetGuardianFactorsProviderSmsResponseContent) 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 (
	getGuardianFactorsProviderSmsTwilioResponseContentFieldFrom                = big.NewInt(1 << 0)
	getGuardianFactorsProviderSmsTwilioResponseContentFieldMessagingServiceSid = big.NewInt(1 << 1)
	getGuardianFactorsProviderSmsTwilioResponseContentFieldAuthToken           = big.NewInt(1 << 2)
	getGuardianFactorsProviderSmsTwilioResponseContentFieldSid                 = big.NewInt(1 << 3)
)

type GetGuardianFactorsProviderSmsTwilioResponseContent struct {
	// From number
	From *string `json:"from,omitempty" url:"from,omitempty"`
	// Copilot SID
	MessagingServiceSid *string `json:"messaging_service_sid,omitempty" url:"messaging_service_sid,omitempty"`
	// Twilio Authentication token
	AuthToken *string `json:"auth_token,omitempty" url:"auth_token,omitempty"`
	// Twilio SID
	Sid *string `json:"sid,omitempty" url:"sid,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 *GetGuardianFactorsProviderSmsTwilioResponseContent) GetFrom() string {
	if g == nil || g.From == nil {
		return ""
	}
	return *g.From
}

func (g *GetGuardianFactorsProviderSmsTwilioResponseContent) GetMessagingServiceSid() string {
	if g == nil || g.MessagingServiceSid == nil {
		return ""
	}
	return *g.MessagingServiceSid
}

func (g *GetGuardianFactorsProviderSmsTwilioResponseContent) GetAuthToken() string {
	if g == nil || g.AuthToken == nil {
		return ""
	}
	return *g.AuthToken
}

func (g *GetGuardianFactorsProviderSmsTwilioResponseContent) GetSid() string {
	if g == nil || g.Sid == nil {
		return ""
	}
	return *g.Sid
}

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

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

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

// SetMessagingServiceSid sets the MessagingServiceSid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderSmsTwilioResponseContent) SetMessagingServiceSid(messagingServiceSid *string) {
	g.MessagingServiceSid = messagingServiceSid
	g.require(getGuardianFactorsProviderSmsTwilioResponseContentFieldMessagingServiceSid)
}

// SetAuthToken sets the AuthToken field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderSmsTwilioResponseContent) SetAuthToken(authToken *string) {
	g.AuthToken = authToken
	g.require(getGuardianFactorsProviderSmsTwilioResponseContentFieldAuthToken)
}

// SetSid sets the Sid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderSmsTwilioResponseContent) SetSid(sid *string) {
	g.Sid = sid
	g.require(getGuardianFactorsProviderSmsTwilioResponseContentFieldSid)
}

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

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

func (g *GetGuardianFactorsProviderSmsTwilioResponseContent) 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 (
	getGuardianFactorsProviderSnsResponseContentFieldAwsAccessKeyID                = big.NewInt(1 << 0)
	getGuardianFactorsProviderSnsResponseContentFieldAwsSecretAccessKey            = big.NewInt(1 << 1)
	getGuardianFactorsProviderSnsResponseContentFieldAwsRegion                     = big.NewInt(1 << 2)
	getGuardianFactorsProviderSnsResponseContentFieldSnsApnsPlatformApplicationArn = big.NewInt(1 << 3)
	getGuardianFactorsProviderSnsResponseContentFieldSnsGcmPlatformApplicationArn  = big.NewInt(1 << 4)
)

type GetGuardianFactorsProviderSnsResponseContent struct {
	AwsAccessKeyID                *string `json:"aws_access_key_id,omitempty" url:"aws_access_key_id,omitempty"`
	AwsSecretAccessKey            *string `json:"aws_secret_access_key,omitempty" url:"aws_secret_access_key,omitempty"`
	AwsRegion                     *string `json:"aws_region,omitempty" url:"aws_region,omitempty"`
	SnsApnsPlatformApplicationArn *string `json:"sns_apns_platform_application_arn,omitempty" url:"sns_apns_platform_application_arn,omitempty"`
	SnsGcmPlatformApplicationArn  *string `json:"sns_gcm_platform_application_arn,omitempty" url:"sns_gcm_platform_application_arn,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 *GetGuardianFactorsProviderSnsResponseContent) GetAwsAccessKeyID() string {
	if g == nil || g.AwsAccessKeyID == nil {
		return ""
	}
	return *g.AwsAccessKeyID
}

func (g *GetGuardianFactorsProviderSnsResponseContent) GetAwsSecretAccessKey() string {
	if g == nil || g.AwsSecretAccessKey == nil {
		return ""
	}
	return *g.AwsSecretAccessKey
}

func (g *GetGuardianFactorsProviderSnsResponseContent) GetAwsRegion() string {
	if g == nil || g.AwsRegion == nil {
		return ""
	}
	return *g.AwsRegion
}

func (g *GetGuardianFactorsProviderSnsResponseContent) GetSnsApnsPlatformApplicationArn() string {
	if g == nil || g.SnsApnsPlatformApplicationArn == nil {
		return ""
	}
	return *g.SnsApnsPlatformApplicationArn
}

func (g *GetGuardianFactorsProviderSnsResponseContent) GetSnsGcmPlatformApplicationArn() string {
	if g == nil || g.SnsGcmPlatformApplicationArn == nil {
		return ""
	}
	return *g.SnsGcmPlatformApplicationArn
}

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

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

// SetAwsAccessKeyID sets the AwsAccessKeyID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderSnsResponseContent) SetAwsAccessKeyID(awsAccessKeyID *string) {
	g.AwsAccessKeyID = awsAccessKeyID
	g.require(getGuardianFactorsProviderSnsResponseContentFieldAwsAccessKeyID)
}

// SetAwsSecretAccessKey sets the AwsSecretAccessKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderSnsResponseContent) SetAwsSecretAccessKey(awsSecretAccessKey *string) {
	g.AwsSecretAccessKey = awsSecretAccessKey
	g.require(getGuardianFactorsProviderSnsResponseContentFieldAwsSecretAccessKey)
}

// SetAwsRegion sets the AwsRegion field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderSnsResponseContent) SetAwsRegion(awsRegion *string) {
	g.AwsRegion = awsRegion
	g.require(getGuardianFactorsProviderSnsResponseContentFieldAwsRegion)
}

// SetSnsApnsPlatformApplicationArn sets the SnsApnsPlatformApplicationArn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderSnsResponseContent) SetSnsApnsPlatformApplicationArn(snsApnsPlatformApplicationArn *string) {
	g.SnsApnsPlatformApplicationArn = snsApnsPlatformApplicationArn
	g.require(getGuardianFactorsProviderSnsResponseContentFieldSnsApnsPlatformApplicationArn)
}

// SetSnsGcmPlatformApplicationArn sets the SnsGcmPlatformApplicationArn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetGuardianFactorsProviderSnsResponseContent) SetSnsGcmPlatformApplicationArn(snsGcmPlatformApplicationArn *string) {
	g.SnsGcmPlatformApplicationArn = snsGcmPlatformApplicationArn
	g.require(getGuardianFactorsProviderSnsResponseContentFieldSnsGcmPlatformApplicationArn)
}

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

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

func (g *GetGuardianFactorsProviderSnsResponseContent) 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)
}

// Hashmap of key-value pairs where the value must be a string.
type GetHookSecretResponseContent = map[string]string

var (
	getJobErrorResponseContentFieldUser   = big.NewInt(1 << 0)
	getJobErrorResponseContentFieldErrors = big.NewInt(1 << 1)
)

type GetJobErrorResponseContent struct {
	User *GetJobUserError `json:"user,omitempty" url:"user,omitempty"`
	// Errors importing the user.
	Errors []*GetJobImportUserError `json:"errors,omitempty" url:"errors,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 *GetJobErrorResponseContent) GetUser() GetJobUserError {
	if g == nil || g.User == nil {
		return nil
	}
	return *g.User
}

func (g *GetJobErrorResponseContent) GetErrors() []*GetJobImportUserError {
	if g == nil || g.Errors == nil {
		return nil
	}
	return g.Errors
}

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

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

// SetUser sets the User field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetJobErrorResponseContent) SetUser(user *GetJobUserError) {
	g.User = user
	g.require(getJobErrorResponseContentFieldUser)
}

// SetErrors sets the Errors field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetJobErrorResponseContent) SetErrors(errors []*GetJobImportUserError) {
	g.Errors = errors
	g.require(getJobErrorResponseContentFieldErrors)
}

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

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

func (g *GetJobErrorResponseContent) 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 (
	getJobGenericErrorResponseContentFieldStatus        = big.NewInt(1 << 0)
	getJobGenericErrorResponseContentFieldType          = big.NewInt(1 << 1)
	getJobGenericErrorResponseContentFieldCreatedAt     = big.NewInt(1 << 2)
	getJobGenericErrorResponseContentFieldID            = big.NewInt(1 << 3)
	getJobGenericErrorResponseContentFieldConnectionID  = big.NewInt(1 << 4)
	getJobGenericErrorResponseContentFieldStatusDetails = big.NewInt(1 << 5)
)

type GetJobGenericErrorResponseContent struct {
	// Status of this job.
	Status string `json:"status" url:"status"`
	// Type of job this is.
	Type string `json:"type" url:"type"`
	// When this job was created.
	CreatedAt *string `json:"created_at,omitempty" url:"created_at,omitempty"`
	// ID of this job.
	ID string `json:"id" url:"id"`
	// connection_id of the connection this job uses.
	ConnectionID *string `json:"connection_id,omitempty" url:"connection_id,omitempty"`
	// Status details.
	StatusDetails *string `json:"status_details,omitempty" url:"status_details,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (g *GetJobGenericErrorResponseContent) GetStatus() string {
	if g == nil {
		return ""
	}
	return g.Status
}

func (g *GetJobGenericErrorResponseContent) GetType() string {
	if g == nil {
		return ""
	}
	return g.Type
}

func (g *GetJobGenericErrorResponseContent) GetCreatedAt() string {
	if g == nil || g.CreatedAt == nil {
		return ""
	}
	return *g.CreatedAt
}

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

func (g *GetJobGenericErrorResponseContent) GetConnectionID() string {
	if g == nil || g.ConnectionID == nil {
		return ""
	}
	return *g.ConnectionID
}

func (g *GetJobGenericErrorResponseContent) GetStatusDetails() string {
	if g == nil || g.StatusDetails == nil {
		return ""
	}
	return *g.StatusDetails
}

func (g *GetJobGenericErrorResponseContent) GetExtraProperties() map[string]interface{} {
	return g.ExtraProperties
}

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

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetJobGenericErrorResponseContent) SetStatus(status string) {
	g.Status = status
	g.require(getJobGenericErrorResponseContentFieldStatus)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetJobGenericErrorResponseContent) SetType(type_ string) {
	g.Type = type_
	g.require(getJobGenericErrorResponseContentFieldType)
}

// 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 *GetJobGenericErrorResponseContent) SetCreatedAt(createdAt *string) {
	g.CreatedAt = createdAt
	g.require(getJobGenericErrorResponseContentFieldCreatedAt)
}

// 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 *GetJobGenericErrorResponseContent) SetID(id string) {
	g.ID = id
	g.require(getJobGenericErrorResponseContentFieldID)
}

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetJobGenericErrorResponseContent) SetConnectionID(connectionID *string) {
	g.ConnectionID = connectionID
	g.require(getJobGenericErrorResponseContentFieldConnectionID)
}

// SetStatusDetails sets the StatusDetails field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetJobGenericErrorResponseContent) SetStatusDetails(statusDetails *string) {
	g.StatusDetails = statusDetails
	g.require(getJobGenericErrorResponseContentFieldStatusDetails)
}

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

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

func (g *GetJobGenericErrorResponseContent) 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 (
	getJobImportUserErrorFieldCode    = big.NewInt(1 << 0)
	getJobImportUserErrorFieldMessage = big.NewInt(1 << 1)
	getJobImportUserErrorFieldPath    = big.NewInt(1 << 2)
)

type GetJobImportUserError struct {
	// Error code.
	Code *string `json:"code,omitempty" url:"code,omitempty"`
	// Error message.
	Message *string `json:"message,omitempty" url:"message,omitempty"`
	// Error field.
	Path *string `json:"path,omitempty" url:"path,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (g *GetJobImportUserError) GetCode() string {
	if g == nil || g.Code == nil {
		return ""
	}
	return *g.Code
}

func (g *GetJobImportUserError) GetMessage() string {
	if g == nil || g.Message == nil {
		return ""
	}
	return *g.Message
}

func (g *GetJobImportUserError) GetPath() string {
	if g == nil || g.Path == nil {
		return ""
	}
	return *g.Path
}

func (g *GetJobImportUserError) GetExtraProperties() map[string]interface{} {
	return g.ExtraProperties
}

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

// SetCode sets the Code field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetJobImportUserError) SetCode(code *string) {
	g.Code = code
	g.require(getJobImportUserErrorFieldCode)
}

// SetMessage sets the Message field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetJobImportUserError) SetMessage(message *string) {
	g.Message = message
	g.require(getJobImportUserErrorFieldMessage)
}

// SetPath sets the Path field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetJobImportUserError) SetPath(path *string) {
	g.Path = path
	g.require(getJobImportUserErrorFieldPath)
}

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

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

func (g *GetJobImportUserError) 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)
}

// User, as provided in the import file
type GetJobUserError = map[string]interface{}

var (
	getOrganizationConnectionResponseContentFieldConnectionID            = big.NewInt(1 << 0)
	getOrganizationConnectionResponseContentFieldAssignMembershipOnLogin = big.NewInt(1 << 1)
	getOrganizationConnectionResponseContentFieldShowAsButton            = big.NewInt(1 << 2)
	getOrganizationConnectionResponseContentFieldIsSignupEnabled         = big.NewInt(1 << 3)
	getOrganizationConnectionResponseContentFieldConnection              = big.NewInt(1 << 4)
)

type GetOrganizationConnectionResponseContent struct {
	// ID of the connection.
	ConnectionID *string `json:"connection_id,omitempty" url:"connection_id,omitempty"`
	// When true, all users that log in with this connection will be automatically granted membership in the organization. When false, users must be granted membership in the organization before logging in with this connection.
	AssignMembershipOnLogin *bool `json:"assign_membership_on_login,omitempty" url:"assign_membership_on_login,omitempty"`
	// Determines whether a connection should be displayed on this organization’s login prompt. Only applicable for enterprise connections. Default: true.
	ShowAsButton *bool `json:"show_as_button,omitempty" url:"show_as_button,omitempty"`
	// Determines whether organization signup should be enabled for this organization connection. Only applicable for database connections. Default: false.
	IsSignupEnabled *bool                              `json:"is_signup_enabled,omitempty" url:"is_signup_enabled,omitempty"`
	Connection      *OrganizationConnectionInformation `json:"connection,omitempty" url:"connection,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 *GetOrganizationConnectionResponseContent) GetConnectionID() string {
	if g == nil || g.ConnectionID == nil {
		return ""
	}
	return *g.ConnectionID
}

func (g *GetOrganizationConnectionResponseContent) GetAssignMembershipOnLogin() bool {
	if g == nil || g.AssignMembershipOnLogin == nil {
		return false
	}
	return *g.AssignMembershipOnLogin
}

func (g *GetOrganizationConnectionResponseContent) GetShowAsButton() bool {
	if g == nil || g.ShowAsButton == nil {
		return false
	}
	return *g.ShowAsButton
}

func (g *GetOrganizationConnectionResponseContent) GetIsSignupEnabled() bool {
	if g == nil || g.IsSignupEnabled == nil {
		return false
	}
	return *g.IsSignupEnabled
}

func (g *GetOrganizationConnectionResponseContent) GetConnection() OrganizationConnectionInformation {
	if g == nil || g.Connection == nil {
		return OrganizationConnectionInformation{}
	}
	return *g.Connection
}

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

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

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationConnectionResponseContent) SetConnectionID(connectionID *string) {
	g.ConnectionID = connectionID
	g.require(getOrganizationConnectionResponseContentFieldConnectionID)
}

// SetAssignMembershipOnLogin sets the AssignMembershipOnLogin field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationConnectionResponseContent) SetAssignMembershipOnLogin(assignMembershipOnLogin *bool) {
	g.AssignMembershipOnLogin = assignMembershipOnLogin
	g.require(getOrganizationConnectionResponseContentFieldAssignMembershipOnLogin)
}

// SetShowAsButton sets the ShowAsButton field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationConnectionResponseContent) SetShowAsButton(showAsButton *bool) {
	g.ShowAsButton = showAsButton
	g.require(getOrganizationConnectionResponseContentFieldShowAsButton)
}

// SetIsSignupEnabled sets the IsSignupEnabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationConnectionResponseContent) SetIsSignupEnabled(isSignupEnabled *bool) {
	g.IsSignupEnabled = isSignupEnabled
	g.require(getOrganizationConnectionResponseContentFieldIsSignupEnabled)
}

// SetConnection sets the Connection field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationConnectionResponseContent) SetConnection(connection *OrganizationConnectionInformation) {
	g.Connection = connection
	g.require(getOrganizationConnectionResponseContentFieldConnection)
}

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

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

func (g *GetOrganizationConnectionResponseContent) 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 (
	getOrganizationInvitationResponseContentFieldID             = big.NewInt(1 << 0)
	getOrganizationInvitationResponseContentFieldOrganizationID = big.NewInt(1 << 1)
	getOrganizationInvitationResponseContentFieldInviter        = big.NewInt(1 << 2)
	getOrganizationInvitationResponseContentFieldInvitee        = big.NewInt(1 << 3)
	getOrganizationInvitationResponseContentFieldInvitationURL  = big.NewInt(1 << 4)
	getOrganizationInvitationResponseContentFieldCreatedAt      = big.NewInt(1 << 5)
	getOrganizationInvitationResponseContentFieldExpiresAt      = big.NewInt(1 << 6)
	getOrganizationInvitationResponseContentFieldClientID       = big.NewInt(1 << 7)
	getOrganizationInvitationResponseContentFieldConnectionID   = big.NewInt(1 << 8)
	getOrganizationInvitationResponseContentFieldAppMetadata    = big.NewInt(1 << 9)
	getOrganizationInvitationResponseContentFieldUserMetadata   = big.NewInt(1 << 10)
	getOrganizationInvitationResponseContentFieldRoles          = big.NewInt(1 << 11)
	getOrganizationInvitationResponseContentFieldTicketID       = big.NewInt(1 << 12)
)

type GetOrganizationInvitationResponseContent struct {
	// The id of the user invitation.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// Organization identifier.
	OrganizationID *string                        `json:"organization_id,omitempty" url:"organization_id,omitempty"`
	Inviter        *OrganizationInvitationInviter `json:"inviter,omitempty" url:"inviter,omitempty"`
	Invitee        *OrganizationInvitationInvitee `json:"invitee,omitempty" url:"invitee,omitempty"`
	// The invitation url to be send to the invitee.
	InvitationURL *string `json:"invitation_url,omitempty" url:"invitation_url,omitempty"`
	// The ISO 8601 formatted timestamp representing the creation time of the invitation.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The ISO 8601 formatted timestamp representing the expiration time of the invitation.
	ExpiresAt *time.Time `json:"expires_at,omitempty" url:"expires_at,omitempty"`
	// Auth0 client ID. Used to resolve the application's login initiation endpoint.
	ClientID *string `json:"client_id,omitempty" url:"client_id,omitempty"`
	// The id of the connection to force invitee to authenticate with.
	ConnectionID *string       `json:"connection_id,omitempty" url:"connection_id,omitempty"`
	AppMetadata  *AppMetadata  `json:"app_metadata,omitempty" url:"app_metadata,omitempty"`
	UserMetadata *UserMetadata `json:"user_metadata,omitempty" url:"user_metadata,omitempty"`
	// List of roles IDs to associated with the user.
	Roles []string `json:"roles,omitempty" url:"roles,omitempty"`
	// The id of the invitation ticket
	TicketID *string `json:"ticket_id,omitempty" url:"ticket_id,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 *GetOrganizationInvitationResponseContent) GetID() string {
	if g == nil || g.ID == nil {
		return ""
	}
	return *g.ID
}

func (g *GetOrganizationInvitationResponseContent) GetOrganizationID() string {
	if g == nil || g.OrganizationID == nil {
		return ""
	}
	return *g.OrganizationID
}

func (g *GetOrganizationInvitationResponseContent) GetInviter() OrganizationInvitationInviter {
	if g == nil || g.Inviter == nil {
		return OrganizationInvitationInviter{}
	}
	return *g.Inviter
}

func (g *GetOrganizationInvitationResponseContent) GetInvitee() OrganizationInvitationInvitee {
	if g == nil || g.Invitee == nil {
		return OrganizationInvitationInvitee{}
	}
	return *g.Invitee
}

func (g *GetOrganizationInvitationResponseContent) GetInvitationURL() string {
	if g == nil || g.InvitationURL == nil {
		return ""
	}
	return *g.InvitationURL
}

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

func (g *GetOrganizationInvitationResponseContent) GetExpiresAt() time.Time {
	if g == nil || g.ExpiresAt == nil {
		return time.Time{}
	}
	return *g.ExpiresAt
}

func (g *GetOrganizationInvitationResponseContent) GetClientID() string {
	if g == nil || g.ClientID == nil {
		return ""
	}
	return *g.ClientID
}

func (g *GetOrganizationInvitationResponseContent) GetConnectionID() string {
	if g == nil || g.ConnectionID == nil {
		return ""
	}
	return *g.ConnectionID
}

func (g *GetOrganizationInvitationResponseContent) GetAppMetadata() AppMetadata {
	if g == nil || g.AppMetadata == nil {
		return nil
	}
	return *g.AppMetadata
}

func (g *GetOrganizationInvitationResponseContent) GetUserMetadata() UserMetadata {
	if g == nil || g.UserMetadata == nil {
		return nil
	}
	return *g.UserMetadata
}

func (g *GetOrganizationInvitationResponseContent) GetRoles() []string {
	if g == nil || g.Roles == nil {
		return nil
	}
	return g.Roles
}

func (g *GetOrganizationInvitationResponseContent) GetTicketID() string {
	if g == nil || g.TicketID == nil {
		return ""
	}
	return *g.TicketID
}

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

func (g *GetOrganizationInvitationResponseContent) 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 *GetOrganizationInvitationResponseContent) SetID(id *string) {
	g.ID = id
	g.require(getOrganizationInvitationResponseContentFieldID)
}

// SetOrganizationID sets the OrganizationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationInvitationResponseContent) SetOrganizationID(organizationID *string) {
	g.OrganizationID = organizationID
	g.require(getOrganizationInvitationResponseContentFieldOrganizationID)
}

// SetInviter sets the Inviter field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationInvitationResponseContent) SetInviter(inviter *OrganizationInvitationInviter) {
	g.Inviter = inviter
	g.require(getOrganizationInvitationResponseContentFieldInviter)
}

// SetInvitee sets the Invitee field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationInvitationResponseContent) SetInvitee(invitee *OrganizationInvitationInvitee) {
	g.Invitee = invitee
	g.require(getOrganizationInvitationResponseContentFieldInvitee)
}

// SetInvitationURL sets the InvitationURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationInvitationResponseContent) SetInvitationURL(invitationURL *string) {
	g.InvitationURL = invitationURL
	g.require(getOrganizationInvitationResponseContentFieldInvitationURL)
}

// 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 *GetOrganizationInvitationResponseContent) SetCreatedAt(createdAt *time.Time) {
	g.CreatedAt = createdAt
	g.require(getOrganizationInvitationResponseContentFieldCreatedAt)
}

// SetExpiresAt sets the ExpiresAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationInvitationResponseContent) SetExpiresAt(expiresAt *time.Time) {
	g.ExpiresAt = expiresAt
	g.require(getOrganizationInvitationResponseContentFieldExpiresAt)
}

// SetClientID sets the ClientID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationInvitationResponseContent) SetClientID(clientID *string) {
	g.ClientID = clientID
	g.require(getOrganizationInvitationResponseContentFieldClientID)
}

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationInvitationResponseContent) SetConnectionID(connectionID *string) {
	g.ConnectionID = connectionID
	g.require(getOrganizationInvitationResponseContentFieldConnectionID)
}

// SetAppMetadata sets the AppMetadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationInvitationResponseContent) SetAppMetadata(appMetadata *AppMetadata) {
	g.AppMetadata = appMetadata
	g.require(getOrganizationInvitationResponseContentFieldAppMetadata)
}

// SetUserMetadata sets the UserMetadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationInvitationResponseContent) SetUserMetadata(userMetadata *UserMetadata) {
	g.UserMetadata = userMetadata
	g.require(getOrganizationInvitationResponseContentFieldUserMetadata)
}

// SetRoles sets the Roles field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationInvitationResponseContent) SetRoles(roles []string) {
	g.Roles = roles
	g.require(getOrganizationInvitationResponseContentFieldRoles)
}

// SetTicketID sets the TicketID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetOrganizationInvitationResponseContent) SetTicketID(ticketID *string) {
	g.TicketID = ticketID
	g.require(getOrganizationInvitationResponseContentFieldTicketID)
}

func (g *GetOrganizationInvitationResponseContent) UnmarshalJSON(data []byte) error {
	type embed GetOrganizationInvitationResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetOrganizationInvitationResponseContent(unmarshaler.embed)
	g.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	g.ExpiresAt = unmarshaler.ExpiresAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetOrganizationInvitationResponseContent) MarshalJSON() ([]byte, error) {
	type embed GetOrganizationInvitationResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed:     embed(*g),
		CreatedAt: internal.NewOptionalDateTime(g.CreatedAt),
		ExpiresAt: internal.NewOptionalDateTime(g.ExpiresAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetOrganizationInvitationResponseContent) 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)
}

// An object containing template partials for a group of screens.
type GetPartialsResponseContent = map[string]interface{}

var (
	getPhoneTemplateResponseContentFieldID           = big.NewInt(1 << 0)
	getPhoneTemplateResponseContentFieldChannel      = big.NewInt(1 << 1)
	getPhoneTemplateResponseContentFieldCustomizable = big.NewInt(1 << 2)
	getPhoneTemplateResponseContentFieldTenant       = big.NewInt(1 << 3)
	getPhoneTemplateResponseContentFieldContent      = big.NewInt(1 << 4)
	getPhoneTemplateResponseContentFieldType         = big.NewInt(1 << 5)
	getPhoneTemplateResponseContentFieldDisabled     = big.NewInt(1 << 6)
)

type GetPhoneTemplateResponseContent struct {
	ID           string                            `json:"id" url:"id"`
	Channel      *string                           `json:"channel,omitempty" url:"channel,omitempty"`
	Customizable *bool                             `json:"customizable,omitempty" url:"customizable,omitempty"`
	Tenant       *string                           `json:"tenant,omitempty" url:"tenant,omitempty"`
	Content      *PhoneTemplateContent             `json:"content" url:"content"`
	Type         PhoneTemplateNotificationTypeEnum `json:"type" url:"type"`
	// Whether the template is enabled (false) or disabled (true).
	Disabled bool `json:"disabled" url:"disabled"`

	// 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 *GetPhoneTemplateResponseContent) GetID() string {
	if g == nil {
		return ""
	}
	return g.ID
}

func (g *GetPhoneTemplateResponseContent) GetChannel() string {
	if g == nil || g.Channel == nil {
		return ""
	}
	return *g.Channel
}

func (g *GetPhoneTemplateResponseContent) GetCustomizable() bool {
	if g == nil || g.Customizable == nil {
		return false
	}
	return *g.Customizable
}

func (g *GetPhoneTemplateResponseContent) GetTenant() string {
	if g == nil || g.Tenant == nil {
		return ""
	}
	return *g.Tenant
}

func (g *GetPhoneTemplateResponseContent) GetContent() *PhoneTemplateContent {
	if g == nil {
		return nil
	}
	return g.Content
}

func (g *GetPhoneTemplateResponseContent) GetType() PhoneTemplateNotificationTypeEnum {
	if g == nil {
		return ""
	}
	return g.Type
}

func (g *GetPhoneTemplateResponseContent) GetDisabled() bool {
	if g == nil {
		return false
	}
	return g.Disabled
}

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

func (g *GetPhoneTemplateResponseContent) 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 *GetPhoneTemplateResponseContent) SetID(id string) {
	g.ID = id
	g.require(getPhoneTemplateResponseContentFieldID)
}

// SetChannel sets the Channel field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetPhoneTemplateResponseContent) SetChannel(channel *string) {
	g.Channel = channel
	g.require(getPhoneTemplateResponseContentFieldChannel)
}

// SetCustomizable sets the Customizable field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetPhoneTemplateResponseContent) SetCustomizable(customizable *bool) {
	g.Customizable = customizable
	g.require(getPhoneTemplateResponseContentFieldCustomizable)
}

// SetTenant sets the Tenant field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetPhoneTemplateResponseContent) SetTenant(tenant *string) {
	g.Tenant = tenant
	g.require(getPhoneTemplateResponseContentFieldTenant)
}

// SetContent sets the Content field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetPhoneTemplateResponseContent) SetContent(content *PhoneTemplateContent) {
	g.Content = content
	g.require(getPhoneTemplateResponseContentFieldContent)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetPhoneTemplateResponseContent) SetType(type_ PhoneTemplateNotificationTypeEnum) {
	g.Type = type_
	g.require(getPhoneTemplateResponseContentFieldType)
}

// SetDisabled sets the Disabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetPhoneTemplateResponseContent) SetDisabled(disabled bool) {
	g.Disabled = disabled
	g.require(getPhoneTemplateResponseContentFieldDisabled)
}

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

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

func (g *GetPhoneTemplateResponseContent) 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 (
	getRiskAssessmentsSettingsNewDeviceResponseContentFieldRememberFor = big.NewInt(1 << 0)
)

type GetRiskAssessmentsSettingsNewDeviceResponseContent struct {
	// Length of time to remember devices for, in days.
	RememberFor int `json:"remember_for" url:"remember_for"`

	// 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 *GetRiskAssessmentsSettingsNewDeviceResponseContent) GetRememberFor() int {
	if g == nil {
		return 0
	}
	return g.RememberFor
}

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

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

// SetRememberFor sets the RememberFor field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetRiskAssessmentsSettingsNewDeviceResponseContent) SetRememberFor(rememberFor int) {
	g.RememberFor = rememberFor
	g.require(getRiskAssessmentsSettingsNewDeviceResponseContentFieldRememberFor)
}

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

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

func (g *GetRiskAssessmentsSettingsNewDeviceResponseContent) 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 (
	getRiskAssessmentsSettingsResponseContentFieldEnabled = big.NewInt(1 << 0)
)

type GetRiskAssessmentsSettingsResponseContent struct {
	// Whether or not risk assessment is enabled.
	Enabled bool `json:"enabled" url:"enabled"`

	// 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 *GetRiskAssessmentsSettingsResponseContent) GetEnabled() bool {
	if g == nil {
		return false
	}
	return g.Enabled
}

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

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

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetRiskAssessmentsSettingsResponseContent) SetEnabled(enabled bool) {
	g.Enabled = enabled
	g.require(getRiskAssessmentsSettingsResponseContentFieldEnabled)
}

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

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

func (g *GetRiskAssessmentsSettingsResponseContent) 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 (
	getSCIMConfigurationDefaultMappingResponseContentFieldMapping = big.NewInt(1 << 0)
)

type GetSCIMConfigurationDefaultMappingResponseContent struct {
	// The mapping between auth0 and SCIM
	Mapping []*SCIMMappingItem `json:"mapping,omitempty" url:"mapping,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 *GetSCIMConfigurationDefaultMappingResponseContent) GetMapping() []*SCIMMappingItem {
	if g == nil || g.Mapping == nil {
		return nil
	}
	return g.Mapping
}

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

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

// SetMapping sets the Mapping field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSCIMConfigurationDefaultMappingResponseContent) SetMapping(mapping []*SCIMMappingItem) {
	g.Mapping = mapping
	g.require(getSCIMConfigurationDefaultMappingResponseContentFieldMapping)
}

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

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

func (g *GetSCIMConfigurationDefaultMappingResponseContent) 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 (
	getSCIMConfigurationResponseContentFieldConnectionID    = big.NewInt(1 << 0)
	getSCIMConfigurationResponseContentFieldConnectionName  = big.NewInt(1 << 1)
	getSCIMConfigurationResponseContentFieldStrategy        = big.NewInt(1 << 2)
	getSCIMConfigurationResponseContentFieldTenantName      = big.NewInt(1 << 3)
	getSCIMConfigurationResponseContentFieldUserIDAttribute = big.NewInt(1 << 4)
	getSCIMConfigurationResponseContentFieldMapping         = big.NewInt(1 << 5)
	getSCIMConfigurationResponseContentFieldCreatedAt       = big.NewInt(1 << 6)
	getSCIMConfigurationResponseContentFieldUpdatedOn       = big.NewInt(1 << 7)
)

type GetSCIMConfigurationResponseContent struct {
	// The connection's identifier
	ConnectionID *string `json:"connection_id,omitempty" url:"connection_id,omitempty"`
	// The connection's identifier
	ConnectionName *string `json:"connection_name,omitempty" url:"connection_name,omitempty"`
	// The connection's strategy
	Strategy *string `json:"strategy,omitempty" url:"strategy,omitempty"`
	// The tenant's name
	TenantName *string `json:"tenant_name,omitempty" url:"tenant_name,omitempty"`
	// User ID attribute for generating unique user ids
	UserIDAttribute *string `json:"user_id_attribute,omitempty" url:"user_id_attribute,omitempty"`
	// The mapping between auth0 and SCIM
	Mapping []*SCIMMappingItem `json:"mapping,omitempty" url:"mapping,omitempty"`
	// The Date Time Scim Configuration was created
	CreatedAt *string `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The Date Time Scim Configuration was last updated
	UpdatedOn *string `json:"updated_on,omitempty" url:"updated_on,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 *GetSCIMConfigurationResponseContent) GetConnectionID() string {
	if g == nil || g.ConnectionID == nil {
		return ""
	}
	return *g.ConnectionID
}

func (g *GetSCIMConfigurationResponseContent) GetConnectionName() string {
	if g == nil || g.ConnectionName == nil {
		return ""
	}
	return *g.ConnectionName
}

func (g *GetSCIMConfigurationResponseContent) GetStrategy() string {
	if g == nil || g.Strategy == nil {
		return ""
	}
	return *g.Strategy
}

func (g *GetSCIMConfigurationResponseContent) GetTenantName() string {
	if g == nil || g.TenantName == nil {
		return ""
	}
	return *g.TenantName
}

func (g *GetSCIMConfigurationResponseContent) GetUserIDAttribute() string {
	if g == nil || g.UserIDAttribute == nil {
		return ""
	}
	return *g.UserIDAttribute
}

func (g *GetSCIMConfigurationResponseContent) GetMapping() []*SCIMMappingItem {
	if g == nil || g.Mapping == nil {
		return nil
	}
	return g.Mapping
}

func (g *GetSCIMConfigurationResponseContent) GetCreatedAt() string {
	if g == nil || g.CreatedAt == nil {
		return ""
	}
	return *g.CreatedAt
}

func (g *GetSCIMConfigurationResponseContent) GetUpdatedOn() string {
	if g == nil || g.UpdatedOn == nil {
		return ""
	}
	return *g.UpdatedOn
}

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

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

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSCIMConfigurationResponseContent) SetConnectionID(connectionID *string) {
	g.ConnectionID = connectionID
	g.require(getSCIMConfigurationResponseContentFieldConnectionID)
}

// SetConnectionName sets the ConnectionName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSCIMConfigurationResponseContent) SetConnectionName(connectionName *string) {
	g.ConnectionName = connectionName
	g.require(getSCIMConfigurationResponseContentFieldConnectionName)
}

// SetStrategy sets the Strategy field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSCIMConfigurationResponseContent) SetStrategy(strategy *string) {
	g.Strategy = strategy
	g.require(getSCIMConfigurationResponseContentFieldStrategy)
}

// SetTenantName sets the TenantName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSCIMConfigurationResponseContent) SetTenantName(tenantName *string) {
	g.TenantName = tenantName
	g.require(getSCIMConfigurationResponseContentFieldTenantName)
}

// SetUserIDAttribute sets the UserIDAttribute field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSCIMConfigurationResponseContent) SetUserIDAttribute(userIDAttribute *string) {
	g.UserIDAttribute = userIDAttribute
	g.require(getSCIMConfigurationResponseContentFieldUserIDAttribute)
}

// SetMapping sets the Mapping field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSCIMConfigurationResponseContent) SetMapping(mapping []*SCIMMappingItem) {
	g.Mapping = mapping
	g.require(getSCIMConfigurationResponseContentFieldMapping)
}

// 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 *GetSCIMConfigurationResponseContent) SetCreatedAt(createdAt *string) {
	g.CreatedAt = createdAt
	g.require(getSCIMConfigurationResponseContentFieldCreatedAt)
}

// SetUpdatedOn sets the UpdatedOn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSCIMConfigurationResponseContent) SetUpdatedOn(updatedOn *string) {
	g.UpdatedOn = updatedOn
	g.require(getSCIMConfigurationResponseContentFieldUpdatedOn)
}

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

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

func (g *GetSCIMConfigurationResponseContent) 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)
}

// The list of scim tokens for scim clients
type GetSCIMTokensResponseContent = []*SCIMTokenItem

var (
	getSigningKeysResponseContentFieldKid          = big.NewInt(1 << 0)
	getSigningKeysResponseContentFieldCert         = big.NewInt(1 << 1)
	getSigningKeysResponseContentFieldPkcs7        = big.NewInt(1 << 2)
	getSigningKeysResponseContentFieldCurrent      = big.NewInt(1 << 3)
	getSigningKeysResponseContentFieldNext         = big.NewInt(1 << 4)
	getSigningKeysResponseContentFieldPrevious     = big.NewInt(1 << 5)
	getSigningKeysResponseContentFieldCurrentSince = big.NewInt(1 << 6)
	getSigningKeysResponseContentFieldCurrentUntil = big.NewInt(1 << 7)
	getSigningKeysResponseContentFieldFingerprint  = big.NewInt(1 << 8)
	getSigningKeysResponseContentFieldThumbprint   = big.NewInt(1 << 9)
	getSigningKeysResponseContentFieldRevoked      = big.NewInt(1 << 10)
	getSigningKeysResponseContentFieldRevokedAt    = big.NewInt(1 << 11)
)

type GetSigningKeysResponseContent struct {
	// The key id of the signing key
	Kid string `json:"kid" url:"kid"`
	// The public certificate of the signing key
	Cert string `json:"cert" url:"cert"`
	// The public certificate of the signing key in pkcs7 format
	Pkcs7 *string `json:"pkcs7,omitempty" url:"pkcs7,omitempty"`
	// True if the key is the the current key
	Current *bool `json:"current,omitempty" url:"current,omitempty"`
	// True if the key is the the next key
	Next *bool `json:"next,omitempty" url:"next,omitempty"`
	// True if the key is the the previous key
	Previous     *bool            `json:"previous,omitempty" url:"previous,omitempty"`
	CurrentSince *SigningKeysDate `json:"current_since,omitempty" url:"current_since,omitempty"`
	CurrentUntil *SigningKeysDate `json:"current_until,omitempty" url:"current_until,omitempty"`
	// The cert fingerprint
	Fingerprint string `json:"fingerprint" url:"fingerprint"`
	// The cert thumbprint
	Thumbprint string `json:"thumbprint" url:"thumbprint"`
	// True if the key is revoked
	Revoked   *bool            `json:"revoked,omitempty" url:"revoked,omitempty"`
	RevokedAt *SigningKeysDate `json:"revoked_at,omitempty" url:"revoked_at,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 *GetSigningKeysResponseContent) GetKid() string {
	if g == nil {
		return ""
	}
	return g.Kid
}

func (g *GetSigningKeysResponseContent) GetCert() string {
	if g == nil {
		return ""
	}
	return g.Cert
}

func (g *GetSigningKeysResponseContent) GetPkcs7() string {
	if g == nil || g.Pkcs7 == nil {
		return ""
	}
	return *g.Pkcs7
}

func (g *GetSigningKeysResponseContent) GetCurrent() bool {
	if g == nil || g.Current == nil {
		return false
	}
	return *g.Current
}

func (g *GetSigningKeysResponseContent) GetNext() bool {
	if g == nil || g.Next == nil {
		return false
	}
	return *g.Next
}

func (g *GetSigningKeysResponseContent) GetPrevious() bool {
	if g == nil || g.Previous == nil {
		return false
	}
	return *g.Previous
}

func (g *GetSigningKeysResponseContent) GetCurrentSince() SigningKeysDate {
	if g == nil || g.CurrentSince == nil {
		return SigningKeysDate{}
	}
	return *g.CurrentSince
}

func (g *GetSigningKeysResponseContent) GetCurrentUntil() SigningKeysDate {
	if g == nil || g.CurrentUntil == nil {
		return SigningKeysDate{}
	}
	return *g.CurrentUntil
}

func (g *GetSigningKeysResponseContent) GetFingerprint() string {
	if g == nil {
		return ""
	}
	return g.Fingerprint
}

func (g *GetSigningKeysResponseContent) GetThumbprint() string {
	if g == nil {
		return ""
	}
	return g.Thumbprint
}

func (g *GetSigningKeysResponseContent) GetRevoked() bool {
	if g == nil || g.Revoked == nil {
		return false
	}
	return *g.Revoked
}

func (g *GetSigningKeysResponseContent) GetRevokedAt() SigningKeysDate {
	if g == nil || g.RevokedAt == nil {
		return SigningKeysDate{}
	}
	return *g.RevokedAt
}

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

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

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSigningKeysResponseContent) SetKid(kid string) {
	g.Kid = kid
	g.require(getSigningKeysResponseContentFieldKid)
}

// SetCert sets the Cert field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSigningKeysResponseContent) SetCert(cert string) {
	g.Cert = cert
	g.require(getSigningKeysResponseContentFieldCert)
}

// SetPkcs7 sets the Pkcs7 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSigningKeysResponseContent) SetPkcs7(pkcs7 *string) {
	g.Pkcs7 = pkcs7
	g.require(getSigningKeysResponseContentFieldPkcs7)
}

// SetCurrent sets the Current field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSigningKeysResponseContent) SetCurrent(current *bool) {
	g.Current = current
	g.require(getSigningKeysResponseContentFieldCurrent)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSigningKeysResponseContent) SetNext(next *bool) {
	g.Next = next
	g.require(getSigningKeysResponseContentFieldNext)
}

// SetPrevious sets the Previous field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSigningKeysResponseContent) SetPrevious(previous *bool) {
	g.Previous = previous
	g.require(getSigningKeysResponseContentFieldPrevious)
}

// SetCurrentSince sets the CurrentSince field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSigningKeysResponseContent) SetCurrentSince(currentSince *SigningKeysDate) {
	g.CurrentSince = currentSince
	g.require(getSigningKeysResponseContentFieldCurrentSince)
}

// SetCurrentUntil sets the CurrentUntil field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSigningKeysResponseContent) SetCurrentUntil(currentUntil *SigningKeysDate) {
	g.CurrentUntil = currentUntil
	g.require(getSigningKeysResponseContentFieldCurrentUntil)
}

// SetFingerprint sets the Fingerprint field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSigningKeysResponseContent) SetFingerprint(fingerprint string) {
	g.Fingerprint = fingerprint
	g.require(getSigningKeysResponseContentFieldFingerprint)
}

// SetThumbprint sets the Thumbprint field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSigningKeysResponseContent) SetThumbprint(thumbprint string) {
	g.Thumbprint = thumbprint
	g.require(getSigningKeysResponseContentFieldThumbprint)
}

// SetRevoked sets the Revoked field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSigningKeysResponseContent) SetRevoked(revoked *bool) {
	g.Revoked = revoked
	g.require(getSigningKeysResponseContentFieldRevoked)
}

// SetRevokedAt sets the RevokedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSigningKeysResponseContent) SetRevokedAt(revokedAt *SigningKeysDate) {
	g.RevokedAt = revokedAt
	g.require(getSigningKeysResponseContentFieldRevokedAt)
}

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

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

func (g *GetSigningKeysResponseContent) 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 (
	getSuspiciousIPThrottlingSettingsResponseContentFieldEnabled   = big.NewInt(1 << 0)
	getSuspiciousIPThrottlingSettingsResponseContentFieldShields   = big.NewInt(1 << 1)
	getSuspiciousIPThrottlingSettingsResponseContentFieldAllowlist = big.NewInt(1 << 2)
	getSuspiciousIPThrottlingSettingsResponseContentFieldStage     = big.NewInt(1 << 3)
)

type GetSuspiciousIPThrottlingSettingsResponseContent struct {
	// Whether or not suspicious IP throttling attack protections are active.
	Enabled *bool `json:"enabled,omitempty" url:"enabled,omitempty"`
	// Action to take when a suspicious IP throttling threshold is violated.
	//
	//	Possible values: <code>block</code>, <code>admin_notification</code>.
	Shields   []SuspiciousIPThrottlingShieldsEnum `json:"shields,omitempty" url:"shields,omitempty"`
	Allowlist *SuspiciousIPThrottlingAllowlist    `json:"allowlist,omitempty" url:"allowlist,omitempty"`
	Stage     *SuspiciousIPThrottlingStage        `json:"stage,omitempty" url:"stage,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 *GetSuspiciousIPThrottlingSettingsResponseContent) GetEnabled() bool {
	if g == nil || g.Enabled == nil {
		return false
	}
	return *g.Enabled
}

func (g *GetSuspiciousIPThrottlingSettingsResponseContent) GetShields() []SuspiciousIPThrottlingShieldsEnum {
	if g == nil || g.Shields == nil {
		return nil
	}
	return g.Shields
}

func (g *GetSuspiciousIPThrottlingSettingsResponseContent) GetAllowlist() SuspiciousIPThrottlingAllowlist {
	if g == nil || g.Allowlist == nil {
		return nil
	}
	return *g.Allowlist
}

func (g *GetSuspiciousIPThrottlingSettingsResponseContent) GetStage() SuspiciousIPThrottlingStage {
	if g == nil || g.Stage == nil {
		return SuspiciousIPThrottlingStage{}
	}
	return *g.Stage
}

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

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

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSuspiciousIPThrottlingSettingsResponseContent) SetEnabled(enabled *bool) {
	g.Enabled = enabled
	g.require(getSuspiciousIPThrottlingSettingsResponseContentFieldEnabled)
}

// SetShields sets the Shields field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSuspiciousIPThrottlingSettingsResponseContent) SetShields(shields []SuspiciousIPThrottlingShieldsEnum) {
	g.Shields = shields
	g.require(getSuspiciousIPThrottlingSettingsResponseContentFieldShields)
}

// SetAllowlist sets the Allowlist field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSuspiciousIPThrottlingSettingsResponseContent) SetAllowlist(allowlist *SuspiciousIPThrottlingAllowlist) {
	g.Allowlist = allowlist
	g.require(getSuspiciousIPThrottlingSettingsResponseContentFieldAllowlist)
}

// SetStage sets the Stage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetSuspiciousIPThrottlingSettingsResponseContent) SetStage(stage *SuspiciousIPThrottlingStage) {
	g.Stage = stage
	g.require(getSuspiciousIPThrottlingSettingsResponseContentFieldStage)
}

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

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

func (g *GetSuspiciousIPThrottlingSettingsResponseContent) 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 (
	getTenantSettingsResponseContentFieldChangePassword                             = big.NewInt(1 << 0)
	getTenantSettingsResponseContentFieldGuardianMfaPage                            = big.NewInt(1 << 1)
	getTenantSettingsResponseContentFieldDefaultAudience                            = big.NewInt(1 << 2)
	getTenantSettingsResponseContentFieldDefaultDirectory                           = big.NewInt(1 << 3)
	getTenantSettingsResponseContentFieldErrorPage                                  = big.NewInt(1 << 4)
	getTenantSettingsResponseContentFieldDeviceFlow                                 = big.NewInt(1 << 5)
	getTenantSettingsResponseContentFieldDefaultTokenQuota                          = big.NewInt(1 << 6)
	getTenantSettingsResponseContentFieldFlags                                      = big.NewInt(1 << 7)
	getTenantSettingsResponseContentFieldFriendlyName                               = big.NewInt(1 << 8)
	getTenantSettingsResponseContentFieldPictureURL                                 = big.NewInt(1 << 9)
	getTenantSettingsResponseContentFieldSupportEmail                               = big.NewInt(1 << 10)
	getTenantSettingsResponseContentFieldSupportURL                                 = big.NewInt(1 << 11)
	getTenantSettingsResponseContentFieldAllowedLogoutURLs                          = big.NewInt(1 << 12)
	getTenantSettingsResponseContentFieldSessionLifetime                            = big.NewInt(1 << 13)
	getTenantSettingsResponseContentFieldIdleSessionLifetime                        = big.NewInt(1 << 14)
	getTenantSettingsResponseContentFieldEphemeralSessionLifetime                   = big.NewInt(1 << 15)
	getTenantSettingsResponseContentFieldIdleEphemeralSessionLifetime               = big.NewInt(1 << 16)
	getTenantSettingsResponseContentFieldSandboxVersion                             = big.NewInt(1 << 17)
	getTenantSettingsResponseContentFieldLegacySandboxVersion                       = big.NewInt(1 << 18)
	getTenantSettingsResponseContentFieldSandboxVersionsAvailable                   = big.NewInt(1 << 19)
	getTenantSettingsResponseContentFieldDefaultRedirectionURI                      = big.NewInt(1 << 20)
	getTenantSettingsResponseContentFieldEnabledLocales                             = big.NewInt(1 << 21)
	getTenantSettingsResponseContentFieldSessionCookie                              = big.NewInt(1 << 22)
	getTenantSettingsResponseContentFieldSessions                                   = big.NewInt(1 << 23)
	getTenantSettingsResponseContentFieldOidcLogout                                 = big.NewInt(1 << 24)
	getTenantSettingsResponseContentFieldAllowOrganizationNameInAuthenticationAPI   = big.NewInt(1 << 25)
	getTenantSettingsResponseContentFieldCustomizeMfaInPostloginAction              = big.NewInt(1 << 26)
	getTenantSettingsResponseContentFieldAcrValuesSupported                         = big.NewInt(1 << 27)
	getTenantSettingsResponseContentFieldMtls                                       = big.NewInt(1 << 28)
	getTenantSettingsResponseContentFieldPushedAuthorizationRequestsSupported       = big.NewInt(1 << 29)
	getTenantSettingsResponseContentFieldAuthorizationResponseIssParameterSupported = big.NewInt(1 << 30)
)

type GetTenantSettingsResponseContent struct {
	ChangePassword  *TenantSettingsPasswordPage `json:"change_password,omitempty" url:"change_password,omitempty"`
	GuardianMfaPage *TenantSettingsGuardianPage `json:"guardian_mfa_page,omitempty" url:"guardian_mfa_page,omitempty"`
	// Default audience for API authorization.
	DefaultAudience *string `json:"default_audience,omitempty" url:"default_audience,omitempty"`
	// Name of connection used for password grants at the `/token`endpoint. The following connection types are supported: LDAP, AD, Database Connections, Passwordless, Windows Azure Active Directory, ADFS.
	DefaultDirectory  *string                   `json:"default_directory,omitempty" url:"default_directory,omitempty"`
	ErrorPage         *TenantSettingsErrorPage  `json:"error_page,omitempty" url:"error_page,omitempty"`
	DeviceFlow        *TenantSettingsDeviceFlow `json:"device_flow,omitempty" url:"device_flow,omitempty"`
	DefaultTokenQuota *DefaultTokenQuota        `json:"default_token_quota,omitempty" url:"default_token_quota,omitempty"`
	Flags             *TenantSettingsFlags      `json:"flags,omitempty" url:"flags,omitempty"`
	// Friendly name for this tenant.
	FriendlyName *string `json:"friendly_name,omitempty" url:"friendly_name,omitempty"`
	// URL of logo to be shown for this tenant (recommended size: 150x150)
	PictureURL *string `json:"picture_url,omitempty" url:"picture_url,omitempty"`
	// End-user support email address.
	SupportEmail *string `json:"support_email,omitempty" url:"support_email,omitempty"`
	// End-user support URL.
	SupportURL *string `json:"support_url,omitempty" url:"support_url,omitempty"`
	// URLs that are valid to redirect to after logout from Auth0.
	AllowedLogoutURLs []string `json:"allowed_logout_urls,omitempty" url:"allowed_logout_urls,omitempty"`
	// Number of hours a session will stay valid.
	SessionLifetime *float64 `json:"session_lifetime,omitempty" url:"session_lifetime,omitempty"`
	// Number of hours for which a session can be inactive before the user must log in again.
	IdleSessionLifetime *float64 `json:"idle_session_lifetime,omitempty" url:"idle_session_lifetime,omitempty"`
	// Number of hours an ephemeral (non-persistent) session will stay valid.
	EphemeralSessionLifetime *float64 `json:"ephemeral_session_lifetime,omitempty" url:"ephemeral_session_lifetime,omitempty"`
	// Number of hours for which an ephemeral (non-persistent) session can be inactive before the user must log in again.
	IdleEphemeralSessionLifetime *float64 `json:"idle_ephemeral_session_lifetime,omitempty" url:"idle_ephemeral_session_lifetime,omitempty"`
	// Selected sandbox version for the extensibility environment.
	SandboxVersion *string `json:"sandbox_version,omitempty" url:"sandbox_version,omitempty"`
	// Selected sandbox version for rules and hooks extensibility.
	LegacySandboxVersion *string `json:"legacy_sandbox_version,omitempty" url:"legacy_sandbox_version,omitempty"`
	// Available sandbox versions for the extensibility environment.
	SandboxVersionsAvailable []string `json:"sandbox_versions_available,omitempty" url:"sandbox_versions_available,omitempty"`
	// The default absolute redirection uri, must be https
	DefaultRedirectionURI *string `json:"default_redirection_uri,omitempty" url:"default_redirection_uri,omitempty"`
	// Supported locales for the user interface.
	EnabledLocales []SupportedLocales        `json:"enabled_locales,omitempty" url:"enabled_locales,omitempty"`
	SessionCookie  *SessionCookieSchema      `json:"session_cookie,omitempty" url:"session_cookie,omitempty"`
	Sessions       *TenantSettingsSessions   `json:"sessions,omitempty" url:"sessions,omitempty"`
	OidcLogout     *TenantOidcLogoutSettings `json:"oidc_logout,omitempty" url:"oidc_logout,omitempty"`
	// Whether to accept an organization name instead of an ID on auth endpoints
	AllowOrganizationNameInAuthenticationAPI *bool `json:"allow_organization_name_in_authentication_api,omitempty" url:"allow_organization_name_in_authentication_api,omitempty"`
	// Whether to enable flexible factors for MFA in the PostLogin action
	CustomizeMfaInPostloginAction *bool `json:"customize_mfa_in_postlogin_action,omitempty" url:"customize_mfa_in_postlogin_action,omitempty"`
	// Supported ACR values
	AcrValuesSupported []string            `json:"acr_values_supported,omitempty" url:"acr_values_supported,omitempty"`
	Mtls               *TenantSettingsMtls `json:"mtls,omitempty" url:"mtls,omitempty"`
	// Enables the use of Pushed Authorization Requests
	PushedAuthorizationRequestsSupported *bool `json:"pushed_authorization_requests_supported,omitempty" url:"pushed_authorization_requests_supported,omitempty"`
	// Supports iss parameter in authorization responses
	AuthorizationResponseIssParameterSupported *bool `json:"authorization_response_iss_parameter_supported,omitempty" url:"authorization_response_iss_parameter_supported,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 *GetTenantSettingsResponseContent) GetChangePassword() TenantSettingsPasswordPage {
	if g == nil || g.ChangePassword == nil {
		return TenantSettingsPasswordPage{}
	}
	return *g.ChangePassword
}

func (g *GetTenantSettingsResponseContent) GetGuardianMfaPage() TenantSettingsGuardianPage {
	if g == nil || g.GuardianMfaPage == nil {
		return TenantSettingsGuardianPage{}
	}
	return *g.GuardianMfaPage
}

func (g *GetTenantSettingsResponseContent) GetDefaultAudience() string {
	if g == nil || g.DefaultAudience == nil {
		return ""
	}
	return *g.DefaultAudience
}

func (g *GetTenantSettingsResponseContent) GetDefaultDirectory() string {
	if g == nil || g.DefaultDirectory == nil {
		return ""
	}
	return *g.DefaultDirectory
}

func (g *GetTenantSettingsResponseContent) GetErrorPage() TenantSettingsErrorPage {
	if g == nil || g.ErrorPage == nil {
		return TenantSettingsErrorPage{}
	}
	return *g.ErrorPage
}

func (g *GetTenantSettingsResponseContent) GetDeviceFlow() TenantSettingsDeviceFlow {
	if g == nil || g.DeviceFlow == nil {
		return TenantSettingsDeviceFlow{}
	}
	return *g.DeviceFlow
}

func (g *GetTenantSettingsResponseContent) GetDefaultTokenQuota() DefaultTokenQuota {
	if g == nil || g.DefaultTokenQuota == nil {
		return DefaultTokenQuota{}
	}
	return *g.DefaultTokenQuota
}

func (g *GetTenantSettingsResponseContent) GetFlags() TenantSettingsFlags {
	if g == nil || g.Flags == nil {
		return TenantSettingsFlags{}
	}
	return *g.Flags
}

func (g *GetTenantSettingsResponseContent) GetFriendlyName() string {
	if g == nil || g.FriendlyName == nil {
		return ""
	}
	return *g.FriendlyName
}

func (g *GetTenantSettingsResponseContent) GetPictureURL() string {
	if g == nil || g.PictureURL == nil {
		return ""
	}
	return *g.PictureURL
}

func (g *GetTenantSettingsResponseContent) GetSupportEmail() string {
	if g == nil || g.SupportEmail == nil {
		return ""
	}
	return *g.SupportEmail
}

func (g *GetTenantSettingsResponseContent) GetSupportURL() string {
	if g == nil || g.SupportURL == nil {
		return ""
	}
	return *g.SupportURL
}

func (g *GetTenantSettingsResponseContent) GetAllowedLogoutURLs() []string {
	if g == nil || g.AllowedLogoutURLs == nil {
		return nil
	}
	return g.AllowedLogoutURLs
}

func (g *GetTenantSettingsResponseContent) GetSessionLifetime() float64 {
	if g == nil || g.SessionLifetime == nil {
		return 0
	}
	return *g.SessionLifetime
}

func (g *GetTenantSettingsResponseContent) GetIdleSessionLifetime() float64 {
	if g == nil || g.IdleSessionLifetime == nil {
		return 0
	}
	return *g.IdleSessionLifetime
}

func (g *GetTenantSettingsResponseContent) GetEphemeralSessionLifetime() float64 {
	if g == nil || g.EphemeralSessionLifetime == nil {
		return 0
	}
	return *g.EphemeralSessionLifetime
}

func (g *GetTenantSettingsResponseContent) GetIdleEphemeralSessionLifetime() float64 {
	if g == nil || g.IdleEphemeralSessionLifetime == nil {
		return 0
	}
	return *g.IdleEphemeralSessionLifetime
}

func (g *GetTenantSettingsResponseContent) GetSandboxVersion() string {
	if g == nil || g.SandboxVersion == nil {
		return ""
	}
	return *g.SandboxVersion
}

func (g *GetTenantSettingsResponseContent) GetLegacySandboxVersion() string {
	if g == nil || g.LegacySandboxVersion == nil {
		return ""
	}
	return *g.LegacySandboxVersion
}

func (g *GetTenantSettingsResponseContent) GetSandboxVersionsAvailable() []string {
	if g == nil || g.SandboxVersionsAvailable == nil {
		return nil
	}
	return g.SandboxVersionsAvailable
}

func (g *GetTenantSettingsResponseContent) GetDefaultRedirectionURI() string {
	if g == nil || g.DefaultRedirectionURI == nil {
		return ""
	}
	return *g.DefaultRedirectionURI
}

func (g *GetTenantSettingsResponseContent) GetEnabledLocales() []SupportedLocales {
	if g == nil || g.EnabledLocales == nil {
		return nil
	}
	return g.EnabledLocales
}

func (g *GetTenantSettingsResponseContent) GetSessionCookie() SessionCookieSchema {
	if g == nil || g.SessionCookie == nil {
		return SessionCookieSchema{}
	}
	return *g.SessionCookie
}

func (g *GetTenantSettingsResponseContent) GetSessions() TenantSettingsSessions {
	if g == nil || g.Sessions == nil {
		return TenantSettingsSessions{}
	}
	return *g.Sessions
}

func (g *GetTenantSettingsResponseContent) GetOidcLogout() TenantOidcLogoutSettings {
	if g == nil || g.OidcLogout == nil {
		return TenantOidcLogoutSettings{}
	}
	return *g.OidcLogout
}

func (g *GetTenantSettingsResponseContent) GetAllowOrganizationNameInAuthenticationAPI() bool {
	if g == nil || g.AllowOrganizationNameInAuthenticationAPI == nil {
		return false
	}
	return *g.AllowOrganizationNameInAuthenticationAPI
}

func (g *GetTenantSettingsResponseContent) GetCustomizeMfaInPostloginAction() bool {
	if g == nil || g.CustomizeMfaInPostloginAction == nil {
		return false
	}
	return *g.CustomizeMfaInPostloginAction
}

func (g *GetTenantSettingsResponseContent) GetAcrValuesSupported() []string {
	if g == nil || g.AcrValuesSupported == nil {
		return nil
	}
	return g.AcrValuesSupported
}

func (g *GetTenantSettingsResponseContent) GetMtls() TenantSettingsMtls {
	if g == nil || g.Mtls == nil {
		return TenantSettingsMtls{}
	}
	return *g.Mtls
}

func (g *GetTenantSettingsResponseContent) GetPushedAuthorizationRequestsSupported() bool {
	if g == nil || g.PushedAuthorizationRequestsSupported == nil {
		return false
	}
	return *g.PushedAuthorizationRequestsSupported
}

func (g *GetTenantSettingsResponseContent) GetAuthorizationResponseIssParameterSupported() bool {
	if g == nil || g.AuthorizationResponseIssParameterSupported == nil {
		return false
	}
	return *g.AuthorizationResponseIssParameterSupported
}

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

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

// SetChangePassword sets the ChangePassword field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetChangePassword(changePassword *TenantSettingsPasswordPage) {
	g.ChangePassword = changePassword
	g.require(getTenantSettingsResponseContentFieldChangePassword)
}

// SetGuardianMfaPage sets the GuardianMfaPage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetGuardianMfaPage(guardianMfaPage *TenantSettingsGuardianPage) {
	g.GuardianMfaPage = guardianMfaPage
	g.require(getTenantSettingsResponseContentFieldGuardianMfaPage)
}

// SetDefaultAudience sets the DefaultAudience field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetDefaultAudience(defaultAudience *string) {
	g.DefaultAudience = defaultAudience
	g.require(getTenantSettingsResponseContentFieldDefaultAudience)
}

// SetDefaultDirectory sets the DefaultDirectory field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetDefaultDirectory(defaultDirectory *string) {
	g.DefaultDirectory = defaultDirectory
	g.require(getTenantSettingsResponseContentFieldDefaultDirectory)
}

// SetErrorPage sets the ErrorPage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetErrorPage(errorPage *TenantSettingsErrorPage) {
	g.ErrorPage = errorPage
	g.require(getTenantSettingsResponseContentFieldErrorPage)
}

// SetDeviceFlow sets the DeviceFlow field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetDeviceFlow(deviceFlow *TenantSettingsDeviceFlow) {
	g.DeviceFlow = deviceFlow
	g.require(getTenantSettingsResponseContentFieldDeviceFlow)
}

// SetDefaultTokenQuota sets the DefaultTokenQuota field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetDefaultTokenQuota(defaultTokenQuota *DefaultTokenQuota) {
	g.DefaultTokenQuota = defaultTokenQuota
	g.require(getTenantSettingsResponseContentFieldDefaultTokenQuota)
}

// SetFlags sets the Flags field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetFlags(flags *TenantSettingsFlags) {
	g.Flags = flags
	g.require(getTenantSettingsResponseContentFieldFlags)
}

// SetFriendlyName sets the FriendlyName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetFriendlyName(friendlyName *string) {
	g.FriendlyName = friendlyName
	g.require(getTenantSettingsResponseContentFieldFriendlyName)
}

// SetPictureURL sets the PictureURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetPictureURL(pictureURL *string) {
	g.PictureURL = pictureURL
	g.require(getTenantSettingsResponseContentFieldPictureURL)
}

// SetSupportEmail sets the SupportEmail field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetSupportEmail(supportEmail *string) {
	g.SupportEmail = supportEmail
	g.require(getTenantSettingsResponseContentFieldSupportEmail)
}

// SetSupportURL sets the SupportURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetSupportURL(supportURL *string) {
	g.SupportURL = supportURL
	g.require(getTenantSettingsResponseContentFieldSupportURL)
}

// SetAllowedLogoutURLs sets the AllowedLogoutURLs field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetAllowedLogoutURLs(allowedLogoutURLs []string) {
	g.AllowedLogoutURLs = allowedLogoutURLs
	g.require(getTenantSettingsResponseContentFieldAllowedLogoutURLs)
}

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

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

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

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

// SetSandboxVersion sets the SandboxVersion field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetSandboxVersion(sandboxVersion *string) {
	g.SandboxVersion = sandboxVersion
	g.require(getTenantSettingsResponseContentFieldSandboxVersion)
}

// SetLegacySandboxVersion sets the LegacySandboxVersion field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetLegacySandboxVersion(legacySandboxVersion *string) {
	g.LegacySandboxVersion = legacySandboxVersion
	g.require(getTenantSettingsResponseContentFieldLegacySandboxVersion)
}

// SetSandboxVersionsAvailable sets the SandboxVersionsAvailable field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetSandboxVersionsAvailable(sandboxVersionsAvailable []string) {
	g.SandboxVersionsAvailable = sandboxVersionsAvailable
	g.require(getTenantSettingsResponseContentFieldSandboxVersionsAvailable)
}

// SetDefaultRedirectionURI sets the DefaultRedirectionURI field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetDefaultRedirectionURI(defaultRedirectionURI *string) {
	g.DefaultRedirectionURI = defaultRedirectionURI
	g.require(getTenantSettingsResponseContentFieldDefaultRedirectionURI)
}

// SetEnabledLocales sets the EnabledLocales field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetEnabledLocales(enabledLocales []SupportedLocales) {
	g.EnabledLocales = enabledLocales
	g.require(getTenantSettingsResponseContentFieldEnabledLocales)
}

// SetSessionCookie sets the SessionCookie field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetSessionCookie(sessionCookie *SessionCookieSchema) {
	g.SessionCookie = sessionCookie
	g.require(getTenantSettingsResponseContentFieldSessionCookie)
}

// SetSessions sets the Sessions field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetSessions(sessions *TenantSettingsSessions) {
	g.Sessions = sessions
	g.require(getTenantSettingsResponseContentFieldSessions)
}

// SetOidcLogout sets the OidcLogout field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetOidcLogout(oidcLogout *TenantOidcLogoutSettings) {
	g.OidcLogout = oidcLogout
	g.require(getTenantSettingsResponseContentFieldOidcLogout)
}

// SetAllowOrganizationNameInAuthenticationAPI sets the AllowOrganizationNameInAuthenticationAPI field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetAllowOrganizationNameInAuthenticationAPI(allowOrganizationNameInAuthenticationAPI *bool) {
	g.AllowOrganizationNameInAuthenticationAPI = allowOrganizationNameInAuthenticationAPI
	g.require(getTenantSettingsResponseContentFieldAllowOrganizationNameInAuthenticationAPI)
}

// SetCustomizeMfaInPostloginAction sets the CustomizeMfaInPostloginAction field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetCustomizeMfaInPostloginAction(customizeMfaInPostloginAction *bool) {
	g.CustomizeMfaInPostloginAction = customizeMfaInPostloginAction
	g.require(getTenantSettingsResponseContentFieldCustomizeMfaInPostloginAction)
}

// SetAcrValuesSupported sets the AcrValuesSupported field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetAcrValuesSupported(acrValuesSupported []string) {
	g.AcrValuesSupported = acrValuesSupported
	g.require(getTenantSettingsResponseContentFieldAcrValuesSupported)
}

// SetMtls sets the Mtls field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetMtls(mtls *TenantSettingsMtls) {
	g.Mtls = mtls
	g.require(getTenantSettingsResponseContentFieldMtls)
}

// SetPushedAuthorizationRequestsSupported sets the PushedAuthorizationRequestsSupported field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetPushedAuthorizationRequestsSupported(pushedAuthorizationRequestsSupported *bool) {
	g.PushedAuthorizationRequestsSupported = pushedAuthorizationRequestsSupported
	g.require(getTenantSettingsResponseContentFieldPushedAuthorizationRequestsSupported)
}

// SetAuthorizationResponseIssParameterSupported sets the AuthorizationResponseIssParameterSupported field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetTenantSettingsResponseContent) SetAuthorizationResponseIssParameterSupported(authorizationResponseIssParameterSupported *bool) {
	g.AuthorizationResponseIssParameterSupported = authorizationResponseIssParameterSupported
	g.require(getTenantSettingsResponseContentFieldAuthorizationResponseIssParameterSupported)
}

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

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

func (g *GetTenantSettingsResponseContent) 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 (
	getUniversalLoginTemplateFieldBody = big.NewInt(1 << 0)
)

type GetUniversalLoginTemplate struct {
	// The custom page template for the New Universal Login Experience
	Body *string `json:"body,omitempty" url:"body,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 *GetUniversalLoginTemplate) GetBody() string {
	if g == nil || g.Body == nil {
		return ""
	}
	return *g.Body
}

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

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

// SetBody sets the Body field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUniversalLoginTemplate) SetBody(body *string) {
	g.Body = body
	g.require(getUniversalLoginTemplateFieldBody)
}

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

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

func (g *GetUniversalLoginTemplate) 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 GetUniversalLoginTemplateResponseContent struct {
	GetUniversalLoginTemplate *GetUniversalLoginTemplate
	// The custom page template for the New Universal Login Experience
	String string

	typ string
}

func (g *GetUniversalLoginTemplateResponseContent) GetGetUniversalLoginTemplate() *GetUniversalLoginTemplate {
	if g == nil {
		return nil
	}
	return g.GetUniversalLoginTemplate
}

func (g *GetUniversalLoginTemplateResponseContent) GetString() string {
	if g == nil {
		return ""
	}
	return g.String
}

func (g *GetUniversalLoginTemplateResponseContent) UnmarshalJSON(data []byte) error {
	valueGetUniversalLoginTemplate := new(GetUniversalLoginTemplate)
	if err := json.Unmarshal(data, &valueGetUniversalLoginTemplate); err == nil {
		g.typ = "GetUniversalLoginTemplate"
		g.GetUniversalLoginTemplate = valueGetUniversalLoginTemplate
		return nil
	}
	var valueString string
	if err := json.Unmarshal(data, &valueString); err == nil {
		g.typ = "String"
		g.String = valueString
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, g)
}

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

type GetUniversalLoginTemplateResponseContentVisitor interface {
	VisitGetUniversalLoginTemplate(*GetUniversalLoginTemplate) error
	VisitString(string) error
}

func (g *GetUniversalLoginTemplateResponseContent) Accept(visitor GetUniversalLoginTemplateResponseContentVisitor) error {
	if g.typ == "GetUniversalLoginTemplate" || g.GetUniversalLoginTemplate != nil {
		return visitor.VisitGetUniversalLoginTemplate(g.GetUniversalLoginTemplate)
	}
	if g.typ == "String" || g.String != "" {
		return visitor.VisitString(g.String)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", g)
}

var (
	getUserAuthenticationMethodResponseContentFieldID                            = big.NewInt(1 << 0)
	getUserAuthenticationMethodResponseContentFieldType                          = big.NewInt(1 << 1)
	getUserAuthenticationMethodResponseContentFieldConfirmed                     = big.NewInt(1 << 2)
	getUserAuthenticationMethodResponseContentFieldName                          = big.NewInt(1 << 3)
	getUserAuthenticationMethodResponseContentFieldAuthenticationMethods         = big.NewInt(1 << 4)
	getUserAuthenticationMethodResponseContentFieldPreferredAuthenticationMethod = big.NewInt(1 << 5)
	getUserAuthenticationMethodResponseContentFieldLinkID                        = big.NewInt(1 << 6)
	getUserAuthenticationMethodResponseContentFieldPhoneNumber                   = big.NewInt(1 << 7)
	getUserAuthenticationMethodResponseContentFieldEmail                         = big.NewInt(1 << 8)
	getUserAuthenticationMethodResponseContentFieldKeyID                         = big.NewInt(1 << 9)
	getUserAuthenticationMethodResponseContentFieldPublicKey                     = big.NewInt(1 << 10)
	getUserAuthenticationMethodResponseContentFieldCreatedAt                     = big.NewInt(1 << 11)
	getUserAuthenticationMethodResponseContentFieldEnrolledAt                    = big.NewInt(1 << 12)
	getUserAuthenticationMethodResponseContentFieldLastAuthAt                    = big.NewInt(1 << 13)
	getUserAuthenticationMethodResponseContentFieldCredentialDeviceType          = big.NewInt(1 << 14)
	getUserAuthenticationMethodResponseContentFieldCredentialBackedUp            = big.NewInt(1 << 15)
	getUserAuthenticationMethodResponseContentFieldIdentityUserID                = big.NewInt(1 << 16)
	getUserAuthenticationMethodResponseContentFieldUserAgent                     = big.NewInt(1 << 17)
	getUserAuthenticationMethodResponseContentFieldAaguid                        = big.NewInt(1 << 18)
	getUserAuthenticationMethodResponseContentFieldRelyingPartyIdentifier        = big.NewInt(1 << 19)
)

type GetUserAuthenticationMethodResponseContent struct {
	// The ID of the authentication method (auto generated)
	ID   string                       `json:"id" url:"id"`
	Type AuthenticationMethodTypeEnum `json:"type" url:"type"`
	// The authentication method status
	Confirmed *bool `json:"confirmed,omitempty" url:"confirmed,omitempty"`
	// A human-readable label to identify the authentication method
	Name                          *string                               `json:"name,omitempty" url:"name,omitempty"`
	AuthenticationMethods         []*UserAuthenticationMethodProperties `json:"authentication_methods,omitempty" url:"authentication_methods,omitempty"`
	PreferredAuthenticationMethod *PreferredAuthenticationMethodEnum    `json:"preferred_authentication_method,omitempty" url:"preferred_authentication_method,omitempty"`
	// The ID of a linked authentication method. Linked authentication methods will be deleted together.
	LinkID *string `json:"link_id,omitempty" url:"link_id,omitempty"`
	// Applies to phone authentication methods only. The destination phone number used to send verification codes via text and voice.
	PhoneNumber *string `json:"phone_number,omitempty" url:"phone_number,omitempty"`
	// Applies to email and email-verification authentication methods only. The email address used to send verification messages.
	Email *string `json:"email,omitempty" url:"email,omitempty"`
	// Applies to webauthn authentication methods only. The ID of the generated credential.
	KeyID *string `json:"key_id,omitempty" url:"key_id,omitempty"`
	// Applies to webauthn authentication methods only. The public key.
	PublicKey *string `json:"public_key,omitempty" url:"public_key,omitempty"`
	// Authenticator creation date
	CreatedAt time.Time `json:"created_at" url:"created_at"`
	// Enrollment date
	EnrolledAt *time.Time `json:"enrolled_at,omitempty" url:"enrolled_at,omitempty"`
	// Last authentication
	LastAuthAt *time.Time `json:"last_auth_at,omitempty" url:"last_auth_at,omitempty"`
	// Applies to passkeys only. The kind of device the credential is stored on as defined by backup eligibility. "single_device" credentials cannot be backed up and synced to another device, "multi_device" credentials can be backed up if enabled by the end-user.
	CredentialDeviceType *string `json:"credential_device_type,omitempty" url:"credential_device_type,omitempty"`
	// Applies to passkeys only. Whether the credential was backed up.
	CredentialBackedUp *bool `json:"credential_backed_up,omitempty" url:"credential_backed_up,omitempty"`
	// Applies to passkeys only. The ID of the user identity linked with the authentication method.
	IdentityUserID *string `json:"identity_user_id,omitempty" url:"identity_user_id,omitempty"`
	// Applies to passkeys only. The user-agent of the browser used to create the passkey.
	UserAgent *string `json:"user_agent,omitempty" url:"user_agent,omitempty"`
	// Applies to passkey authentication methods only. Authenticator Attestation Globally Unique Identifier.
	Aaguid *string `json:"aaguid,omitempty" url:"aaguid,omitempty"`
	// Applies to webauthn/passkey authentication methods only. The credential's relying party identifier.
	RelyingPartyIdentifier *string `json:"relying_party_identifier,omitempty" url:"relying_party_identifier,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 *GetUserAuthenticationMethodResponseContent) GetID() string {
	if g == nil {
		return ""
	}
	return g.ID
}

func (g *GetUserAuthenticationMethodResponseContent) GetType() AuthenticationMethodTypeEnum {
	if g == nil {
		return ""
	}
	return g.Type
}

func (g *GetUserAuthenticationMethodResponseContent) GetConfirmed() bool {
	if g == nil || g.Confirmed == nil {
		return false
	}
	return *g.Confirmed
}

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

func (g *GetUserAuthenticationMethodResponseContent) GetAuthenticationMethods() []*UserAuthenticationMethodProperties {
	if g == nil || g.AuthenticationMethods == nil {
		return nil
	}
	return g.AuthenticationMethods
}

func (g *GetUserAuthenticationMethodResponseContent) GetPreferredAuthenticationMethod() PreferredAuthenticationMethodEnum {
	if g == nil || g.PreferredAuthenticationMethod == nil {
		return ""
	}
	return *g.PreferredAuthenticationMethod
}

func (g *GetUserAuthenticationMethodResponseContent) GetLinkID() string {
	if g == nil || g.LinkID == nil {
		return ""
	}
	return *g.LinkID
}

func (g *GetUserAuthenticationMethodResponseContent) GetPhoneNumber() string {
	if g == nil || g.PhoneNumber == nil {
		return ""
	}
	return *g.PhoneNumber
}

func (g *GetUserAuthenticationMethodResponseContent) GetEmail() string {
	if g == nil || g.Email == nil {
		return ""
	}
	return *g.Email
}

func (g *GetUserAuthenticationMethodResponseContent) GetKeyID() string {
	if g == nil || g.KeyID == nil {
		return ""
	}
	return *g.KeyID
}

func (g *GetUserAuthenticationMethodResponseContent) GetPublicKey() string {
	if g == nil || g.PublicKey == nil {
		return ""
	}
	return *g.PublicKey
}

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

func (g *GetUserAuthenticationMethodResponseContent) GetEnrolledAt() time.Time {
	if g == nil || g.EnrolledAt == nil {
		return time.Time{}
	}
	return *g.EnrolledAt
}

func (g *GetUserAuthenticationMethodResponseContent) GetLastAuthAt() time.Time {
	if g == nil || g.LastAuthAt == nil {
		return time.Time{}
	}
	return *g.LastAuthAt
}

func (g *GetUserAuthenticationMethodResponseContent) GetCredentialDeviceType() string {
	if g == nil || g.CredentialDeviceType == nil {
		return ""
	}
	return *g.CredentialDeviceType
}

func (g *GetUserAuthenticationMethodResponseContent) GetCredentialBackedUp() bool {
	if g == nil || g.CredentialBackedUp == nil {
		return false
	}
	return *g.CredentialBackedUp
}

func (g *GetUserAuthenticationMethodResponseContent) GetIdentityUserID() string {
	if g == nil || g.IdentityUserID == nil {
		return ""
	}
	return *g.IdentityUserID
}

func (g *GetUserAuthenticationMethodResponseContent) GetUserAgent() string {
	if g == nil || g.UserAgent == nil {
		return ""
	}
	return *g.UserAgent
}

func (g *GetUserAuthenticationMethodResponseContent) GetAaguid() string {
	if g == nil || g.Aaguid == nil {
		return ""
	}
	return *g.Aaguid
}

func (g *GetUserAuthenticationMethodResponseContent) GetRelyingPartyIdentifier() string {
	if g == nil || g.RelyingPartyIdentifier == nil {
		return ""
	}
	return *g.RelyingPartyIdentifier
}

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

func (g *GetUserAuthenticationMethodResponseContent) 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 *GetUserAuthenticationMethodResponseContent) SetID(id string) {
	g.ID = id
	g.require(getUserAuthenticationMethodResponseContentFieldID)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetType(type_ AuthenticationMethodTypeEnum) {
	g.Type = type_
	g.require(getUserAuthenticationMethodResponseContentFieldType)
}

// SetConfirmed sets the Confirmed field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetConfirmed(confirmed *bool) {
	g.Confirmed = confirmed
	g.require(getUserAuthenticationMethodResponseContentFieldConfirmed)
}

// 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 *GetUserAuthenticationMethodResponseContent) SetName(name *string) {
	g.Name = name
	g.require(getUserAuthenticationMethodResponseContentFieldName)
}

// SetAuthenticationMethods sets the AuthenticationMethods field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetAuthenticationMethods(authenticationMethods []*UserAuthenticationMethodProperties) {
	g.AuthenticationMethods = authenticationMethods
	g.require(getUserAuthenticationMethodResponseContentFieldAuthenticationMethods)
}

// SetPreferredAuthenticationMethod sets the PreferredAuthenticationMethod field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetPreferredAuthenticationMethod(preferredAuthenticationMethod *PreferredAuthenticationMethodEnum) {
	g.PreferredAuthenticationMethod = preferredAuthenticationMethod
	g.require(getUserAuthenticationMethodResponseContentFieldPreferredAuthenticationMethod)
}

// SetLinkID sets the LinkID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetLinkID(linkID *string) {
	g.LinkID = linkID
	g.require(getUserAuthenticationMethodResponseContentFieldLinkID)
}

// SetPhoneNumber sets the PhoneNumber field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetPhoneNumber(phoneNumber *string) {
	g.PhoneNumber = phoneNumber
	g.require(getUserAuthenticationMethodResponseContentFieldPhoneNumber)
}

// SetEmail sets the Email field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetEmail(email *string) {
	g.Email = email
	g.require(getUserAuthenticationMethodResponseContentFieldEmail)
}

// SetKeyID sets the KeyID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetKeyID(keyID *string) {
	g.KeyID = keyID
	g.require(getUserAuthenticationMethodResponseContentFieldKeyID)
}

// SetPublicKey sets the PublicKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetPublicKey(publicKey *string) {
	g.PublicKey = publicKey
	g.require(getUserAuthenticationMethodResponseContentFieldPublicKey)
}

// 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 *GetUserAuthenticationMethodResponseContent) SetCreatedAt(createdAt time.Time) {
	g.CreatedAt = createdAt
	g.require(getUserAuthenticationMethodResponseContentFieldCreatedAt)
}

// SetEnrolledAt sets the EnrolledAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetEnrolledAt(enrolledAt *time.Time) {
	g.EnrolledAt = enrolledAt
	g.require(getUserAuthenticationMethodResponseContentFieldEnrolledAt)
}

// SetLastAuthAt sets the LastAuthAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetLastAuthAt(lastAuthAt *time.Time) {
	g.LastAuthAt = lastAuthAt
	g.require(getUserAuthenticationMethodResponseContentFieldLastAuthAt)
}

// SetCredentialDeviceType sets the CredentialDeviceType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetCredentialDeviceType(credentialDeviceType *string) {
	g.CredentialDeviceType = credentialDeviceType
	g.require(getUserAuthenticationMethodResponseContentFieldCredentialDeviceType)
}

// SetCredentialBackedUp sets the CredentialBackedUp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetCredentialBackedUp(credentialBackedUp *bool) {
	g.CredentialBackedUp = credentialBackedUp
	g.require(getUserAuthenticationMethodResponseContentFieldCredentialBackedUp)
}

// SetIdentityUserID sets the IdentityUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetIdentityUserID(identityUserID *string) {
	g.IdentityUserID = identityUserID
	g.require(getUserAuthenticationMethodResponseContentFieldIdentityUserID)
}

// SetUserAgent sets the UserAgent field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetUserAgent(userAgent *string) {
	g.UserAgent = userAgent
	g.require(getUserAuthenticationMethodResponseContentFieldUserAgent)
}

// SetAaguid sets the Aaguid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetAaguid(aaguid *string) {
	g.Aaguid = aaguid
	g.require(getUserAuthenticationMethodResponseContentFieldAaguid)
}

// SetRelyingPartyIdentifier sets the RelyingPartyIdentifier field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserAuthenticationMethodResponseContent) SetRelyingPartyIdentifier(relyingPartyIdentifier *string) {
	g.RelyingPartyIdentifier = relyingPartyIdentifier
	g.require(getUserAuthenticationMethodResponseContentFieldRelyingPartyIdentifier)
}

func (g *GetUserAuthenticationMethodResponseContent) UnmarshalJSON(data []byte) error {
	type embed GetUserAuthenticationMethodResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt  *internal.DateTime `json:"created_at"`
		EnrolledAt *internal.DateTime `json:"enrolled_at,omitempty"`
		LastAuthAt *internal.DateTime `json:"last_auth_at,omitempty"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetUserAuthenticationMethodResponseContent(unmarshaler.embed)
	g.CreatedAt = unmarshaler.CreatedAt.Time()
	g.EnrolledAt = unmarshaler.EnrolledAt.TimePtr()
	g.LastAuthAt = unmarshaler.LastAuthAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetUserAuthenticationMethodResponseContent) MarshalJSON() ([]byte, error) {
	type embed GetUserAuthenticationMethodResponseContent
	var marshaler = struct {
		embed
		CreatedAt  *internal.DateTime `json:"created_at"`
		EnrolledAt *internal.DateTime `json:"enrolled_at,omitempty"`
		LastAuthAt *internal.DateTime `json:"last_auth_at,omitempty"`
	}{
		embed:      embed(*g),
		CreatedAt:  internal.NewDateTime(g.CreatedAt),
		EnrolledAt: internal.NewOptionalDateTime(g.EnrolledAt),
		LastAuthAt: internal.NewOptionalDateTime(g.LastAuthAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetUserAuthenticationMethodResponseContent) 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 (
	getUserGroupsResponseContentFieldGroups = big.NewInt(1 << 0)
	getUserGroupsResponseContentFieldNext   = big.NewInt(1 << 1)
)

type GetUserGroupsResponseContent struct {
	Groups []*Group `json:"groups" url:"groups"`
	// A token to retrieve the next page of results.
	Next *string `json:"next,omitempty" url:"next,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 *GetUserGroupsResponseContent) GetGroups() []*Group {
	if g == nil {
		return nil
	}
	return g.Groups
}

func (g *GetUserGroupsResponseContent) GetNext() string {
	if g == nil || g.Next == nil {
		return ""
	}
	return *g.Next
}

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

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

// SetGroups sets the Groups field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserGroupsResponseContent) SetGroups(groups []*Group) {
	g.Groups = groups
	g.require(getUserGroupsResponseContentFieldGroups)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetUserGroupsResponseContent) SetNext(next *string) {
	g.Next = next
	g.require(getUserGroupsResponseContentFieldNext)
}

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

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

func (g *GetUserGroupsResponseContent) 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 (
	getVerifiableCredentialTemplateResponseContentFieldID                         = big.NewInt(1 << 0)
	getVerifiableCredentialTemplateResponseContentFieldName                       = big.NewInt(1 << 1)
	getVerifiableCredentialTemplateResponseContentFieldType                       = big.NewInt(1 << 2)
	getVerifiableCredentialTemplateResponseContentFieldDialect                    = big.NewInt(1 << 3)
	getVerifiableCredentialTemplateResponseContentFieldPresentation               = big.NewInt(1 << 4)
	getVerifiableCredentialTemplateResponseContentFieldCustomCertificateAuthority = big.NewInt(1 << 5)
	getVerifiableCredentialTemplateResponseContentFieldWellKnownTrustedIssuers    = big.NewInt(1 << 6)
	getVerifiableCredentialTemplateResponseContentFieldCreatedAt                  = big.NewInt(1 << 7)
	getVerifiableCredentialTemplateResponseContentFieldUpdatedAt                  = big.NewInt(1 << 8)
)

type GetVerifiableCredentialTemplateResponseContent struct {
	// The id of the template.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name of the template.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// The type of the template.
	Type *string `json:"type,omitempty" url:"type,omitempty"`
	// The dialect of the template.
	Dialect      *string                 `json:"dialect,omitempty" url:"dialect,omitempty"`
	Presentation *MdlPresentationRequest `json:"presentation,omitempty" url:"presentation,omitempty"`
	// The custom certificate authority.
	CustomCertificateAuthority *string `json:"custom_certificate_authority,omitempty" url:"custom_certificate_authority,omitempty"`
	// The well-known trusted issuers, comma separated.
	WellKnownTrustedIssuers *string `json:"well_known_trusted_issuers,omitempty" url:"well_known_trusted_issuers,omitempty"`
	// The date and time the template was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The date and time the template was created.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

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

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

func (g *GetVerifiableCredentialTemplateResponseContent) GetType() string {
	if g == nil || g.Type == nil {
		return ""
	}
	return *g.Type
}

func (g *GetVerifiableCredentialTemplateResponseContent) GetDialect() string {
	if g == nil || g.Dialect == nil {
		return ""
	}
	return *g.Dialect
}

func (g *GetVerifiableCredentialTemplateResponseContent) GetPresentation() MdlPresentationRequest {
	if g == nil || g.Presentation == nil {
		return MdlPresentationRequest{}
	}
	return *g.Presentation
}

func (g *GetVerifiableCredentialTemplateResponseContent) GetCustomCertificateAuthority() string {
	if g == nil || g.CustomCertificateAuthority == nil {
		return ""
	}
	return *g.CustomCertificateAuthority
}

func (g *GetVerifiableCredentialTemplateResponseContent) GetWellKnownTrustedIssuers() string {
	if g == nil || g.WellKnownTrustedIssuers == nil {
		return ""
	}
	return *g.WellKnownTrustedIssuers
}

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

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

func (g *GetVerifiableCredentialTemplateResponseContent) GetExtraProperties() map[string]interface{} {
	return g.ExtraProperties
}

func (g *GetVerifiableCredentialTemplateResponseContent) 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 *GetVerifiableCredentialTemplateResponseContent) SetID(id *string) {
	g.ID = id
	g.require(getVerifiableCredentialTemplateResponseContentFieldID)
}

// 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 *GetVerifiableCredentialTemplateResponseContent) SetName(name *string) {
	g.Name = name
	g.require(getVerifiableCredentialTemplateResponseContentFieldName)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetVerifiableCredentialTemplateResponseContent) SetType(type_ *string) {
	g.Type = type_
	g.require(getVerifiableCredentialTemplateResponseContentFieldType)
}

// SetDialect sets the Dialect field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetVerifiableCredentialTemplateResponseContent) SetDialect(dialect *string) {
	g.Dialect = dialect
	g.require(getVerifiableCredentialTemplateResponseContentFieldDialect)
}

// SetPresentation sets the Presentation field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetVerifiableCredentialTemplateResponseContent) SetPresentation(presentation *MdlPresentationRequest) {
	g.Presentation = presentation
	g.require(getVerifiableCredentialTemplateResponseContentFieldPresentation)
}

// SetCustomCertificateAuthority sets the CustomCertificateAuthority field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetVerifiableCredentialTemplateResponseContent) SetCustomCertificateAuthority(customCertificateAuthority *string) {
	g.CustomCertificateAuthority = customCertificateAuthority
	g.require(getVerifiableCredentialTemplateResponseContentFieldCustomCertificateAuthority)
}

// SetWellKnownTrustedIssuers sets the WellKnownTrustedIssuers field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GetVerifiableCredentialTemplateResponseContent) SetWellKnownTrustedIssuers(wellKnownTrustedIssuers *string) {
	g.WellKnownTrustedIssuers = wellKnownTrustedIssuers
	g.require(getVerifiableCredentialTemplateResponseContentFieldWellKnownTrustedIssuers)
}

// 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 *GetVerifiableCredentialTemplateResponseContent) SetCreatedAt(createdAt *time.Time) {
	g.CreatedAt = createdAt
	g.require(getVerifiableCredentialTemplateResponseContentFieldCreatedAt)
}

// 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 *GetVerifiableCredentialTemplateResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getVerifiableCredentialTemplateResponseContentFieldUpdatedAt)
}

func (g *GetVerifiableCredentialTemplateResponseContent) UnmarshalJSON(data []byte) error {
	type embed GetVerifiableCredentialTemplateResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetVerifiableCredentialTemplateResponseContent(unmarshaler.embed)
	g.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	g.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.ExtraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetVerifiableCredentialTemplateResponseContent) MarshalJSON() ([]byte, error) {
	type embed GetVerifiableCredentialTemplateResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*g),
		CreatedAt: internal.NewOptionalDateTime(g.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(g.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, g.ExtraProperties)
}

func (g *GetVerifiableCredentialTemplateResponseContent) 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)
}

// Represents the metadata of a group. Member lists are retrieved via a separate endpoint.
var (
	groupFieldID             = big.NewInt(1 << 0)
	groupFieldName           = big.NewInt(1 << 1)
	groupFieldExternalID     = big.NewInt(1 << 2)
	groupFieldConnectionID   = big.NewInt(1 << 3)
	groupFieldOrganizationID = big.NewInt(1 << 4)
	groupFieldTenantName     = big.NewInt(1 << 5)
	groupFieldDescription    = big.NewInt(1 << 6)
	groupFieldCreatedAt      = big.NewInt(1 << 7)
	groupFieldUpdatedAt      = big.NewInt(1 << 8)
)

type Group struct {
	// Unique identifier for the group (service-generated).
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// Name of the group. Must be unique within its scope (connection, organization, or tenant). Must contain between 1 and 128 printable ASCII characters.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// External identifier for the group, often used for SCIM synchronization. Max length of 256 characters.
	ExternalID *string `json:"external_id,omitempty" url:"external_id,omitempty"`
	// Identifier for the connection this group belongs to (if a connection group).
	ConnectionID *string `json:"connection_id,omitempty" url:"connection_id,omitempty"`
	// Identifier for the organization this group belongs to (if an organization group).
	OrganizationID *string `json:"organization_id,omitempty" url:"organization_id,omitempty"`
	// Identifier for the tenant this group belongs to.
	TenantName  *string `json:"tenant_name,omitempty" url:"tenant_name,omitempty"`
	Description *string `json:"description,omitempty" url:"description,omitempty"`
	// Timestamp of when the group was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// Timestamp of when the group was last updated.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,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 *Group) GetID() string {
	if g == nil || g.ID == nil {
		return ""
	}
	return *g.ID
}

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

func (g *Group) GetExternalID() string {
	if g == nil || g.ExternalID == nil {
		return ""
	}
	return *g.ExternalID
}

func (g *Group) GetConnectionID() string {
	if g == nil || g.ConnectionID == nil {
		return ""
	}
	return *g.ConnectionID
}

func (g *Group) GetOrganizationID() string {
	if g == nil || g.OrganizationID == nil {
		return ""
	}
	return *g.OrganizationID
}

func (g *Group) GetTenantName() string {
	if g == nil || g.TenantName == nil {
		return ""
	}
	return *g.TenantName
}

func (g *Group) GetDescription() string {
	if g == nil || g.Description == nil {
		return ""
	}
	return *g.Description
}

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

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

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

func (g *Group) 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 *Group) SetID(id *string) {
	g.ID = id
	g.require(groupFieldID)
}

// 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 *Group) SetName(name *string) {
	g.Name = name
	g.require(groupFieldName)
}

// SetExternalID sets the ExternalID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *Group) SetExternalID(externalID *string) {
	g.ExternalID = externalID
	g.require(groupFieldExternalID)
}

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *Group) SetConnectionID(connectionID *string) {
	g.ConnectionID = connectionID
	g.require(groupFieldConnectionID)
}

// SetOrganizationID sets the OrganizationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *Group) SetOrganizationID(organizationID *string) {
	g.OrganizationID = organizationID
	g.require(groupFieldOrganizationID)
}

// SetTenantName sets the TenantName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *Group) SetTenantName(tenantName *string) {
	g.TenantName = tenantName
	g.require(groupFieldTenantName)
}

// SetDescription sets the Description field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *Group) SetDescription(description *string) {
	g.Description = description
	g.require(groupFieldDescription)
}

// 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 *Group) SetCreatedAt(createdAt *time.Time) {
	g.CreatedAt = createdAt
	g.require(groupFieldCreatedAt)
}

// 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 *Group) SetUpdatedAt(updatedAt *time.Time) {
	g.UpdatedAt = updatedAt
	g.require(groupFieldUpdatedAt)
}

func (g *Group) UnmarshalJSON(data []byte) error {
	type embed Group
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = Group(unmarshaler.embed)
	g.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	g.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *Group) MarshalJSON() ([]byte, error) {
	type embed Group
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*g),
		CreatedAt: internal.NewOptionalDateTime(g.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(g.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *Group) 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)
}

// Enrollment date and time.
type GuardianEnrollmentDate = string

// Optional. Specifies which factor the user must enroll with.<br />Note: Parameter can only be used with Universal Login; it cannot be used with Classic Login or custom MFA pages.
type GuardianEnrollmentFactorEnum string

const (
	GuardianEnrollmentFactorEnumPushNotification GuardianEnrollmentFactorEnum = "push-notification"
	GuardianEnrollmentFactorEnumPhone            GuardianEnrollmentFactorEnum = "phone"
	GuardianEnrollmentFactorEnumEmail            GuardianEnrollmentFactorEnum = "email"
	GuardianEnrollmentFactorEnumOtp              GuardianEnrollmentFactorEnum = "otp"
	GuardianEnrollmentFactorEnumWebauthnRoaming  GuardianEnrollmentFactorEnum = "webauthn-roaming"
	GuardianEnrollmentFactorEnumWebauthnPlatform GuardianEnrollmentFactorEnum = "webauthn-platform"
)

func NewGuardianEnrollmentFactorEnumFromString(s string) (GuardianEnrollmentFactorEnum, error) {
	switch s {
	case "push-notification":
		return GuardianEnrollmentFactorEnumPushNotification, nil
	case "phone":
		return GuardianEnrollmentFactorEnumPhone, nil
	case "email":
		return GuardianEnrollmentFactorEnumEmail, nil
	case "otp":
		return GuardianEnrollmentFactorEnumOtp, nil
	case "webauthn-roaming":
		return GuardianEnrollmentFactorEnumWebauthnRoaming, nil
	case "webauthn-platform":
		return GuardianEnrollmentFactorEnumWebauthnPlatform, nil
	}
	var t GuardianEnrollmentFactorEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

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

// Status of this enrollment. Can be `pending` or `confirmed`.
type GuardianEnrollmentStatus string

const (
	GuardianEnrollmentStatusPending   GuardianEnrollmentStatus = "pending"
	GuardianEnrollmentStatusConfirmed GuardianEnrollmentStatus = "confirmed"
)

func NewGuardianEnrollmentStatusFromString(s string) (GuardianEnrollmentStatus, error) {
	switch s {
	case "pending":
		return GuardianEnrollmentStatusPending, nil
	case "confirmed":
		return GuardianEnrollmentStatusConfirmed, nil
	}
	var t GuardianEnrollmentStatus
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

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

var (
	guardianFactorFieldEnabled      = big.NewInt(1 << 0)
	guardianFactorFieldTrialExpired = big.NewInt(1 << 1)
	guardianFactorFieldName         = big.NewInt(1 << 2)
)

type GuardianFactor struct {
	// Whether this factor is enabled (true) or disabled (false).
	Enabled bool `json:"enabled" url:"enabled"`
	// Whether trial limits have been exceeded.
	TrialExpired *bool                   `json:"trial_expired,omitempty" url:"trial_expired,omitempty"`
	Name         *GuardianFactorNameEnum `json:"name,omitempty" url:"name,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 *GuardianFactor) GetEnabled() bool {
	if g == nil {
		return false
	}
	return g.Enabled
}

func (g *GuardianFactor) GetTrialExpired() bool {
	if g == nil || g.TrialExpired == nil {
		return false
	}
	return *g.TrialExpired
}

func (g *GuardianFactor) GetName() GuardianFactorNameEnum {
	if g == nil || g.Name == nil {
		return ""
	}
	return *g.Name
}

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

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

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GuardianFactor) SetEnabled(enabled bool) {
	g.Enabled = enabled
	g.require(guardianFactorFieldEnabled)
}

// SetTrialExpired sets the TrialExpired field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (g *GuardianFactor) SetTrialExpired(trialExpired *bool) {
	g.TrialExpired = trialExpired
	g.require(guardianFactorFieldTrialExpired)
}

// 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 *GuardianFactor) SetName(name *GuardianFactorNameEnum) {
	g.Name = name
	g.require(guardianFactorFieldName)
}

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

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

func (g *GuardianFactor) 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)
}

// Factor name. Can be `sms`, `push-notification`, `email`, `duo` `otp` `webauthn-roaming`, `webauthn-platform`, or `recovery-code`.
type GuardianFactorNameEnum string

const (
	GuardianFactorNameEnumPushNotification GuardianFactorNameEnum = "push-notification"
	GuardianFactorNameEnumSms              GuardianFactorNameEnum = "sms"
	GuardianFactorNameEnumEmail            GuardianFactorNameEnum = "email"
	GuardianFactorNameEnumDuo              GuardianFactorNameEnum = "duo"
	GuardianFactorNameEnumOtp              GuardianFactorNameEnum = "otp"
	GuardianFactorNameEnumWebauthnRoaming  GuardianFactorNameEnum = "webauthn-roaming"
	GuardianFactorNameEnumWebauthnPlatform GuardianFactorNameEnum = "webauthn-platform"
	GuardianFactorNameEnumRecoveryCode     GuardianFactorNameEnum = "recovery-code"
)

func NewGuardianFactorNameEnumFromString(s string) (GuardianFactorNameEnum, error) {
	switch s {
	case "push-notification":
		return GuardianFactorNameEnumPushNotification, nil
	case "sms":
		return GuardianFactorNameEnumSms, nil
	case "email":
		return GuardianFactorNameEnumEmail, nil
	case "duo":
		return GuardianFactorNameEnumDuo, nil
	case "otp":
		return GuardianFactorNameEnumOtp, nil
	case "webauthn-roaming":
		return GuardianFactorNameEnumWebauthnRoaming, nil
	case "webauthn-platform":
		return GuardianFactorNameEnumWebauthnPlatform, nil
	case "recovery-code":
		return GuardianFactorNameEnumRecoveryCode, nil
	}
	var t GuardianFactorNameEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

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

type GuardianFactorPhoneFactorMessageTypeEnum string

const (
	GuardianFactorPhoneFactorMessageTypeEnumSms   GuardianFactorPhoneFactorMessageTypeEnum = "sms"
	GuardianFactorPhoneFactorMessageTypeEnumVoice GuardianFactorPhoneFactorMessageTypeEnum = "voice"
)

func NewGuardianFactorPhoneFactorMessageTypeEnumFromString(s string) (GuardianFactorPhoneFactorMessageTypeEnum, error) {
	switch s {
	case "sms":
		return GuardianFactorPhoneFactorMessageTypeEnumSms, nil
	case "voice":
		return GuardianFactorPhoneFactorMessageTypeEnumVoice, nil
	}
	var t GuardianFactorPhoneFactorMessageTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

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

type GuardianFactorsProviderPushNotificationProviderDataEnum string

const (
	GuardianFactorsProviderPushNotificationProviderDataEnumGuardian GuardianFactorsProviderPushNotificationProviderDataEnum = "guardian"
	GuardianFactorsProviderPushNotificationProviderDataEnumSns      GuardianFactorsProviderPushNotificationProviderDataEnum = "sns"
	GuardianFactorsProviderPushNotificationProviderDataEnumDirect   GuardianFactorsProviderPushNotificationProviderDataEnum = "direct"
)

func NewGuardianFactorsProviderPushNotificationProviderDataEnumFromString(s string) (GuardianFactorsProviderPushNotificationProviderDataEnum, error) {
	switch s {
	case "guardian":
		return GuardianFactorsProviderPushNotificationProviderDataEnumGuardian, nil
	case "sns":
		return GuardianFactorsProviderPushNotificationProviderDataEnumSns, nil
	case "direct":
		return GuardianFactorsProviderPushNotificationProviderDataEnumDirect, nil
	}
	var t GuardianFactorsProviderPushNotificationProviderDataEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

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

type GuardianFactorsProviderSmsProviderEnum string

const (
	GuardianFactorsProviderSmsProviderEnumAuth0            GuardianFactorsProviderSmsProviderEnum = "auth0"
	GuardianFactorsProviderSmsProviderEnumTwilio           GuardianFactorsProviderSmsProviderEnum = "twilio"
	GuardianFactorsProviderSmsProviderEnumPhoneMessageHook GuardianFactorsProviderSmsProviderEnum = "phone-message-hook"
)

func NewGuardianFactorsProviderSmsProviderEnumFromString(s string) (GuardianFactorsProviderSmsProviderEnum, error) {
	switch s {
	case "auth0":
		return GuardianFactorsProviderSmsProviderEnumAuth0, nil
	case "twilio":
		return GuardianFactorsProviderSmsProviderEnumTwilio, nil
	case "phone-message-hook":
		return GuardianFactorsProviderSmsProviderEnumPhoneMessageHook, nil
	}
	var t GuardianFactorsProviderSmsProviderEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

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

// This must be provided to verify primary social, enterprise and passwordless email identities. Also, is needed to verify secondary identities.
var (
	identityFieldUserID       = big.NewInt(1 << 0)
	identityFieldProvider     = big.NewInt(1 << 1)
	identityFieldConnectionID = big.NewInt(1 << 2)
)

type Identity struct {
	// user_id of the identity to be verified.
	UserID   string               `json:"user_id" url:"user_id"`
	Provider IdentityProviderEnum `json:"provider" url:"provider"`
	// connection_id of the identity.
	ConnectionID *string `json:"connection_id,omitempty" url:"connection_id,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 (i *Identity) GetUserID() string {
	if i == nil {
		return ""
	}
	return i.UserID
}

func (i *Identity) GetProvider() IdentityProviderEnum {
	if i == nil {
		return ""
	}
	return i.Provider
}

func (i *Identity) GetConnectionID() string {
	if i == nil || i.ConnectionID == nil {
		return ""
	}
	return *i.ConnectionID
}

func (i *Identity) GetExtraProperties() map[string]interface{} {
	return i.extraProperties
}

func (i *Identity) require(field *big.Int) {
	if i.explicitFields == nil {
		i.explicitFields = big.NewInt(0)
	}
	i.explicitFields.Or(i.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 (i *Identity) SetUserID(userID string) {
	i.UserID = userID
	i.require(identityFieldUserID)
}

// SetProvider sets the Provider field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *Identity) SetProvider(provider IdentityProviderEnum) {
	i.Provider = provider
	i.require(identityFieldProvider)
}

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *Identity) SetConnectionID(connectionID *string) {
	i.ConnectionID = connectionID
	i.require(identityFieldConnectionID)
}

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

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

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

// Identity provider name of the identity (e.g. `google-oauth2`).
type IdentityProviderEnum string

const (
	IdentityProviderEnumAd                  IdentityProviderEnum = "ad"
	IdentityProviderEnumAdfs                IdentityProviderEnum = "adfs"
	IdentityProviderEnumAmazon              IdentityProviderEnum = "amazon"
	IdentityProviderEnumApple               IdentityProviderEnum = "apple"
	IdentityProviderEnumDropbox             IdentityProviderEnum = "dropbox"
	IdentityProviderEnumBitbucket           IdentityProviderEnum = "bitbucket"
	IdentityProviderEnumAol                 IdentityProviderEnum = "aol"
	IdentityProviderEnumAuth0Oidc           IdentityProviderEnum = "auth0-oidc"
	IdentityProviderEnumAuth0               IdentityProviderEnum = "auth0"
	IdentityProviderEnumBaidu               IdentityProviderEnum = "baidu"
	IdentityProviderEnumBitly               IdentityProviderEnum = "bitly"
	IdentityProviderEnumBox                 IdentityProviderEnum = "box"
	IdentityProviderEnumCustom              IdentityProviderEnum = "custom"
	IdentityProviderEnumDaccount            IdentityProviderEnum = "daccount"
	IdentityProviderEnumDwolla              IdentityProviderEnum = "dwolla"
	IdentityProviderEnumEmail               IdentityProviderEnum = "email"
	IdentityProviderEnumEvernoteSandbox     IdentityProviderEnum = "evernote-sandbox"
	IdentityProviderEnumEvernote            IdentityProviderEnum = "evernote"
	IdentityProviderEnumExact               IdentityProviderEnum = "exact"
	IdentityProviderEnumFacebook            IdentityProviderEnum = "facebook"
	IdentityProviderEnumFitbit              IdentityProviderEnum = "fitbit"
	IdentityProviderEnumFlickr              IdentityProviderEnum = "flickr"
	IdentityProviderEnumGithub              IdentityProviderEnum = "github"
	IdentityProviderEnumGoogleApps          IdentityProviderEnum = "google-apps"
	IdentityProviderEnumGoogleOauth2        IdentityProviderEnum = "google-oauth2"
	IdentityProviderEnumInstagram           IdentityProviderEnum = "instagram"
	IdentityProviderEnumIP                  IdentityProviderEnum = "ip"
	IdentityProviderEnumLine                IdentityProviderEnum = "line"
	IdentityProviderEnumLinkedin            IdentityProviderEnum = "linkedin"
	IdentityProviderEnumMiicard             IdentityProviderEnum = "miicard"
	IdentityProviderEnumOauth1              IdentityProviderEnum = "oauth1"
	IdentityProviderEnumOauth2              IdentityProviderEnum = "oauth2"
	IdentityProviderEnumOffice365           IdentityProviderEnum = "office365"
	IdentityProviderEnumOidc                IdentityProviderEnum = "oidc"
	IdentityProviderEnumOkta                IdentityProviderEnum = "okta"
	IdentityProviderEnumPaypal              IdentityProviderEnum = "paypal"
	IdentityProviderEnumPaypalSandbox       IdentityProviderEnum = "paypal-sandbox"
	IdentityProviderEnumPingfederate        IdentityProviderEnum = "pingfederate"
	IdentityProviderEnumPlanningcenter      IdentityProviderEnum = "planningcenter"
	IdentityProviderEnumRenren              IdentityProviderEnum = "renren"
	IdentityProviderEnumSalesforceCommunity IdentityProviderEnum = "salesforce-community"
	IdentityProviderEnumSalesforceSandbox   IdentityProviderEnum = "salesforce-sandbox"
	IdentityProviderEnumSalesforce          IdentityProviderEnum = "salesforce"
	IdentityProviderEnumSamlp               IdentityProviderEnum = "samlp"
	IdentityProviderEnumSharepoint          IdentityProviderEnum = "sharepoint"
	IdentityProviderEnumShopify             IdentityProviderEnum = "shopify"
	IdentityProviderEnumShop                IdentityProviderEnum = "shop"
	IdentityProviderEnumSms                 IdentityProviderEnum = "sms"
	IdentityProviderEnumSoundcloud          IdentityProviderEnum = "soundcloud"
	IdentityProviderEnumThecitySandbox      IdentityProviderEnum = "thecity-sandbox"
	IdentityProviderEnumThecity             IdentityProviderEnum = "thecity"
	IdentityProviderEnumThirtysevensignals  IdentityProviderEnum = "thirtysevensignals"
	IdentityProviderEnumTwitter             IdentityProviderEnum = "twitter"
	IdentityProviderEnumUntappd             IdentityProviderEnum = "untappd"
	IdentityProviderEnumVkontakte           IdentityProviderEnum = "vkontakte"
	IdentityProviderEnumWaad                IdentityProviderEnum = "waad"
	IdentityProviderEnumWeibo               IdentityProviderEnum = "weibo"
	IdentityProviderEnumWindowslive         IdentityProviderEnum = "windowslive"
	IdentityProviderEnumWordpress           IdentityProviderEnum = "wordpress"
	IdentityProviderEnumYahoo               IdentityProviderEnum = "yahoo"
	IdentityProviderEnumYammer              IdentityProviderEnum = "yammer"
	IdentityProviderEnumYandex              IdentityProviderEnum = "yandex"
)

func NewIdentityProviderEnumFromString(s string) (IdentityProviderEnum, error) {
	switch s {
	case "ad":
		return IdentityProviderEnumAd, nil
	case "adfs":
		return IdentityProviderEnumAdfs, nil
	case "amazon":
		return IdentityProviderEnumAmazon, nil
	case "apple":
		return IdentityProviderEnumApple, nil
	case "dropbox":
		return IdentityProviderEnumDropbox, nil
	case "bitbucket":
		return IdentityProviderEnumBitbucket, nil
	case "aol":
		return IdentityProviderEnumAol, nil
	case "auth0-oidc":
		return IdentityProviderEnumAuth0Oidc, nil
	case "auth0":
		return IdentityProviderEnumAuth0, nil
	case "baidu":
		return IdentityProviderEnumBaidu, nil
	case "bitly":
		return IdentityProviderEnumBitly, nil
	case "box":
		return IdentityProviderEnumBox, nil
	case "custom":
		return IdentityProviderEnumCustom, nil
	case "daccount":
		return IdentityProviderEnumDaccount, nil
	case "dwolla":
		return IdentityProviderEnumDwolla, nil
	case "email":
		return IdentityProviderEnumEmail, nil
	case "evernote-sandbox":
		return IdentityProviderEnumEvernoteSandbox, nil
	case "evernote":
		return IdentityProviderEnumEvernote, nil
	case "exact":
		return IdentityProviderEnumExact, nil
	case "facebook":
		return IdentityProviderEnumFacebook, nil
	case "fitbit":
		return IdentityProviderEnumFitbit, nil
	case "flickr":
		return IdentityProviderEnumFlickr, nil
	case "github":
		return IdentityProviderEnumGithub, nil
	case "google-apps":
		return IdentityProviderEnumGoogleApps, nil
	case "google-oauth2":
		return IdentityProviderEnumGoogleOauth2, nil
	case "instagram":
		return IdentityProviderEnumInstagram, nil
	case "ip":
		return IdentityProviderEnumIP, nil
	case "line":
		return IdentityProviderEnumLine, nil
	case "linkedin":
		return IdentityProviderEnumLinkedin, nil
	case "miicard":
		return IdentityProviderEnumMiicard, nil
	case "oauth1":
		return IdentityProviderEnumOauth1, nil
	case "oauth2":
		return IdentityProviderEnumOauth2, nil
	case "office365":
		return IdentityProviderEnumOffice365, nil
	case "oidc":
		return IdentityProviderEnumOidc, nil
	case "okta":
		return IdentityProviderEnumOkta, nil
	case "paypal":
		return IdentityProviderEnumPaypal, nil
	case "paypal-sandbox":
		return IdentityProviderEnumPaypalSandbox, nil
	case "pingfederate":
		return IdentityProviderEnumPingfederate, nil
	case "planningcenter":
		return IdentityProviderEnumPlanningcenter, nil
	case "renren":
		return IdentityProviderEnumRenren, nil
	case "salesforce-community":
		return IdentityProviderEnumSalesforceCommunity, nil
	case "salesforce-sandbox":
		return IdentityProviderEnumSalesforceSandbox, nil
	case "salesforce":
		return IdentityProviderEnumSalesforce, nil
	case "samlp":
		return IdentityProviderEnumSamlp, nil
	case "sharepoint":
		return IdentityProviderEnumSharepoint, nil
	case "shopify":
		return IdentityProviderEnumShopify, nil
	case "shop":
		return IdentityProviderEnumShop, nil
	case "sms":
		return IdentityProviderEnumSms, nil
	case "soundcloud":
		return IdentityProviderEnumSoundcloud, nil
	case "thecity-sandbox":
		return IdentityProviderEnumThecitySandbox, nil
	case "thecity":
		return IdentityProviderEnumThecity, nil
	case "thirtysevensignals":
		return IdentityProviderEnumThirtysevensignals, nil
	case "twitter":
		return IdentityProviderEnumTwitter, nil
	case "untappd":
		return IdentityProviderEnumUntappd, nil
	case "vkontakte":
		return IdentityProviderEnumVkontakte, nil
	case "waad":
		return IdentityProviderEnumWaad, nil
	case "weibo":
		return IdentityProviderEnumWeibo, nil
	case "windowslive":
		return IdentityProviderEnumWindowslive, nil
	case "wordpress":
		return IdentityProviderEnumWordpress, nil
	case "yahoo":
		return IdentityProviderEnumYahoo, nil
	case "yammer":
		return IdentityProviderEnumYammer, nil
	case "yandex":
		return IdentityProviderEnumYandex, nil
	}
	var t IdentityProviderEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (i IdentityProviderEnum) Ptr() *IdentityProviderEnum {
	return &i
}

// Encryption key
var (
	importEncryptionKeyResponseContentFieldKid       = big.NewInt(1 << 0)
	importEncryptionKeyResponseContentFieldType      = big.NewInt(1 << 1)
	importEncryptionKeyResponseContentFieldState     = big.NewInt(1 << 2)
	importEncryptionKeyResponseContentFieldCreatedAt = big.NewInt(1 << 3)
	importEncryptionKeyResponseContentFieldUpdatedAt = big.NewInt(1 << 4)
	importEncryptionKeyResponseContentFieldParentKid = big.NewInt(1 << 5)
	importEncryptionKeyResponseContentFieldPublicKey = big.NewInt(1 << 6)
)

type ImportEncryptionKeyResponseContent struct {
	// Key ID
	Kid   string             `json:"kid" url:"kid"`
	Type  EncryptionKeyType  `json:"type" url:"type"`
	State EncryptionKeyState `json:"state" url:"state"`
	// Key creation timestamp
	CreatedAt time.Time `json:"created_at" url:"created_at"`
	// Key update timestamp
	UpdatedAt time.Time `json:"updated_at" url:"updated_at"`
	// ID of parent wrapping key
	ParentKid string `json:"parent_kid" url:"parent_kid"`
	// Public key in PEM format
	PublicKey *string `json:"public_key,omitempty" url:"public_key,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 (i *ImportEncryptionKeyResponseContent) GetKid() string {
	if i == nil {
		return ""
	}
	return i.Kid
}

func (i *ImportEncryptionKeyResponseContent) GetType() EncryptionKeyType {
	if i == nil {
		return ""
	}
	return i.Type
}

func (i *ImportEncryptionKeyResponseContent) GetState() EncryptionKeyState {
	if i == nil {
		return ""
	}
	return i.State
}

func (i *ImportEncryptionKeyResponseContent) GetCreatedAt() time.Time {
	if i == nil {
		return time.Time{}
	}
	return i.CreatedAt
}

func (i *ImportEncryptionKeyResponseContent) GetUpdatedAt() time.Time {
	if i == nil {
		return time.Time{}
	}
	return i.UpdatedAt
}

func (i *ImportEncryptionKeyResponseContent) GetParentKid() string {
	if i == nil {
		return ""
	}
	return i.ParentKid
}

func (i *ImportEncryptionKeyResponseContent) GetPublicKey() string {
	if i == nil || i.PublicKey == nil {
		return ""
	}
	return *i.PublicKey
}

func (i *ImportEncryptionKeyResponseContent) GetExtraProperties() map[string]interface{} {
	return i.extraProperties
}

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

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *ImportEncryptionKeyResponseContent) SetKid(kid string) {
	i.Kid = kid
	i.require(importEncryptionKeyResponseContentFieldKid)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *ImportEncryptionKeyResponseContent) SetType(type_ EncryptionKeyType) {
	i.Type = type_
	i.require(importEncryptionKeyResponseContentFieldType)
}

// SetState sets the State field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *ImportEncryptionKeyResponseContent) SetState(state EncryptionKeyState) {
	i.State = state
	i.require(importEncryptionKeyResponseContentFieldState)
}

// 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 (i *ImportEncryptionKeyResponseContent) SetCreatedAt(createdAt time.Time) {
	i.CreatedAt = createdAt
	i.require(importEncryptionKeyResponseContentFieldCreatedAt)
}

// 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 (i *ImportEncryptionKeyResponseContent) SetUpdatedAt(updatedAt time.Time) {
	i.UpdatedAt = updatedAt
	i.require(importEncryptionKeyResponseContentFieldUpdatedAt)
}

// SetParentKid sets the ParentKid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *ImportEncryptionKeyResponseContent) SetParentKid(parentKid string) {
	i.ParentKid = parentKid
	i.require(importEncryptionKeyResponseContentFieldParentKid)
}

// SetPublicKey sets the PublicKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *ImportEncryptionKeyResponseContent) SetPublicKey(publicKey *string) {
	i.PublicKey = publicKey
	i.require(importEncryptionKeyResponseContentFieldPublicKey)
}

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

func (i *ImportEncryptionKeyResponseContent) MarshalJSON() ([]byte, error) {
	type embed ImportEncryptionKeyResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at"`
		UpdatedAt *internal.DateTime `json:"updated_at"`
	}{
		embed:     embed(*i),
		CreatedAt: internal.NewDateTime(i.CreatedAt),
		UpdatedAt: internal.NewDateTime(i.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, i.explicitFields)
	return json.Marshal(explicitMarshaler)
}

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

// Integration defines a self contained functioning unit which partners
// publish. A partner may create one or many of these integrations.
var (
	integrationFieldID                = big.NewInt(1 << 0)
	integrationFieldCatalogID         = big.NewInt(1 << 1)
	integrationFieldURLSlug           = big.NewInt(1 << 2)
	integrationFieldPartnerID         = big.NewInt(1 << 3)
	integrationFieldName              = big.NewInt(1 << 4)
	integrationFieldDescription       = big.NewInt(1 << 5)
	integrationFieldShortDescription  = big.NewInt(1 << 6)
	integrationFieldLogo              = big.NewInt(1 << 7)
	integrationFieldFeatureType       = big.NewInt(1 << 8)
	integrationFieldTermsOfUseURL     = big.NewInt(1 << 9)
	integrationFieldPrivacyPolicyURL  = big.NewInt(1 << 10)
	integrationFieldPublicSupportLink = big.NewInt(1 << 11)
	integrationFieldCurrentRelease    = big.NewInt(1 << 12)
	integrationFieldCreatedAt         = big.NewInt(1 << 13)
	integrationFieldUpdatedAt         = big.NewInt(1 << 14)
)

type Integration struct {
	// id is a system generated GUID. This same ID is designed to be federated in
	// all the applicable localities.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// catalog_id refers to the ID in the marketplace catalog
	CatalogID *string `json:"catalog_id,omitempty" url:"catalog_id,omitempty"`
	// url_slug refers to the url_slug in the marketplace catalog
	URLSlug *string `json:"url_slug,omitempty" url:"url_slug,omitempty"`
	// partner_id is the foreign key reference to the partner account this
	// integration belongs to.
	PartnerID *string `json:"partner_id,omitempty" url:"partner_id,omitempty"`
	// name is the integration name, which will be used for display purposes in
	// the marketplace.
	//
	// To start we're going to make sure the display name is at least 3
	// characters. Can adjust this easily later.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// description adds more text for the integration name -- also relevant for
	// the marketplace listing.
	Description *string `json:"description,omitempty" url:"description,omitempty"`
	// short_description is the brief description of the integration, which is used for display purposes in cards
	ShortDescription  *string                     `json:"short_description,omitempty" url:"short_description,omitempty"`
	Logo              *string                     `json:"logo,omitempty" url:"logo,omitempty"`
	FeatureType       *IntegrationFeatureTypeEnum `json:"feature_type,omitempty" url:"feature_type,omitempty"`
	TermsOfUseURL     *string                     `json:"terms_of_use_url,omitempty" url:"terms_of_use_url,omitempty"`
	PrivacyPolicyURL  *string                     `json:"privacy_policy_url,omitempty" url:"privacy_policy_url,omitempty"`
	PublicSupportLink *string                     `json:"public_support_link,omitempty" url:"public_support_link,omitempty"`
	CurrentRelease    *IntegrationRelease         `json:"current_release,omitempty" url:"current_release,omitempty"`
	CreatedAt         *time.Time                  `json:"created_at,omitempty" url:"created_at,omitempty"`
	UpdatedAt         *time.Time                  `json:"updated_at,omitempty" url:"updated_at,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 (i *Integration) GetID() string {
	if i == nil || i.ID == nil {
		return ""
	}
	return *i.ID
}

func (i *Integration) GetCatalogID() string {
	if i == nil || i.CatalogID == nil {
		return ""
	}
	return *i.CatalogID
}

func (i *Integration) GetURLSlug() string {
	if i == nil || i.URLSlug == nil {
		return ""
	}
	return *i.URLSlug
}

func (i *Integration) GetPartnerID() string {
	if i == nil || i.PartnerID == nil {
		return ""
	}
	return *i.PartnerID
}

func (i *Integration) GetName() string {
	if i == nil || i.Name == nil {
		return ""
	}
	return *i.Name
}

func (i *Integration) GetDescription() string {
	if i == nil || i.Description == nil {
		return ""
	}
	return *i.Description
}

func (i *Integration) GetShortDescription() string {
	if i == nil || i.ShortDescription == nil {
		return ""
	}
	return *i.ShortDescription
}

func (i *Integration) GetLogo() string {
	if i == nil || i.Logo == nil {
		return ""
	}
	return *i.Logo
}

func (i *Integration) GetFeatureType() IntegrationFeatureTypeEnum {
	if i == nil || i.FeatureType == nil {
		return ""
	}
	return *i.FeatureType
}

func (i *Integration) GetTermsOfUseURL() string {
	if i == nil || i.TermsOfUseURL == nil {
		return ""
	}
	return *i.TermsOfUseURL
}

func (i *Integration) GetPrivacyPolicyURL() string {
	if i == nil || i.PrivacyPolicyURL == nil {
		return ""
	}
	return *i.PrivacyPolicyURL
}

func (i *Integration) GetPublicSupportLink() string {
	if i == nil || i.PublicSupportLink == nil {
		return ""
	}
	return *i.PublicSupportLink
}

func (i *Integration) GetCurrentRelease() IntegrationRelease {
	if i == nil || i.CurrentRelease == nil {
		return IntegrationRelease{}
	}
	return *i.CurrentRelease
}

func (i *Integration) GetCreatedAt() time.Time {
	if i == nil || i.CreatedAt == nil {
		return time.Time{}
	}
	return *i.CreatedAt
}

func (i *Integration) GetUpdatedAt() time.Time {
	if i == nil || i.UpdatedAt == nil {
		return time.Time{}
	}
	return *i.UpdatedAt
}

func (i *Integration) GetExtraProperties() map[string]interface{} {
	return i.extraProperties
}

func (i *Integration) require(field *big.Int) {
	if i.explicitFields == nil {
		i.explicitFields = big.NewInt(0)
	}
	i.explicitFields.Or(i.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 (i *Integration) SetID(id *string) {
	i.ID = id
	i.require(integrationFieldID)
}

// SetCatalogID sets the CatalogID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *Integration) SetCatalogID(catalogID *string) {
	i.CatalogID = catalogID
	i.require(integrationFieldCatalogID)
}

// SetURLSlug sets the URLSlug field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *Integration) SetURLSlug(urlSlug *string) {
	i.URLSlug = urlSlug
	i.require(integrationFieldURLSlug)
}

// SetPartnerID sets the PartnerID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *Integration) SetPartnerID(partnerID *string) {
	i.PartnerID = partnerID
	i.require(integrationFieldPartnerID)
}

// 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 (i *Integration) SetName(name *string) {
	i.Name = name
	i.require(integrationFieldName)
}

// SetDescription sets the Description field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *Integration) SetDescription(description *string) {
	i.Description = description
	i.require(integrationFieldDescription)
}

// SetShortDescription sets the ShortDescription field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *Integration) SetShortDescription(shortDescription *string) {
	i.ShortDescription = shortDescription
	i.require(integrationFieldShortDescription)
}

// SetLogo sets the Logo field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *Integration) SetLogo(logo *string) {
	i.Logo = logo
	i.require(integrationFieldLogo)
}

// SetFeatureType sets the FeatureType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *Integration) SetFeatureType(featureType *IntegrationFeatureTypeEnum) {
	i.FeatureType = featureType
	i.require(integrationFieldFeatureType)
}

// SetTermsOfUseURL sets the TermsOfUseURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *Integration) SetTermsOfUseURL(termsOfUseURL *string) {
	i.TermsOfUseURL = termsOfUseURL
	i.require(integrationFieldTermsOfUseURL)
}

// SetPrivacyPolicyURL sets the PrivacyPolicyURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *Integration) SetPrivacyPolicyURL(privacyPolicyURL *string) {
	i.PrivacyPolicyURL = privacyPolicyURL
	i.require(integrationFieldPrivacyPolicyURL)
}

// SetPublicSupportLink sets the PublicSupportLink field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *Integration) SetPublicSupportLink(publicSupportLink *string) {
	i.PublicSupportLink = publicSupportLink
	i.require(integrationFieldPublicSupportLink)
}

// SetCurrentRelease sets the CurrentRelease field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *Integration) SetCurrentRelease(currentRelease *IntegrationRelease) {
	i.CurrentRelease = currentRelease
	i.require(integrationFieldCurrentRelease)
}

// 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 (i *Integration) SetCreatedAt(createdAt *time.Time) {
	i.CreatedAt = createdAt
	i.require(integrationFieldCreatedAt)
}

// 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 (i *Integration) SetUpdatedAt(updatedAt *time.Time) {
	i.UpdatedAt = updatedAt
	i.require(integrationFieldUpdatedAt)
}

func (i *Integration) UnmarshalJSON(data []byte) error {
	type embed Integration
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*i),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*i = Integration(unmarshaler.embed)
	i.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	i.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *i)
	if err != nil {
		return err
	}
	i.extraProperties = extraProperties
	i.rawJSON = json.RawMessage(data)
	return nil
}

func (i *Integration) MarshalJSON() ([]byte, error) {
	type embed Integration
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*i),
		CreatedAt: internal.NewOptionalDateTime(i.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(i.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, i.explicitFields)
	return json.Marshal(explicitMarshaler)
}

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

// feature_type is the type of the integration.
type IntegrationFeatureTypeEnum string

const (
	IntegrationFeatureTypeEnumUnspecified      IntegrationFeatureTypeEnum = "unspecified"
	IntegrationFeatureTypeEnumAction           IntegrationFeatureTypeEnum = "action"
	IntegrationFeatureTypeEnumSocialConnection IntegrationFeatureTypeEnum = "social_connection"
	IntegrationFeatureTypeEnumLogStream        IntegrationFeatureTypeEnum = "log_stream"
	IntegrationFeatureTypeEnumSSOIntegration   IntegrationFeatureTypeEnum = "sso_integration"
	IntegrationFeatureTypeEnumSmsProvider      IntegrationFeatureTypeEnum = "sms_provider"
)

func NewIntegrationFeatureTypeEnumFromString(s string) (IntegrationFeatureTypeEnum, error) {
	switch s {
	case "unspecified":
		return IntegrationFeatureTypeEnumUnspecified, nil
	case "action":
		return IntegrationFeatureTypeEnumAction, nil
	case "social_connection":
		return IntegrationFeatureTypeEnumSocialConnection, nil
	case "log_stream":
		return IntegrationFeatureTypeEnumLogStream, nil
	case "sso_integration":
		return IntegrationFeatureTypeEnumSSOIntegration, nil
	case "sms_provider":
		return IntegrationFeatureTypeEnumSmsProvider, nil
	}
	var t IntegrationFeatureTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (i IntegrationFeatureTypeEnum) Ptr() *IntegrationFeatureTypeEnum {
	return &i
}

var (
	integrationReleaseFieldID                    = big.NewInt(1 << 0)
	integrationReleaseFieldTrigger               = big.NewInt(1 << 1)
	integrationReleaseFieldSemver                = big.NewInt(1 << 2)
	integrationReleaseFieldRequiredSecrets       = big.NewInt(1 << 3)
	integrationReleaseFieldRequiredConfiguration = big.NewInt(1 << 4)
)

type IntegrationRelease struct {
	// The id of the associated IntegrationRelease
	ID      *string            `json:"id,omitempty" url:"id,omitempty"`
	Trigger *ActionTrigger     `json:"trigger,omitempty" url:"trigger,omitempty"`
	Semver  *IntegrationSemVer `json:"semver,omitempty" url:"semver,omitempty"`
	// required_secrets declares all the necessary secrets for an integration to
	// work.
	RequiredSecrets []*IntegrationRequiredParam `json:"required_secrets,omitempty" url:"required_secrets,omitempty"`
	// required_configuration declares all the necessary configuration fields for an integration to work.
	RequiredConfiguration []*IntegrationRequiredParam `json:"required_configuration,omitempty" url:"required_configuration,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (i *IntegrationRelease) GetID() string {
	if i == nil || i.ID == nil {
		return ""
	}
	return *i.ID
}

func (i *IntegrationRelease) GetTrigger() ActionTrigger {
	if i == nil || i.Trigger == nil {
		return ActionTrigger{}
	}
	return *i.Trigger
}

func (i *IntegrationRelease) GetSemver() IntegrationSemVer {
	if i == nil || i.Semver == nil {
		return IntegrationSemVer{}
	}
	return *i.Semver
}

func (i *IntegrationRelease) GetRequiredSecrets() []*IntegrationRequiredParam {
	if i == nil || i.RequiredSecrets == nil {
		return nil
	}
	return i.RequiredSecrets
}

func (i *IntegrationRelease) GetRequiredConfiguration() []*IntegrationRequiredParam {
	if i == nil || i.RequiredConfiguration == nil {
		return nil
	}
	return i.RequiredConfiguration
}

func (i *IntegrationRelease) GetExtraProperties() map[string]interface{} {
	return i.ExtraProperties
}

func (i *IntegrationRelease) require(field *big.Int) {
	if i.explicitFields == nil {
		i.explicitFields = big.NewInt(0)
	}
	i.explicitFields.Or(i.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 (i *IntegrationRelease) SetID(id *string) {
	i.ID = id
	i.require(integrationReleaseFieldID)
}

// SetTrigger sets the Trigger field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationRelease) SetTrigger(trigger *ActionTrigger) {
	i.Trigger = trigger
	i.require(integrationReleaseFieldTrigger)
}

// SetSemver sets the Semver field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationRelease) SetSemver(semver *IntegrationSemVer) {
	i.Semver = semver
	i.require(integrationReleaseFieldSemver)
}

// SetRequiredSecrets sets the RequiredSecrets field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationRelease) SetRequiredSecrets(requiredSecrets []*IntegrationRequiredParam) {
	i.RequiredSecrets = requiredSecrets
	i.require(integrationReleaseFieldRequiredSecrets)
}

// SetRequiredConfiguration sets the RequiredConfiguration field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationRelease) SetRequiredConfiguration(requiredConfiguration []*IntegrationRequiredParam) {
	i.RequiredConfiguration = requiredConfiguration
	i.require(integrationReleaseFieldRequiredConfiguration)
}

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

func (i *IntegrationRelease) MarshalJSON() ([]byte, error) {
	type embed IntegrationRelease
	var marshaler = struct {
		embed
	}{
		embed: embed(*i),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, i.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, i.ExtraProperties)
}

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

// Param are form input values, primarily utilized when specifying secrets and
// configuration values for actions.
//
// These are especially important for partner integrations -- but can be
// exposed to tenant admins as well if they want to parameterize their custom
// actions.
var (
	integrationRequiredParamFieldType         = big.NewInt(1 << 0)
	integrationRequiredParamFieldName         = big.NewInt(1 << 1)
	integrationRequiredParamFieldRequired     = big.NewInt(1 << 2)
	integrationRequiredParamFieldOptional     = big.NewInt(1 << 3)
	integrationRequiredParamFieldLabel        = big.NewInt(1 << 4)
	integrationRequiredParamFieldDescription  = big.NewInt(1 << 5)
	integrationRequiredParamFieldDefaultValue = big.NewInt(1 << 6)
	integrationRequiredParamFieldPlaceholder  = big.NewInt(1 << 7)
	integrationRequiredParamFieldOptions      = big.NewInt(1 << 8)
)

type IntegrationRequiredParam struct {
	Type *IntegrationRequiredParamTypeEnum `json:"type,omitempty" url:"type,omitempty"`
	// The name of the parameter.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// The flag for if this parameter is required.
	Required *bool `json:"required,omitempty" url:"required,omitempty"`
	// The temp flag for if this parameter is required (experimental; for Labs use only).
	Optional *bool `json:"optional,omitempty" url:"optional,omitempty"`
	// The short label for this parameter.
	Label *string `json:"label,omitempty" url:"label,omitempty"`
	// The lengthier description for this parameter.
	Description *string `json:"description,omitempty" url:"description,omitempty"`
	// The default value for this parameter.
	DefaultValue *string `json:"default_value,omitempty" url:"default_value,omitempty"`
	// Placeholder text for this parameter.
	Placeholder *string `json:"placeholder,omitempty" url:"placeholder,omitempty"`
	// The allowable options for this param.
	Options []*IntegrationRequiredParamOption `json:"options,omitempty" url:"options,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 (i *IntegrationRequiredParam) GetType() IntegrationRequiredParamTypeEnum {
	if i == nil || i.Type == nil {
		return ""
	}
	return *i.Type
}

func (i *IntegrationRequiredParam) GetName() string {
	if i == nil || i.Name == nil {
		return ""
	}
	return *i.Name
}

func (i *IntegrationRequiredParam) GetRequired() bool {
	if i == nil || i.Required == nil {
		return false
	}
	return *i.Required
}

func (i *IntegrationRequiredParam) GetOptional() bool {
	if i == nil || i.Optional == nil {
		return false
	}
	return *i.Optional
}

func (i *IntegrationRequiredParam) GetLabel() string {
	if i == nil || i.Label == nil {
		return ""
	}
	return *i.Label
}

func (i *IntegrationRequiredParam) GetDescription() string {
	if i == nil || i.Description == nil {
		return ""
	}
	return *i.Description
}

func (i *IntegrationRequiredParam) GetDefaultValue() string {
	if i == nil || i.DefaultValue == nil {
		return ""
	}
	return *i.DefaultValue
}

func (i *IntegrationRequiredParam) GetPlaceholder() string {
	if i == nil || i.Placeholder == nil {
		return ""
	}
	return *i.Placeholder
}

func (i *IntegrationRequiredParam) GetOptions() []*IntegrationRequiredParamOption {
	if i == nil || i.Options == nil {
		return nil
	}
	return i.Options
}

func (i *IntegrationRequiredParam) GetExtraProperties() map[string]interface{} {
	return i.extraProperties
}

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

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationRequiredParam) SetType(type_ *IntegrationRequiredParamTypeEnum) {
	i.Type = type_
	i.require(integrationRequiredParamFieldType)
}

// 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 (i *IntegrationRequiredParam) SetName(name *string) {
	i.Name = name
	i.require(integrationRequiredParamFieldName)
}

// SetRequired sets the Required field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationRequiredParam) SetRequired(required *bool) {
	i.Required = required
	i.require(integrationRequiredParamFieldRequired)
}

// SetOptional sets the Optional field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationRequiredParam) SetOptional(optional *bool) {
	i.Optional = optional
	i.require(integrationRequiredParamFieldOptional)
}

// SetLabel sets the Label field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationRequiredParam) SetLabel(label *string) {
	i.Label = label
	i.require(integrationRequiredParamFieldLabel)
}

// SetDescription sets the Description field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationRequiredParam) SetDescription(description *string) {
	i.Description = description
	i.require(integrationRequiredParamFieldDescription)
}

// SetDefaultValue sets the DefaultValue field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationRequiredParam) SetDefaultValue(defaultValue *string) {
	i.DefaultValue = defaultValue
	i.require(integrationRequiredParamFieldDefaultValue)
}

// SetPlaceholder sets the Placeholder field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationRequiredParam) SetPlaceholder(placeholder *string) {
	i.Placeholder = placeholder
	i.require(integrationRequiredParamFieldPlaceholder)
}

// SetOptions sets the Options field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationRequiredParam) SetOptions(options []*IntegrationRequiredParamOption) {
	i.Options = options
	i.require(integrationRequiredParamFieldOptions)
}

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

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

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

var (
	integrationRequiredParamOptionFieldValue = big.NewInt(1 << 0)
	integrationRequiredParamOptionFieldLabel = big.NewInt(1 << 1)
)

type IntegrationRequiredParamOption struct {
	// The value of an option that will be used within the application.
	Value *string `json:"value,omitempty" url:"value,omitempty"`
	// The display value of an option suitable for displaying in a UI.
	Label *string `json:"label,omitempty" url:"label,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 (i *IntegrationRequiredParamOption) GetValue() string {
	if i == nil || i.Value == nil {
		return ""
	}
	return *i.Value
}

func (i *IntegrationRequiredParamOption) GetLabel() string {
	if i == nil || i.Label == nil {
		return ""
	}
	return *i.Label
}

func (i *IntegrationRequiredParamOption) GetExtraProperties() map[string]interface{} {
	return i.extraProperties
}

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

// 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 (i *IntegrationRequiredParamOption) SetValue(value *string) {
	i.Value = value
	i.require(integrationRequiredParamOptionFieldValue)
}

// SetLabel sets the Label field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationRequiredParamOption) SetLabel(label *string) {
	i.Label = label
	i.require(integrationRequiredParamOptionFieldLabel)
}

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

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

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

type IntegrationRequiredParamTypeEnum string

const (
	IntegrationRequiredParamTypeEnumUnspecified IntegrationRequiredParamTypeEnum = "UNSPECIFIED"
	IntegrationRequiredParamTypeEnumString      IntegrationRequiredParamTypeEnum = "STRING"
)

func NewIntegrationRequiredParamTypeEnumFromString(s string) (IntegrationRequiredParamTypeEnum, error) {
	switch s {
	case "UNSPECIFIED":
		return IntegrationRequiredParamTypeEnumUnspecified, nil
	case "STRING":
		return IntegrationRequiredParamTypeEnumString, nil
	}
	var t IntegrationRequiredParamTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (i IntegrationRequiredParamTypeEnum) Ptr() *IntegrationRequiredParamTypeEnum {
	return &i
}

// Semver denotes the major.minor version of an integration release
var (
	integrationSemVerFieldMajor = big.NewInt(1 << 0)
	integrationSemVerFieldMinor = big.NewInt(1 << 1)
)

type IntegrationSemVer struct {
	// Major is the major number of a semver
	Major *int `json:"major,omitempty" url:"major,omitempty"`
	// Minior is the minior number of a semver
	Minor *int `json:"minor,omitempty" url:"minor,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 (i *IntegrationSemVer) GetMajor() int {
	if i == nil || i.Major == nil {
		return 0
	}
	return *i.Major
}

func (i *IntegrationSemVer) GetMinor() int {
	if i == nil || i.Minor == nil {
		return 0
	}
	return *i.Minor
}

func (i *IntegrationSemVer) GetExtraProperties() map[string]interface{} {
	return i.extraProperties
}

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

// SetMajor sets the Major field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationSemVer) SetMajor(major *int) {
	i.Major = major
	i.require(integrationSemVerFieldMajor)
}

// SetMinor sets the Minor field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (i *IntegrationSemVer) SetMinor(minor *int) {
	i.Minor = minor
	i.require(integrationSemVerFieldMinor)
}

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

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

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

// Format of the file. Must be `json` or `csv`.
type JobFileFormatEnum string

const (
	JobFileFormatEnumJSON JobFileFormatEnum = "json"
	JobFileFormatEnumCsv  JobFileFormatEnum = "csv"
)

func NewJobFileFormatEnumFromString(s string) (JobFileFormatEnum, error) {
	switch s {
	case "json":
		return JobFileFormatEnumJSON, nil
	case "csv":
		return JobFileFormatEnumCsv, nil
	}
	var t JobFileFormatEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (j JobFileFormatEnum) Ptr() *JobFileFormatEnum {
	return &j
}

var (
	listActionBindingsPaginatedResponseContentFieldTotal    = big.NewInt(1 << 0)
	listActionBindingsPaginatedResponseContentFieldPage     = big.NewInt(1 << 1)
	listActionBindingsPaginatedResponseContentFieldPerPage  = big.NewInt(1 << 2)
	listActionBindingsPaginatedResponseContentFieldBindings = big.NewInt(1 << 3)
)

type ListActionBindingsPaginatedResponseContent struct {
	// The total result count.
	Total *float64 `json:"total,omitempty" url:"total,omitempty"`
	// Page index of the results being returned. First page is 0.
	Page *float64 `json:"page,omitempty" url:"page,omitempty"`
	// Number of results per page.
	PerPage *float64 `json:"per_page,omitempty" url:"per_page,omitempty"`
	// The list of actions that are bound to this trigger in the order in which they will be executed.
	Bindings []*ActionBinding `json:"bindings,omitempty" url:"bindings,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 (l *ListActionBindingsPaginatedResponseContent) GetTotal() float64 {
	if l == nil || l.Total == nil {
		return 0
	}
	return *l.Total
}

func (l *ListActionBindingsPaginatedResponseContent) GetPage() float64 {
	if l == nil || l.Page == nil {
		return 0
	}
	return *l.Page
}

func (l *ListActionBindingsPaginatedResponseContent) GetPerPage() float64 {
	if l == nil || l.PerPage == nil {
		return 0
	}
	return *l.PerPage
}

func (l *ListActionBindingsPaginatedResponseContent) GetBindings() []*ActionBinding {
	if l == nil || l.Bindings == nil {
		return nil
	}
	return l.Bindings
}

func (l *ListActionBindingsPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

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

// SetTotal sets the Total field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListActionBindingsPaginatedResponseContent) SetTotal(total *float64) {
	l.Total = total
	l.require(listActionBindingsPaginatedResponseContentFieldTotal)
}

// 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 (l *ListActionBindingsPaginatedResponseContent) SetPage(page *float64) {
	l.Page = page
	l.require(listActionBindingsPaginatedResponseContentFieldPage)
}

// SetPerPage sets the PerPage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListActionBindingsPaginatedResponseContent) SetPerPage(perPage *float64) {
	l.PerPage = perPage
	l.require(listActionBindingsPaginatedResponseContentFieldPerPage)
}

// SetBindings sets the Bindings field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListActionBindingsPaginatedResponseContent) SetBindings(bindings []*ActionBinding) {
	l.Bindings = bindings
	l.require(listActionBindingsPaginatedResponseContentFieldBindings)
}

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

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

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

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

type ListActionTriggersResponseContent struct {
	Triggers []*ActionTrigger `json:"triggers,omitempty" url:"triggers,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 (l *ListActionTriggersResponseContent) GetTriggers() []*ActionTrigger {
	if l == nil || l.Triggers == nil {
		return nil
	}
	return l.Triggers
}

func (l *ListActionTriggersResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

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

// SetTriggers sets the Triggers field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListActionTriggersResponseContent) SetTriggers(triggers []*ActionTrigger) {
	l.Triggers = triggers
	l.require(listActionTriggersResponseContentFieldTriggers)
}

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

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

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

var (
	listActionVersionsPaginatedResponseContentFieldTotal    = big.NewInt(1 << 0)
	listActionVersionsPaginatedResponseContentFieldPage     = big.NewInt(1 << 1)
	listActionVersionsPaginatedResponseContentFieldPerPage  = big.NewInt(1 << 2)
	listActionVersionsPaginatedResponseContentFieldVersions = big.NewInt(1 << 3)
)

type ListActionVersionsPaginatedResponseContent struct {
	// The total result count.
	Total *float64 `json:"total,omitempty" url:"total,omitempty"`
	// Page index of the results being returned. First page is 0.
	Page *float64 `json:"page,omitempty" url:"page,omitempty"`
	// Number of results per page.
	PerPage  *float64         `json:"per_page,omitempty" url:"per_page,omitempty"`
	Versions []*ActionVersion `json:"versions,omitempty" url:"versions,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 (l *ListActionVersionsPaginatedResponseContent) GetTotal() float64 {
	if l == nil || l.Total == nil {
		return 0
	}
	return *l.Total
}

func (l *ListActionVersionsPaginatedResponseContent) GetPage() float64 {
	if l == nil || l.Page == nil {
		return 0
	}
	return *l.Page
}

func (l *ListActionVersionsPaginatedResponseContent) GetPerPage() float64 {
	if l == nil || l.PerPage == nil {
		return 0
	}
	return *l.PerPage
}

func (l *ListActionVersionsPaginatedResponseContent) GetVersions() []*ActionVersion {
	if l == nil || l.Versions == nil {
		return nil
	}
	return l.Versions
}

func (l *ListActionVersionsPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

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

// SetTotal sets the Total field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListActionVersionsPaginatedResponseContent) SetTotal(total *float64) {
	l.Total = total
	l.require(listActionVersionsPaginatedResponseContentFieldTotal)
}

// 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 (l *ListActionVersionsPaginatedResponseContent) SetPage(page *float64) {
	l.Page = page
	l.require(listActionVersionsPaginatedResponseContentFieldPage)
}

// SetPerPage sets the PerPage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListActionVersionsPaginatedResponseContent) SetPerPage(perPage *float64) {
	l.PerPage = perPage
	l.require(listActionVersionsPaginatedResponseContentFieldPerPage)
}

// SetVersions sets the Versions field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListActionVersionsPaginatedResponseContent) SetVersions(versions []*ActionVersion) {
	l.Versions = versions
	l.require(listActionVersionsPaginatedResponseContentFieldVersions)
}

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

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

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

var (
	listAculsOffsetPaginatedResponseContentFieldConfigs = big.NewInt(1 << 0)
	listAculsOffsetPaginatedResponseContentFieldStart   = big.NewInt(1 << 1)
	listAculsOffsetPaginatedResponseContentFieldLimit   = big.NewInt(1 << 2)
	listAculsOffsetPaginatedResponseContentFieldTotal   = big.NewInt(1 << 3)
)

type ListAculsOffsetPaginatedResponseContent struct {
	Configs []*AculResponseContent `json:"configs,omitempty" url:"configs,omitempty"`
	// the index of the first configuration in the response (before filtering)
	Start *float64 `json:"start,omitempty" url:"start,omitempty"`
	// the maximum number of configurations shown per page (before filtering)
	Limit *float64 `json:"limit,omitempty" url:"limit,omitempty"`
	// the total number of configurations on this tenant
	Total *float64 `json:"total,omitempty" url:"total,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 (l *ListAculsOffsetPaginatedResponseContent) GetConfigs() []*AculResponseContent {
	if l == nil || l.Configs == nil {
		return nil
	}
	return l.Configs
}

func (l *ListAculsOffsetPaginatedResponseContent) GetStart() float64 {
	if l == nil || l.Start == nil {
		return 0
	}
	return *l.Start
}

func (l *ListAculsOffsetPaginatedResponseContent) GetLimit() float64 {
	if l == nil || l.Limit == nil {
		return 0
	}
	return *l.Limit
}

func (l *ListAculsOffsetPaginatedResponseContent) GetTotal() float64 {
	if l == nil || l.Total == nil {
		return 0
	}
	return *l.Total
}

func (l *ListAculsOffsetPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

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

// SetConfigs sets the Configs field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListAculsOffsetPaginatedResponseContent) SetConfigs(configs []*AculResponseContent) {
	l.Configs = configs
	l.require(listAculsOffsetPaginatedResponseContentFieldConfigs)
}

// SetStart sets the Start field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListAculsOffsetPaginatedResponseContent) SetStart(start *float64) {
	l.Start = start
	l.require(listAculsOffsetPaginatedResponseContentFieldStart)
}

// 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 (l *ListAculsOffsetPaginatedResponseContent) SetLimit(limit *float64) {
	l.Limit = limit
	l.require(listAculsOffsetPaginatedResponseContentFieldLimit)
}

// SetTotal sets the Total field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListAculsOffsetPaginatedResponseContent) SetTotal(total *float64) {
	l.Total = total
	l.require(listAculsOffsetPaginatedResponseContentFieldTotal)
}

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

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

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

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

type ListBrandingPhoneProvidersResponseContent struct {
	Providers []*PhoneProviderSchemaMasked `json:"providers,omitempty" url:"providers,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 (l *ListBrandingPhoneProvidersResponseContent) GetProviders() []*PhoneProviderSchemaMasked {
	if l == nil || l.Providers == nil {
		return nil
	}
	return l.Providers
}

func (l *ListBrandingPhoneProvidersResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

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

// SetProviders sets the Providers field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListBrandingPhoneProvidersResponseContent) SetProviders(providers []*PhoneProviderSchemaMasked) {
	l.Providers = providers
	l.require(listBrandingPhoneProvidersResponseContentFieldProviders)
}

func (l *ListBrandingPhoneProvidersResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListBrandingPhoneProvidersResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListBrandingPhoneProvidersResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListBrandingPhoneProvidersResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListBrandingPhoneProvidersResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListBrandingPhoneProvidersResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listClientConnectionsResponseContentFieldConnections = big.NewInt(1 << 0)
	listClientConnectionsResponseContentFieldNext        = big.NewInt(1 << 1)
)

type ListClientConnectionsResponseContent struct {
	Connections []*ConnectionForList `json:"connections" url:"connections"`
	// Encoded next token
	Next *string `json:"next,omitempty" url:"next,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (l *ListClientConnectionsResponseContent) GetConnections() []*ConnectionForList {
	if l == nil {
		return nil
	}
	return l.Connections
}

func (l *ListClientConnectionsResponseContent) GetNext() string {
	if l == nil || l.Next == nil {
		return ""
	}
	return *l.Next
}

func (l *ListClientConnectionsResponseContent) GetExtraProperties() map[string]interface{} {
	return l.ExtraProperties
}

func (l *ListClientConnectionsResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetConnections sets the Connections field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListClientConnectionsResponseContent) SetConnections(connections []*ConnectionForList) {
	l.Connections = connections
	l.require(listClientConnectionsResponseContentFieldConnections)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListClientConnectionsResponseContent) SetNext(next *string) {
	l.Next = next
	l.require(listClientConnectionsResponseContentFieldNext)
}

func (l *ListClientConnectionsResponseContent) UnmarshalJSON(data []byte) error {
	type embed ListClientConnectionsResponseContent
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*l = ListClientConnectionsResponseContent(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.ExtraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListClientConnectionsResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListClientConnectionsResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, l.ExtraProperties)
}

func (l *ListClientConnectionsResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listClientGrantOrganizationsPaginatedResponseContentFieldNext          = big.NewInt(1 << 0)
	listClientGrantOrganizationsPaginatedResponseContentFieldOrganizations = big.NewInt(1 << 1)
)

type ListClientGrantOrganizationsPaginatedResponseContent struct {
	// Opaque identifier for use with the <i>from</i> query parameter for the next page of results.<br/>This identifier is valid for 24 hours.
	Next          *string         `json:"next,omitempty" url:"next,omitempty"`
	Organizations []*Organization `json:"organizations,omitempty" url:"organizations,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 (l *ListClientGrantOrganizationsPaginatedResponseContent) GetNext() string {
	if l == nil || l.Next == nil {
		return ""
	}
	return *l.Next
}

func (l *ListClientGrantOrganizationsPaginatedResponseContent) GetOrganizations() []*Organization {
	if l == nil || l.Organizations == nil {
		return nil
	}
	return l.Organizations
}

func (l *ListClientGrantOrganizationsPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListClientGrantOrganizationsPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListClientGrantOrganizationsPaginatedResponseContent) SetNext(next *string) {
	l.Next = next
	l.require(listClientGrantOrganizationsPaginatedResponseContentFieldNext)
}

// SetOrganizations sets the Organizations field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListClientGrantOrganizationsPaginatedResponseContent) SetOrganizations(organizations []*Organization) {
	l.Organizations = organizations
	l.require(listClientGrantOrganizationsPaginatedResponseContentFieldOrganizations)
}

func (l *ListClientGrantOrganizationsPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListClientGrantOrganizationsPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListClientGrantOrganizationsPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListClientGrantOrganizationsPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListClientGrantOrganizationsPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListClientGrantOrganizationsPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listEncryptionKeyOffsetPaginatedResponseContentFieldStart = big.NewInt(1 << 0)
	listEncryptionKeyOffsetPaginatedResponseContentFieldLimit = big.NewInt(1 << 1)
	listEncryptionKeyOffsetPaginatedResponseContentFieldTotal = big.NewInt(1 << 2)
	listEncryptionKeyOffsetPaginatedResponseContentFieldKeys  = big.NewInt(1 << 3)
)

type ListEncryptionKeyOffsetPaginatedResponseContent struct {
	// Page index of the results to return. First page is 0.
	Start *int `json:"start,omitempty" url:"start,omitempty"`
	// Number of results per page.
	Limit *int `json:"limit,omitempty" url:"limit,omitempty"`
	// Total amount of encryption keys.
	Total *int `json:"total,omitempty" url:"total,omitempty"`
	// Encryption keys.
	Keys []*EncryptionKey `json:"keys,omitempty" url:"keys,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 (l *ListEncryptionKeyOffsetPaginatedResponseContent) GetStart() int {
	if l == nil || l.Start == nil {
		return 0
	}
	return *l.Start
}

func (l *ListEncryptionKeyOffsetPaginatedResponseContent) GetLimit() int {
	if l == nil || l.Limit == nil {
		return 0
	}
	return *l.Limit
}

func (l *ListEncryptionKeyOffsetPaginatedResponseContent) GetTotal() int {
	if l == nil || l.Total == nil {
		return 0
	}
	return *l.Total
}

func (l *ListEncryptionKeyOffsetPaginatedResponseContent) GetKeys() []*EncryptionKey {
	if l == nil || l.Keys == nil {
		return nil
	}
	return l.Keys
}

func (l *ListEncryptionKeyOffsetPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListEncryptionKeyOffsetPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetStart sets the Start field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListEncryptionKeyOffsetPaginatedResponseContent) SetStart(start *int) {
	l.Start = start
	l.require(listEncryptionKeyOffsetPaginatedResponseContentFieldStart)
}

// 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 (l *ListEncryptionKeyOffsetPaginatedResponseContent) SetLimit(limit *int) {
	l.Limit = limit
	l.require(listEncryptionKeyOffsetPaginatedResponseContentFieldLimit)
}

// SetTotal sets the Total field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListEncryptionKeyOffsetPaginatedResponseContent) SetTotal(total *int) {
	l.Total = total
	l.require(listEncryptionKeyOffsetPaginatedResponseContentFieldTotal)
}

// SetKeys sets the Keys field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListEncryptionKeyOffsetPaginatedResponseContent) SetKeys(keys []*EncryptionKey) {
	l.Keys = keys
	l.require(listEncryptionKeyOffsetPaginatedResponseContentFieldKeys)
}

func (l *ListEncryptionKeyOffsetPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListEncryptionKeyOffsetPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListEncryptionKeyOffsetPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListEncryptionKeyOffsetPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListEncryptionKeyOffsetPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListEncryptionKeyOffsetPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listFlowExecutionsPaginatedResponseContentFieldNext       = big.NewInt(1 << 0)
	listFlowExecutionsPaginatedResponseContentFieldExecutions = big.NewInt(1 << 1)
)

type ListFlowExecutionsPaginatedResponseContent struct {
	// Opaque identifier for use with the <i>from</i> query parameter for the next page of results.<br/>This identifier is valid for 24 hours.
	Next       *string                 `json:"next,omitempty" url:"next,omitempty"`
	Executions []*FlowExecutionSummary `json:"executions,omitempty" url:"executions,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 (l *ListFlowExecutionsPaginatedResponseContent) GetNext() string {
	if l == nil || l.Next == nil {
		return ""
	}
	return *l.Next
}

func (l *ListFlowExecutionsPaginatedResponseContent) GetExecutions() []*FlowExecutionSummary {
	if l == nil || l.Executions == nil {
		return nil
	}
	return l.Executions
}

func (l *ListFlowExecutionsPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListFlowExecutionsPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListFlowExecutionsPaginatedResponseContent) SetNext(next *string) {
	l.Next = next
	l.require(listFlowExecutionsPaginatedResponseContentFieldNext)
}

// SetExecutions sets the Executions field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListFlowExecutionsPaginatedResponseContent) SetExecutions(executions []*FlowExecutionSummary) {
	l.Executions = executions
	l.require(listFlowExecutionsPaginatedResponseContentFieldExecutions)
}

func (l *ListFlowExecutionsPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListFlowExecutionsPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListFlowExecutionsPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListFlowExecutionsPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListFlowExecutionsPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListFlowExecutionsPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listFlowsVaultConnectionsOffsetPaginatedResponseContentFieldStart       = big.NewInt(1 << 0)
	listFlowsVaultConnectionsOffsetPaginatedResponseContentFieldLimit       = big.NewInt(1 << 1)
	listFlowsVaultConnectionsOffsetPaginatedResponseContentFieldTotal       = big.NewInt(1 << 2)
	listFlowsVaultConnectionsOffsetPaginatedResponseContentFieldConnections = big.NewInt(1 << 3)
)

type ListFlowsVaultConnectionsOffsetPaginatedResponseContent struct {
	Start       *float64                       `json:"start,omitempty" url:"start,omitempty"`
	Limit       *float64                       `json:"limit,omitempty" url:"limit,omitempty"`
	Total       *float64                       `json:"total,omitempty" url:"total,omitempty"`
	Connections []*FlowsVaultConnectionSummary `json:"connections,omitempty" url:"connections,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 (l *ListFlowsVaultConnectionsOffsetPaginatedResponseContent) GetStart() float64 {
	if l == nil || l.Start == nil {
		return 0
	}
	return *l.Start
}

func (l *ListFlowsVaultConnectionsOffsetPaginatedResponseContent) GetLimit() float64 {
	if l == nil || l.Limit == nil {
		return 0
	}
	return *l.Limit
}

func (l *ListFlowsVaultConnectionsOffsetPaginatedResponseContent) GetTotal() float64 {
	if l == nil || l.Total == nil {
		return 0
	}
	return *l.Total
}

func (l *ListFlowsVaultConnectionsOffsetPaginatedResponseContent) GetConnections() []*FlowsVaultConnectionSummary {
	if l == nil || l.Connections == nil {
		return nil
	}
	return l.Connections
}

func (l *ListFlowsVaultConnectionsOffsetPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListFlowsVaultConnectionsOffsetPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetStart sets the Start field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListFlowsVaultConnectionsOffsetPaginatedResponseContent) SetStart(start *float64) {
	l.Start = start
	l.require(listFlowsVaultConnectionsOffsetPaginatedResponseContentFieldStart)
}

// 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 (l *ListFlowsVaultConnectionsOffsetPaginatedResponseContent) SetLimit(limit *float64) {
	l.Limit = limit
	l.require(listFlowsVaultConnectionsOffsetPaginatedResponseContentFieldLimit)
}

// SetTotal sets the Total field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListFlowsVaultConnectionsOffsetPaginatedResponseContent) SetTotal(total *float64) {
	l.Total = total
	l.require(listFlowsVaultConnectionsOffsetPaginatedResponseContentFieldTotal)
}

// SetConnections sets the Connections field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListFlowsVaultConnectionsOffsetPaginatedResponseContent) SetConnections(connections []*FlowsVaultConnectionSummary) {
	l.Connections = connections
	l.require(listFlowsVaultConnectionsOffsetPaginatedResponseContentFieldConnections)
}

func (l *ListFlowsVaultConnectionsOffsetPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListFlowsVaultConnectionsOffsetPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListFlowsVaultConnectionsOffsetPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListFlowsVaultConnectionsOffsetPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListFlowsVaultConnectionsOffsetPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListFlowsVaultConnectionsOffsetPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

type ListGuardianPoliciesResponseContent = []MfaPolicyEnum

var (
	listOrganizationClientGrantsOffsetPaginatedResponseContentFieldStart        = big.NewInt(1 << 0)
	listOrganizationClientGrantsOffsetPaginatedResponseContentFieldLimit        = big.NewInt(1 << 1)
	listOrganizationClientGrantsOffsetPaginatedResponseContentFieldTotal        = big.NewInt(1 << 2)
	listOrganizationClientGrantsOffsetPaginatedResponseContentFieldClientGrants = big.NewInt(1 << 3)
)

type ListOrganizationClientGrantsOffsetPaginatedResponseContent struct {
	Start        *float64                   `json:"start,omitempty" url:"start,omitempty"`
	Limit        *float64                   `json:"limit,omitempty" url:"limit,omitempty"`
	Total        *float64                   `json:"total,omitempty" url:"total,omitempty"`
	ClientGrants []*OrganizationClientGrant `json:"client_grants,omitempty" url:"client_grants,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 (l *ListOrganizationClientGrantsOffsetPaginatedResponseContent) GetStart() float64 {
	if l == nil || l.Start == nil {
		return 0
	}
	return *l.Start
}

func (l *ListOrganizationClientGrantsOffsetPaginatedResponseContent) GetLimit() float64 {
	if l == nil || l.Limit == nil {
		return 0
	}
	return *l.Limit
}

func (l *ListOrganizationClientGrantsOffsetPaginatedResponseContent) GetTotal() float64 {
	if l == nil || l.Total == nil {
		return 0
	}
	return *l.Total
}

func (l *ListOrganizationClientGrantsOffsetPaginatedResponseContent) GetClientGrants() []*OrganizationClientGrant {
	if l == nil || l.ClientGrants == nil {
		return nil
	}
	return l.ClientGrants
}

func (l *ListOrganizationClientGrantsOffsetPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListOrganizationClientGrantsOffsetPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetStart sets the Start field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListOrganizationClientGrantsOffsetPaginatedResponseContent) SetStart(start *float64) {
	l.Start = start
	l.require(listOrganizationClientGrantsOffsetPaginatedResponseContentFieldStart)
}

// 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 (l *ListOrganizationClientGrantsOffsetPaginatedResponseContent) SetLimit(limit *float64) {
	l.Limit = limit
	l.require(listOrganizationClientGrantsOffsetPaginatedResponseContentFieldLimit)
}

// SetTotal sets the Total field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListOrganizationClientGrantsOffsetPaginatedResponseContent) SetTotal(total *float64) {
	l.Total = total
	l.require(listOrganizationClientGrantsOffsetPaginatedResponseContentFieldTotal)
}

// SetClientGrants sets the ClientGrants field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListOrganizationClientGrantsOffsetPaginatedResponseContent) SetClientGrants(clientGrants []*OrganizationClientGrant) {
	l.ClientGrants = clientGrants
	l.require(listOrganizationClientGrantsOffsetPaginatedResponseContentFieldClientGrants)
}

func (l *ListOrganizationClientGrantsOffsetPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListOrganizationClientGrantsOffsetPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListOrganizationClientGrantsOffsetPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListOrganizationClientGrantsOffsetPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListOrganizationClientGrantsOffsetPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListOrganizationClientGrantsOffsetPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listOrganizationConnectionsOffsetPaginatedResponseContentFieldStart              = big.NewInt(1 << 0)
	listOrganizationConnectionsOffsetPaginatedResponseContentFieldLimit              = big.NewInt(1 << 1)
	listOrganizationConnectionsOffsetPaginatedResponseContentFieldTotal              = big.NewInt(1 << 2)
	listOrganizationConnectionsOffsetPaginatedResponseContentFieldEnabledConnections = big.NewInt(1 << 3)
)

type ListOrganizationConnectionsOffsetPaginatedResponseContent struct {
	Start              *float64                  `json:"start,omitempty" url:"start,omitempty"`
	Limit              *float64                  `json:"limit,omitempty" url:"limit,omitempty"`
	Total              *float64                  `json:"total,omitempty" url:"total,omitempty"`
	EnabledConnections []*OrganizationConnection `json:"enabled_connections,omitempty" url:"enabled_connections,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 (l *ListOrganizationConnectionsOffsetPaginatedResponseContent) GetStart() float64 {
	if l == nil || l.Start == nil {
		return 0
	}
	return *l.Start
}

func (l *ListOrganizationConnectionsOffsetPaginatedResponseContent) GetLimit() float64 {
	if l == nil || l.Limit == nil {
		return 0
	}
	return *l.Limit
}

func (l *ListOrganizationConnectionsOffsetPaginatedResponseContent) GetTotal() float64 {
	if l == nil || l.Total == nil {
		return 0
	}
	return *l.Total
}

func (l *ListOrganizationConnectionsOffsetPaginatedResponseContent) GetEnabledConnections() []*OrganizationConnection {
	if l == nil || l.EnabledConnections == nil {
		return nil
	}
	return l.EnabledConnections
}

func (l *ListOrganizationConnectionsOffsetPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListOrganizationConnectionsOffsetPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetStart sets the Start field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListOrganizationConnectionsOffsetPaginatedResponseContent) SetStart(start *float64) {
	l.Start = start
	l.require(listOrganizationConnectionsOffsetPaginatedResponseContentFieldStart)
}

// 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 (l *ListOrganizationConnectionsOffsetPaginatedResponseContent) SetLimit(limit *float64) {
	l.Limit = limit
	l.require(listOrganizationConnectionsOffsetPaginatedResponseContentFieldLimit)
}

// SetTotal sets the Total field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListOrganizationConnectionsOffsetPaginatedResponseContent) SetTotal(total *float64) {
	l.Total = total
	l.require(listOrganizationConnectionsOffsetPaginatedResponseContentFieldTotal)
}

// SetEnabledConnections sets the EnabledConnections field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListOrganizationConnectionsOffsetPaginatedResponseContent) SetEnabledConnections(enabledConnections []*OrganizationConnection) {
	l.EnabledConnections = enabledConnections
	l.require(listOrganizationConnectionsOffsetPaginatedResponseContentFieldEnabledConnections)
}

func (l *ListOrganizationConnectionsOffsetPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListOrganizationConnectionsOffsetPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListOrganizationConnectionsOffsetPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListOrganizationConnectionsOffsetPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListOrganizationConnectionsOffsetPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListOrganizationConnectionsOffsetPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listOrganizationInvitationsOffsetPaginatedResponseContentFieldStart       = big.NewInt(1 << 0)
	listOrganizationInvitationsOffsetPaginatedResponseContentFieldLimit       = big.NewInt(1 << 1)
	listOrganizationInvitationsOffsetPaginatedResponseContentFieldInvitations = big.NewInt(1 << 2)
)

type ListOrganizationInvitationsOffsetPaginatedResponseContent struct {
	Start       *float64                  `json:"start,omitempty" url:"start,omitempty"`
	Limit       *float64                  `json:"limit,omitempty" url:"limit,omitempty"`
	Invitations []*OrganizationInvitation `json:"invitations,omitempty" url:"invitations,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 (l *ListOrganizationInvitationsOffsetPaginatedResponseContent) GetStart() float64 {
	if l == nil || l.Start == nil {
		return 0
	}
	return *l.Start
}

func (l *ListOrganizationInvitationsOffsetPaginatedResponseContent) GetLimit() float64 {
	if l == nil || l.Limit == nil {
		return 0
	}
	return *l.Limit
}

func (l *ListOrganizationInvitationsOffsetPaginatedResponseContent) GetInvitations() []*OrganizationInvitation {
	if l == nil || l.Invitations == nil {
		return nil
	}
	return l.Invitations
}

func (l *ListOrganizationInvitationsOffsetPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListOrganizationInvitationsOffsetPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetStart sets the Start field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListOrganizationInvitationsOffsetPaginatedResponseContent) SetStart(start *float64) {
	l.Start = start
	l.require(listOrganizationInvitationsOffsetPaginatedResponseContentFieldStart)
}

// 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 (l *ListOrganizationInvitationsOffsetPaginatedResponseContent) SetLimit(limit *float64) {
	l.Limit = limit
	l.require(listOrganizationInvitationsOffsetPaginatedResponseContentFieldLimit)
}

// SetInvitations sets the Invitations field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListOrganizationInvitationsOffsetPaginatedResponseContent) SetInvitations(invitations []*OrganizationInvitation) {
	l.Invitations = invitations
	l.require(listOrganizationInvitationsOffsetPaginatedResponseContentFieldInvitations)
}

func (l *ListOrganizationInvitationsOffsetPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListOrganizationInvitationsOffsetPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListOrganizationInvitationsOffsetPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListOrganizationInvitationsOffsetPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListOrganizationInvitationsOffsetPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListOrganizationInvitationsOffsetPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listOrganizationMemberRolesOffsetPaginatedResponseContentFieldStart = big.NewInt(1 << 0)
	listOrganizationMemberRolesOffsetPaginatedResponseContentFieldLimit = big.NewInt(1 << 1)
	listOrganizationMemberRolesOffsetPaginatedResponseContentFieldTotal = big.NewInt(1 << 2)
	listOrganizationMemberRolesOffsetPaginatedResponseContentFieldRoles = big.NewInt(1 << 3)
)

type ListOrganizationMemberRolesOffsetPaginatedResponseContent struct {
	Start *float64 `json:"start,omitempty" url:"start,omitempty"`
	Limit *float64 `json:"limit,omitempty" url:"limit,omitempty"`
	Total *float64 `json:"total,omitempty" url:"total,omitempty"`
	Roles []*Role  `json:"roles,omitempty" url:"roles,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 (l *ListOrganizationMemberRolesOffsetPaginatedResponseContent) GetStart() float64 {
	if l == nil || l.Start == nil {
		return 0
	}
	return *l.Start
}

func (l *ListOrganizationMemberRolesOffsetPaginatedResponseContent) GetLimit() float64 {
	if l == nil || l.Limit == nil {
		return 0
	}
	return *l.Limit
}

func (l *ListOrganizationMemberRolesOffsetPaginatedResponseContent) GetTotal() float64 {
	if l == nil || l.Total == nil {
		return 0
	}
	return *l.Total
}

func (l *ListOrganizationMemberRolesOffsetPaginatedResponseContent) GetRoles() []*Role {
	if l == nil || l.Roles == nil {
		return nil
	}
	return l.Roles
}

func (l *ListOrganizationMemberRolesOffsetPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListOrganizationMemberRolesOffsetPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetStart sets the Start field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListOrganizationMemberRolesOffsetPaginatedResponseContent) SetStart(start *float64) {
	l.Start = start
	l.require(listOrganizationMemberRolesOffsetPaginatedResponseContentFieldStart)
}

// 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 (l *ListOrganizationMemberRolesOffsetPaginatedResponseContent) SetLimit(limit *float64) {
	l.Limit = limit
	l.require(listOrganizationMemberRolesOffsetPaginatedResponseContentFieldLimit)
}

// SetTotal sets the Total field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListOrganizationMemberRolesOffsetPaginatedResponseContent) SetTotal(total *float64) {
	l.Total = total
	l.require(listOrganizationMemberRolesOffsetPaginatedResponseContentFieldTotal)
}

// SetRoles sets the Roles field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListOrganizationMemberRolesOffsetPaginatedResponseContent) SetRoles(roles []*Role) {
	l.Roles = roles
	l.require(listOrganizationMemberRolesOffsetPaginatedResponseContentFieldRoles)
}

func (l *ListOrganizationMemberRolesOffsetPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListOrganizationMemberRolesOffsetPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListOrganizationMemberRolesOffsetPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListOrganizationMemberRolesOffsetPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListOrganizationMemberRolesOffsetPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListOrganizationMemberRolesOffsetPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listOrganizationMembersPaginatedResponseContentFieldNext    = big.NewInt(1 << 0)
	listOrganizationMembersPaginatedResponseContentFieldMembers = big.NewInt(1 << 1)
)

type ListOrganizationMembersPaginatedResponseContent struct {
	Next    *string               `json:"next,omitempty" url:"next,omitempty"`
	Members []*OrganizationMember `json:"members,omitempty" url:"members,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (l *ListOrganizationMembersPaginatedResponseContent) GetNext() string {
	if l == nil || l.Next == nil {
		return ""
	}
	return *l.Next
}

func (l *ListOrganizationMembersPaginatedResponseContent) GetMembers() []*OrganizationMember {
	if l == nil || l.Members == nil {
		return nil
	}
	return l.Members
}

func (l *ListOrganizationMembersPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.ExtraProperties
}

func (l *ListOrganizationMembersPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListOrganizationMembersPaginatedResponseContent) SetNext(next *string) {
	l.Next = next
	l.require(listOrganizationMembersPaginatedResponseContentFieldNext)
}

// SetMembers sets the Members field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListOrganizationMembersPaginatedResponseContent) SetMembers(members []*OrganizationMember) {
	l.Members = members
	l.require(listOrganizationMembersPaginatedResponseContentFieldMembers)
}

func (l *ListOrganizationMembersPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type embed ListOrganizationMembersPaginatedResponseContent
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*l = ListOrganizationMembersPaginatedResponseContent(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.ExtraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListOrganizationMembersPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListOrganizationMembersPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, l.ExtraProperties)
}

func (l *ListOrganizationMembersPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listPhoneTemplatesResponseContentFieldTemplates = big.NewInt(1 << 0)
)

type ListPhoneTemplatesResponseContent struct {
	Templates []*PhoneTemplate `json:"templates,omitempty" url:"templates,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 (l *ListPhoneTemplatesResponseContent) GetTemplates() []*PhoneTemplate {
	if l == nil || l.Templates == nil {
		return nil
	}
	return l.Templates
}

func (l *ListPhoneTemplatesResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListPhoneTemplatesResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetTemplates sets the Templates field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListPhoneTemplatesResponseContent) SetTemplates(templates []*PhoneTemplate) {
	l.Templates = templates
	l.require(listPhoneTemplatesResponseContentFieldTemplates)
}

func (l *ListPhoneTemplatesResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListPhoneTemplatesResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListPhoneTemplatesResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListPhoneTemplatesResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListPhoneTemplatesResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListPhoneTemplatesResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listRefreshTokensPaginatedResponseContentFieldTokens = big.NewInt(1 << 0)
	listRefreshTokensPaginatedResponseContentFieldNext   = big.NewInt(1 << 1)
)

type ListRefreshTokensPaginatedResponseContent struct {
	Tokens []*RefreshTokenResponseContent `json:"tokens,omitempty" url:"tokens,omitempty"`
	// A cursor to be used as the "from" query parameter for the next page of results.
	Next *string `json:"next,omitempty" url:"next,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (l *ListRefreshTokensPaginatedResponseContent) GetTokens() []*RefreshTokenResponseContent {
	if l == nil || l.Tokens == nil {
		return nil
	}
	return l.Tokens
}

func (l *ListRefreshTokensPaginatedResponseContent) GetNext() string {
	if l == nil || l.Next == nil {
		return ""
	}
	return *l.Next
}

func (l *ListRefreshTokensPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.ExtraProperties
}

func (l *ListRefreshTokensPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetTokens sets the Tokens field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListRefreshTokensPaginatedResponseContent) SetTokens(tokens []*RefreshTokenResponseContent) {
	l.Tokens = tokens
	l.require(listRefreshTokensPaginatedResponseContentFieldTokens)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListRefreshTokensPaginatedResponseContent) SetNext(next *string) {
	l.Next = next
	l.require(listRefreshTokensPaginatedResponseContentFieldNext)
}

func (l *ListRefreshTokensPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type embed ListRefreshTokensPaginatedResponseContent
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*l = ListRefreshTokensPaginatedResponseContent(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.ExtraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListRefreshTokensPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListRefreshTokensPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, l.ExtraProperties)
}

func (l *ListRefreshTokensPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listRolePermissionsOffsetPaginatedResponseContentFieldStart       = big.NewInt(1 << 0)
	listRolePermissionsOffsetPaginatedResponseContentFieldLimit       = big.NewInt(1 << 1)
	listRolePermissionsOffsetPaginatedResponseContentFieldTotal       = big.NewInt(1 << 2)
	listRolePermissionsOffsetPaginatedResponseContentFieldPermissions = big.NewInt(1 << 3)
)

type ListRolePermissionsOffsetPaginatedResponseContent struct {
	Start       *float64                      `json:"start,omitempty" url:"start,omitempty"`
	Limit       *float64                      `json:"limit,omitempty" url:"limit,omitempty"`
	Total       *float64                      `json:"total,omitempty" url:"total,omitempty"`
	Permissions []*PermissionsResponsePayload `json:"permissions,omitempty" url:"permissions,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 (l *ListRolePermissionsOffsetPaginatedResponseContent) GetStart() float64 {
	if l == nil || l.Start == nil {
		return 0
	}
	return *l.Start
}

func (l *ListRolePermissionsOffsetPaginatedResponseContent) GetLimit() float64 {
	if l == nil || l.Limit == nil {
		return 0
	}
	return *l.Limit
}

func (l *ListRolePermissionsOffsetPaginatedResponseContent) GetTotal() float64 {
	if l == nil || l.Total == nil {
		return 0
	}
	return *l.Total
}

func (l *ListRolePermissionsOffsetPaginatedResponseContent) GetPermissions() []*PermissionsResponsePayload {
	if l == nil || l.Permissions == nil {
		return nil
	}
	return l.Permissions
}

func (l *ListRolePermissionsOffsetPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListRolePermissionsOffsetPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetStart sets the Start field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListRolePermissionsOffsetPaginatedResponseContent) SetStart(start *float64) {
	l.Start = start
	l.require(listRolePermissionsOffsetPaginatedResponseContentFieldStart)
}

// 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 (l *ListRolePermissionsOffsetPaginatedResponseContent) SetLimit(limit *float64) {
	l.Limit = limit
	l.require(listRolePermissionsOffsetPaginatedResponseContentFieldLimit)
}

// SetTotal sets the Total field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListRolePermissionsOffsetPaginatedResponseContent) SetTotal(total *float64) {
	l.Total = total
	l.require(listRolePermissionsOffsetPaginatedResponseContentFieldTotal)
}

// SetPermissions sets the Permissions field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListRolePermissionsOffsetPaginatedResponseContent) SetPermissions(permissions []*PermissionsResponsePayload) {
	l.Permissions = permissions
	l.require(listRolePermissionsOffsetPaginatedResponseContentFieldPermissions)
}

func (l *ListRolePermissionsOffsetPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListRolePermissionsOffsetPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListRolePermissionsOffsetPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListRolePermissionsOffsetPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListRolePermissionsOffsetPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListRolePermissionsOffsetPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listRoleUsersPaginatedResponseContentFieldNext  = big.NewInt(1 << 0)
	listRoleUsersPaginatedResponseContentFieldUsers = big.NewInt(1 << 1)
)

type ListRoleUsersPaginatedResponseContent struct {
	Next  *string     `json:"next,omitempty" url:"next,omitempty"`
	Users []*RoleUser `json:"users,omitempty" url:"users,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 (l *ListRoleUsersPaginatedResponseContent) GetNext() string {
	if l == nil || l.Next == nil {
		return ""
	}
	return *l.Next
}

func (l *ListRoleUsersPaginatedResponseContent) GetUsers() []*RoleUser {
	if l == nil || l.Users == nil {
		return nil
	}
	return l.Users
}

func (l *ListRoleUsersPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListRoleUsersPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListRoleUsersPaginatedResponseContent) SetNext(next *string) {
	l.Next = next
	l.require(listRoleUsersPaginatedResponseContentFieldNext)
}

// SetUsers sets the Users field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListRoleUsersPaginatedResponseContent) SetUsers(users []*RoleUser) {
	l.Users = users
	l.require(listRoleUsersPaginatedResponseContentFieldUsers)
}

func (l *ListRoleUsersPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListRoleUsersPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListRoleUsersPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListRoleUsersPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListRoleUsersPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListRoleUsersPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

// The list of custom text keys and values.
type ListSelfServiceProfileCustomTextResponseContent = map[string]string

var (
	listUserAuthenticationMethodsOffsetPaginatedResponseContentFieldStart          = big.NewInt(1 << 0)
	listUserAuthenticationMethodsOffsetPaginatedResponseContentFieldLimit          = big.NewInt(1 << 1)
	listUserAuthenticationMethodsOffsetPaginatedResponseContentFieldTotal          = big.NewInt(1 << 2)
	listUserAuthenticationMethodsOffsetPaginatedResponseContentFieldAuthenticators = big.NewInt(1 << 3)
)

type ListUserAuthenticationMethodsOffsetPaginatedResponseContent struct {
	// Index of the starting record. Derived from the page and per_page parameters.
	Start *float64 `json:"start,omitempty" url:"start,omitempty"`
	// Maximum amount of records to return.
	Limit *float64 `json:"limit,omitempty" url:"limit,omitempty"`
	// Total number of pageable records.
	Total *float64 `json:"total,omitempty" url:"total,omitempty"`
	// The paginated authentication methods. Returned in this structure when include_totals is true.
	Authenticators []*UserAuthenticationMethod `json:"authenticators,omitempty" url:"authenticators,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 (l *ListUserAuthenticationMethodsOffsetPaginatedResponseContent) GetStart() float64 {
	if l == nil || l.Start == nil {
		return 0
	}
	return *l.Start
}

func (l *ListUserAuthenticationMethodsOffsetPaginatedResponseContent) GetLimit() float64 {
	if l == nil || l.Limit == nil {
		return 0
	}
	return *l.Limit
}

func (l *ListUserAuthenticationMethodsOffsetPaginatedResponseContent) GetTotal() float64 {
	if l == nil || l.Total == nil {
		return 0
	}
	return *l.Total
}

func (l *ListUserAuthenticationMethodsOffsetPaginatedResponseContent) GetAuthenticators() []*UserAuthenticationMethod {
	if l == nil || l.Authenticators == nil {
		return nil
	}
	return l.Authenticators
}

func (l *ListUserAuthenticationMethodsOffsetPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListUserAuthenticationMethodsOffsetPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetStart sets the Start field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserAuthenticationMethodsOffsetPaginatedResponseContent) SetStart(start *float64) {
	l.Start = start
	l.require(listUserAuthenticationMethodsOffsetPaginatedResponseContentFieldStart)
}

// 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 (l *ListUserAuthenticationMethodsOffsetPaginatedResponseContent) SetLimit(limit *float64) {
	l.Limit = limit
	l.require(listUserAuthenticationMethodsOffsetPaginatedResponseContentFieldLimit)
}

// SetTotal sets the Total field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserAuthenticationMethodsOffsetPaginatedResponseContent) SetTotal(total *float64) {
	l.Total = total
	l.require(listUserAuthenticationMethodsOffsetPaginatedResponseContentFieldTotal)
}

// SetAuthenticators sets the Authenticators field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserAuthenticationMethodsOffsetPaginatedResponseContent) SetAuthenticators(authenticators []*UserAuthenticationMethod) {
	l.Authenticators = authenticators
	l.require(listUserAuthenticationMethodsOffsetPaginatedResponseContentFieldAuthenticators)
}

func (l *ListUserAuthenticationMethodsOffsetPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListUserAuthenticationMethodsOffsetPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListUserAuthenticationMethodsOffsetPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListUserAuthenticationMethodsOffsetPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListUserAuthenticationMethodsOffsetPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListUserAuthenticationMethodsOffsetPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listUserConnectedAccountsResponseContentFieldConnectedAccounts = big.NewInt(1 << 0)
	listUserConnectedAccountsResponseContentFieldNext              = big.NewInt(1 << 1)
)

type ListUserConnectedAccountsResponseContent struct {
	ConnectedAccounts []*ConnectedAccount `json:"connected_accounts" url:"connected_accounts"`
	// The token to retrieve the next page of connected accounts (if there is one)
	Next *string `json:"next,omitempty" url:"next,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 (l *ListUserConnectedAccountsResponseContent) GetConnectedAccounts() []*ConnectedAccount {
	if l == nil {
		return nil
	}
	return l.ConnectedAccounts
}

func (l *ListUserConnectedAccountsResponseContent) GetNext() string {
	if l == nil || l.Next == nil {
		return ""
	}
	return *l.Next
}

func (l *ListUserConnectedAccountsResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListUserConnectedAccountsResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetConnectedAccounts sets the ConnectedAccounts field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserConnectedAccountsResponseContent) SetConnectedAccounts(connectedAccounts []*ConnectedAccount) {
	l.ConnectedAccounts = connectedAccounts
	l.require(listUserConnectedAccountsResponseContentFieldConnectedAccounts)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserConnectedAccountsResponseContent) SetNext(next *string) {
	l.Next = next
	l.require(listUserConnectedAccountsResponseContentFieldNext)
}

func (l *ListUserConnectedAccountsResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListUserConnectedAccountsResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListUserConnectedAccountsResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListUserConnectedAccountsResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListUserConnectedAccountsResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListUserConnectedAccountsResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listUserOrganizationsOffsetPaginatedResponseContentFieldStart         = big.NewInt(1 << 0)
	listUserOrganizationsOffsetPaginatedResponseContentFieldLimit         = big.NewInt(1 << 1)
	listUserOrganizationsOffsetPaginatedResponseContentFieldTotal         = big.NewInt(1 << 2)
	listUserOrganizationsOffsetPaginatedResponseContentFieldOrganizations = big.NewInt(1 << 3)
)

type ListUserOrganizationsOffsetPaginatedResponseContent struct {
	Start         *float64        `json:"start,omitempty" url:"start,omitempty"`
	Limit         *float64        `json:"limit,omitempty" url:"limit,omitempty"`
	Total         *float64        `json:"total,omitempty" url:"total,omitempty"`
	Organizations []*Organization `json:"organizations,omitempty" url:"organizations,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 (l *ListUserOrganizationsOffsetPaginatedResponseContent) GetStart() float64 {
	if l == nil || l.Start == nil {
		return 0
	}
	return *l.Start
}

func (l *ListUserOrganizationsOffsetPaginatedResponseContent) GetLimit() float64 {
	if l == nil || l.Limit == nil {
		return 0
	}
	return *l.Limit
}

func (l *ListUserOrganizationsOffsetPaginatedResponseContent) GetTotal() float64 {
	if l == nil || l.Total == nil {
		return 0
	}
	return *l.Total
}

func (l *ListUserOrganizationsOffsetPaginatedResponseContent) GetOrganizations() []*Organization {
	if l == nil || l.Organizations == nil {
		return nil
	}
	return l.Organizations
}

func (l *ListUserOrganizationsOffsetPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListUserOrganizationsOffsetPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetStart sets the Start field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserOrganizationsOffsetPaginatedResponseContent) SetStart(start *float64) {
	l.Start = start
	l.require(listUserOrganizationsOffsetPaginatedResponseContentFieldStart)
}

// 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 (l *ListUserOrganizationsOffsetPaginatedResponseContent) SetLimit(limit *float64) {
	l.Limit = limit
	l.require(listUserOrganizationsOffsetPaginatedResponseContentFieldLimit)
}

// SetTotal sets the Total field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserOrganizationsOffsetPaginatedResponseContent) SetTotal(total *float64) {
	l.Total = total
	l.require(listUserOrganizationsOffsetPaginatedResponseContentFieldTotal)
}

// SetOrganizations sets the Organizations field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserOrganizationsOffsetPaginatedResponseContent) SetOrganizations(organizations []*Organization) {
	l.Organizations = organizations
	l.require(listUserOrganizationsOffsetPaginatedResponseContentFieldOrganizations)
}

func (l *ListUserOrganizationsOffsetPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListUserOrganizationsOffsetPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListUserOrganizationsOffsetPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListUserOrganizationsOffsetPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListUserOrganizationsOffsetPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListUserOrganizationsOffsetPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listUserPermissionsOffsetPaginatedResponseContentFieldStart       = big.NewInt(1 << 0)
	listUserPermissionsOffsetPaginatedResponseContentFieldLimit       = big.NewInt(1 << 1)
	listUserPermissionsOffsetPaginatedResponseContentFieldTotal       = big.NewInt(1 << 2)
	listUserPermissionsOffsetPaginatedResponseContentFieldPermissions = big.NewInt(1 << 3)
)

type ListUserPermissionsOffsetPaginatedResponseContent struct {
	Start       *float64                `json:"start,omitempty" url:"start,omitempty"`
	Limit       *float64                `json:"limit,omitempty" url:"limit,omitempty"`
	Total       *float64                `json:"total,omitempty" url:"total,omitempty"`
	Permissions []*UserPermissionSchema `json:"permissions,omitempty" url:"permissions,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 (l *ListUserPermissionsOffsetPaginatedResponseContent) GetStart() float64 {
	if l == nil || l.Start == nil {
		return 0
	}
	return *l.Start
}

func (l *ListUserPermissionsOffsetPaginatedResponseContent) GetLimit() float64 {
	if l == nil || l.Limit == nil {
		return 0
	}
	return *l.Limit
}

func (l *ListUserPermissionsOffsetPaginatedResponseContent) GetTotal() float64 {
	if l == nil || l.Total == nil {
		return 0
	}
	return *l.Total
}

func (l *ListUserPermissionsOffsetPaginatedResponseContent) GetPermissions() []*UserPermissionSchema {
	if l == nil || l.Permissions == nil {
		return nil
	}
	return l.Permissions
}

func (l *ListUserPermissionsOffsetPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListUserPermissionsOffsetPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetStart sets the Start field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserPermissionsOffsetPaginatedResponseContent) SetStart(start *float64) {
	l.Start = start
	l.require(listUserPermissionsOffsetPaginatedResponseContentFieldStart)
}

// 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 (l *ListUserPermissionsOffsetPaginatedResponseContent) SetLimit(limit *float64) {
	l.Limit = limit
	l.require(listUserPermissionsOffsetPaginatedResponseContentFieldLimit)
}

// SetTotal sets the Total field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserPermissionsOffsetPaginatedResponseContent) SetTotal(total *float64) {
	l.Total = total
	l.require(listUserPermissionsOffsetPaginatedResponseContentFieldTotal)
}

// SetPermissions sets the Permissions field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserPermissionsOffsetPaginatedResponseContent) SetPermissions(permissions []*UserPermissionSchema) {
	l.Permissions = permissions
	l.require(listUserPermissionsOffsetPaginatedResponseContentFieldPermissions)
}

func (l *ListUserPermissionsOffsetPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListUserPermissionsOffsetPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListUserPermissionsOffsetPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListUserPermissionsOffsetPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListUserPermissionsOffsetPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListUserPermissionsOffsetPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listUserRolesOffsetPaginatedResponseContentFieldStart = big.NewInt(1 << 0)
	listUserRolesOffsetPaginatedResponseContentFieldLimit = big.NewInt(1 << 1)
	listUserRolesOffsetPaginatedResponseContentFieldTotal = big.NewInt(1 << 2)
	listUserRolesOffsetPaginatedResponseContentFieldRoles = big.NewInt(1 << 3)
)

type ListUserRolesOffsetPaginatedResponseContent struct {
	Start *float64 `json:"start,omitempty" url:"start,omitempty"`
	Limit *float64 `json:"limit,omitempty" url:"limit,omitempty"`
	Total *float64 `json:"total,omitempty" url:"total,omitempty"`
	Roles []*Role  `json:"roles,omitempty" url:"roles,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 (l *ListUserRolesOffsetPaginatedResponseContent) GetStart() float64 {
	if l == nil || l.Start == nil {
		return 0
	}
	return *l.Start
}

func (l *ListUserRolesOffsetPaginatedResponseContent) GetLimit() float64 {
	if l == nil || l.Limit == nil {
		return 0
	}
	return *l.Limit
}

func (l *ListUserRolesOffsetPaginatedResponseContent) GetTotal() float64 {
	if l == nil || l.Total == nil {
		return 0
	}
	return *l.Total
}

func (l *ListUserRolesOffsetPaginatedResponseContent) GetRoles() []*Role {
	if l == nil || l.Roles == nil {
		return nil
	}
	return l.Roles
}

func (l *ListUserRolesOffsetPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListUserRolesOffsetPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetStart sets the Start field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserRolesOffsetPaginatedResponseContent) SetStart(start *float64) {
	l.Start = start
	l.require(listUserRolesOffsetPaginatedResponseContentFieldStart)
}

// 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 (l *ListUserRolesOffsetPaginatedResponseContent) SetLimit(limit *float64) {
	l.Limit = limit
	l.require(listUserRolesOffsetPaginatedResponseContentFieldLimit)
}

// SetTotal sets the Total field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserRolesOffsetPaginatedResponseContent) SetTotal(total *float64) {
	l.Total = total
	l.require(listUserRolesOffsetPaginatedResponseContentFieldTotal)
}

// SetRoles sets the Roles field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserRolesOffsetPaginatedResponseContent) SetRoles(roles []*Role) {
	l.Roles = roles
	l.require(listUserRolesOffsetPaginatedResponseContentFieldRoles)
}

func (l *ListUserRolesOffsetPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListUserRolesOffsetPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListUserRolesOffsetPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListUserRolesOffsetPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListUserRolesOffsetPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListUserRolesOffsetPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listUserSessionsPaginatedResponseContentFieldSessions = big.NewInt(1 << 0)
	listUserSessionsPaginatedResponseContentFieldNext     = big.NewInt(1 << 1)
)

type ListUserSessionsPaginatedResponseContent struct {
	Sessions []*SessionResponseContent `json:"sessions,omitempty" url:"sessions,omitempty"`
	// A cursor to be used as the "from" query parameter for the next page of results.
	Next *string `json:"next,omitempty" url:"next,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (l *ListUserSessionsPaginatedResponseContent) GetSessions() []*SessionResponseContent {
	if l == nil || l.Sessions == nil {
		return nil
	}
	return l.Sessions
}

func (l *ListUserSessionsPaginatedResponseContent) GetNext() string {
	if l == nil || l.Next == nil {
		return ""
	}
	return *l.Next
}

func (l *ListUserSessionsPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.ExtraProperties
}

func (l *ListUserSessionsPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetSessions sets the Sessions field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserSessionsPaginatedResponseContent) SetSessions(sessions []*SessionResponseContent) {
	l.Sessions = sessions
	l.require(listUserSessionsPaginatedResponseContentFieldSessions)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListUserSessionsPaginatedResponseContent) SetNext(next *string) {
	l.Next = next
	l.require(listUserSessionsPaginatedResponseContentFieldNext)
}

func (l *ListUserSessionsPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type embed ListUserSessionsPaginatedResponseContent
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*l = ListUserSessionsPaginatedResponseContent(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.ExtraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListUserSessionsPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListUserSessionsPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, l.ExtraProperties)
}

func (l *ListUserSessionsPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	listVerifiableCredentialTemplatesPaginatedResponseContentFieldNext      = big.NewInt(1 << 0)
	listVerifiableCredentialTemplatesPaginatedResponseContentFieldTemplates = big.NewInt(1 << 1)
)

type ListVerifiableCredentialTemplatesPaginatedResponseContent struct {
	// Opaque identifier for use with the <i>from</i> query parameter for the next page of results.<br/>This identifier is valid for 24 hours.
	Next      *string                                 `json:"next,omitempty" url:"next,omitempty"`
	Templates []*VerifiableCredentialTemplateResponse `json:"templates,omitempty" url:"templates,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 (l *ListVerifiableCredentialTemplatesPaginatedResponseContent) GetNext() string {
	if l == nil || l.Next == nil {
		return ""
	}
	return *l.Next
}

func (l *ListVerifiableCredentialTemplatesPaginatedResponseContent) GetTemplates() []*VerifiableCredentialTemplateResponse {
	if l == nil || l.Templates == nil {
		return nil
	}
	return l.Templates
}

func (l *ListVerifiableCredentialTemplatesPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListVerifiableCredentialTemplatesPaginatedResponseContent) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListVerifiableCredentialTemplatesPaginatedResponseContent) SetNext(next *string) {
	l.Next = next
	l.require(listVerifiableCredentialTemplatesPaginatedResponseContentFieldNext)
}

// SetTemplates sets the Templates field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListVerifiableCredentialTemplatesPaginatedResponseContent) SetTemplates(templates []*VerifiableCredentialTemplateResponse) {
	l.Templates = templates
	l.require(listVerifiableCredentialTemplatesPaginatedResponseContentFieldTemplates)
}

func (l *ListVerifiableCredentialTemplatesPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ListVerifiableCredentialTemplatesPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*l = ListVerifiableCredentialTemplatesPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.extraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *ListVerifiableCredentialTemplatesPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed ListVerifiableCredentialTemplatesPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (l *ListVerifiableCredentialTemplatesPaginatedResponseContent) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	logFieldDate            = big.NewInt(1 << 0)
	logFieldType            = big.NewInt(1 << 1)
	logFieldDescription     = big.NewInt(1 << 2)
	logFieldConnection      = big.NewInt(1 << 3)
	logFieldConnectionID    = big.NewInt(1 << 4)
	logFieldClientID        = big.NewInt(1 << 5)
	logFieldClientName      = big.NewInt(1 << 6)
	logFieldIP              = big.NewInt(1 << 7)
	logFieldHostname        = big.NewInt(1 << 8)
	logFieldUserID          = big.NewInt(1 << 9)
	logFieldUserName        = big.NewInt(1 << 10)
	logFieldAudience        = big.NewInt(1 << 11)
	logFieldScope           = big.NewInt(1 << 12)
	logFieldStrategy        = big.NewInt(1 << 13)
	logFieldStrategyType    = big.NewInt(1 << 14)
	logFieldLogID           = big.NewInt(1 << 15)
	logFieldIsMobile        = big.NewInt(1 << 16)
	logFieldDetails         = big.NewInt(1 << 17)
	logFieldUserAgent       = big.NewInt(1 << 18)
	logFieldSecurityContext = big.NewInt(1 << 19)
	logFieldLocationInfo    = big.NewInt(1 << 20)
)

type Log struct {
	Date *LogDate `json:"date,omitempty" url:"date,omitempty"`
	// Type of event.
	Type *string `json:"type,omitempty" url:"type,omitempty"`
	// Description of this event.
	Description *string `json:"description,omitempty" url:"description,omitempty"`
	// Name of the connection the event relates to.
	Connection *string `json:"connection,omitempty" url:"connection,omitempty"`
	// ID of the connection the event relates to.
	ConnectionID *string `json:"connection_id,omitempty" url:"connection_id,omitempty"`
	// ID of the client (application).
	ClientID *string `json:"client_id,omitempty" url:"client_id,omitempty"`
	// Name of the client (application).
	ClientName *string `json:"client_name,omitempty" url:"client_name,omitempty"`
	// IP address of the log event source.
	IP *string `json:"ip,omitempty" url:"ip,omitempty"`
	// Hostname the event applies to.
	Hostname *string `json:"hostname,omitempty" url:"hostname,omitempty"`
	// ID of the user involved in the event.
	UserID *string `json:"user_id,omitempty" url:"user_id,omitempty"`
	// Name of the user involved in the event.
	UserName *string `json:"user_name,omitempty" url:"user_name,omitempty"`
	// API audience the event applies to.
	Audience *string `json:"audience,omitempty" url:"audience,omitempty"`
	// Scope permissions applied to the event.
	Scope *string `json:"scope,omitempty" url:"scope,omitempty"`
	// Name of the strategy involved in the event.
	Strategy *string `json:"strategy,omitempty" url:"strategy,omitempty"`
	// Type of strategy involved in the event.
	StrategyType *string `json:"strategy_type,omitempty" url:"strategy_type,omitempty"`
	// Unique ID of the event.
	LogID *string `json:"log_id,omitempty" url:"log_id,omitempty"`
	// Whether the client was a mobile device (true) or desktop/laptop/server (false).
	IsMobile *bool       `json:"isMobile,omitempty" url:"isMobile,omitempty"`
	Details  *LogDetails `json:"details,omitempty" url:"details,omitempty"`
	// User agent string from the client device that caused the event.
	UserAgent       *string             `json:"user_agent,omitempty" url:"user_agent,omitempty"`
	SecurityContext *LogSecurityContext `json:"security_context,omitempty" url:"security_context,omitempty"`
	LocationInfo    *LogLocationInfo    `json:"location_info,omitempty" url:"location_info,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (l *Log) GetDate() LogDate {
	if l == nil || l.Date == nil {
		return LogDate{}
	}
	return *l.Date
}

func (l *Log) GetType() string {
	if l == nil || l.Type == nil {
		return ""
	}
	return *l.Type
}

func (l *Log) GetDescription() string {
	if l == nil || l.Description == nil {
		return ""
	}
	return *l.Description
}

func (l *Log) GetConnection() string {
	if l == nil || l.Connection == nil {
		return ""
	}
	return *l.Connection
}

func (l *Log) GetConnectionID() string {
	if l == nil || l.ConnectionID == nil {
		return ""
	}
	return *l.ConnectionID
}

func (l *Log) GetClientID() string {
	if l == nil || l.ClientID == nil {
		return ""
	}
	return *l.ClientID
}

func (l *Log) GetClientName() string {
	if l == nil || l.ClientName == nil {
		return ""
	}
	return *l.ClientName
}

func (l *Log) GetIP() string {
	if l == nil || l.IP == nil {
		return ""
	}
	return *l.IP
}

func (l *Log) GetHostname() string {
	if l == nil || l.Hostname == nil {
		return ""
	}
	return *l.Hostname
}

func (l *Log) GetUserID() string {
	if l == nil || l.UserID == nil {
		return ""
	}
	return *l.UserID
}

func (l *Log) GetUserName() string {
	if l == nil || l.UserName == nil {
		return ""
	}
	return *l.UserName
}

func (l *Log) GetAudience() string {
	if l == nil || l.Audience == nil {
		return ""
	}
	return *l.Audience
}

func (l *Log) GetScope() string {
	if l == nil || l.Scope == nil {
		return ""
	}
	return *l.Scope
}

func (l *Log) GetStrategy() string {
	if l == nil || l.Strategy == nil {
		return ""
	}
	return *l.Strategy
}

func (l *Log) GetStrategyType() string {
	if l == nil || l.StrategyType == nil {
		return ""
	}
	return *l.StrategyType
}

func (l *Log) GetLogID() string {
	if l == nil || l.LogID == nil {
		return ""
	}
	return *l.LogID
}

func (l *Log) GetIsMobile() bool {
	if l == nil || l.IsMobile == nil {
		return false
	}
	return *l.IsMobile
}

func (l *Log) GetDetails() LogDetails {
	if l == nil || l.Details == nil {
		return nil
	}
	return *l.Details
}

func (l *Log) GetUserAgent() string {
	if l == nil || l.UserAgent == nil {
		return ""
	}
	return *l.UserAgent
}

func (l *Log) GetSecurityContext() LogSecurityContext {
	if l == nil || l.SecurityContext == nil {
		return LogSecurityContext{}
	}
	return *l.SecurityContext
}

func (l *Log) GetLocationInfo() LogLocationInfo {
	if l == nil || l.LocationInfo == nil {
		return LogLocationInfo{}
	}
	return *l.LocationInfo
}

func (l *Log) GetExtraProperties() map[string]interface{} {
	return l.ExtraProperties
}

func (l *Log) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetDate sets the Date field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetDate(date *LogDate) {
	l.Date = date
	l.require(logFieldDate)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetType(type_ *string) {
	l.Type = type_
	l.require(logFieldType)
}

// SetDescription sets the Description field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetDescription(description *string) {
	l.Description = description
	l.require(logFieldDescription)
}

// SetConnection sets the Connection field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetConnection(connection *string) {
	l.Connection = connection
	l.require(logFieldConnection)
}

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetConnectionID(connectionID *string) {
	l.ConnectionID = connectionID
	l.require(logFieldConnectionID)
}

// SetClientID sets the ClientID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetClientID(clientID *string) {
	l.ClientID = clientID
	l.require(logFieldClientID)
}

// SetClientName sets the ClientName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetClientName(clientName *string) {
	l.ClientName = clientName
	l.require(logFieldClientName)
}

// SetIP sets the IP field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetIP(ip *string) {
	l.IP = ip
	l.require(logFieldIP)
}

// SetHostname sets the Hostname field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetHostname(hostname *string) {
	l.Hostname = hostname
	l.require(logFieldHostname)
}

// 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 (l *Log) SetUserID(userID *string) {
	l.UserID = userID
	l.require(logFieldUserID)
}

// SetUserName sets the UserName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetUserName(userName *string) {
	l.UserName = userName
	l.require(logFieldUserName)
}

// SetAudience sets the Audience field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetAudience(audience *string) {
	l.Audience = audience
	l.require(logFieldAudience)
}

// SetScope sets the Scope field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetScope(scope *string) {
	l.Scope = scope
	l.require(logFieldScope)
}

// SetStrategy sets the Strategy field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetStrategy(strategy *string) {
	l.Strategy = strategy
	l.require(logFieldStrategy)
}

// SetStrategyType sets the StrategyType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetStrategyType(strategyType *string) {
	l.StrategyType = strategyType
	l.require(logFieldStrategyType)
}

// SetLogID sets the LogID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetLogID(logID *string) {
	l.LogID = logID
	l.require(logFieldLogID)
}

// SetIsMobile sets the IsMobile field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetIsMobile(isMobile *bool) {
	l.IsMobile = isMobile
	l.require(logFieldIsMobile)
}

// SetDetails sets the Details field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetDetails(details *LogDetails) {
	l.Details = details
	l.require(logFieldDetails)
}

// SetUserAgent sets the UserAgent field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetUserAgent(userAgent *string) {
	l.UserAgent = userAgent
	l.require(logFieldUserAgent)
}

// SetSecurityContext sets the SecurityContext field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetSecurityContext(securityContext *LogSecurityContext) {
	l.SecurityContext = securityContext
	l.require(logFieldSecurityContext)
}

// SetLocationInfo sets the LocationInfo field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *Log) SetLocationInfo(locationInfo *LogLocationInfo) {
	l.LocationInfo = locationInfo
	l.require(logFieldLocationInfo)
}

func (l *Log) UnmarshalJSON(data []byte) error {
	type embed Log
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*l = Log(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.ExtraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *Log) MarshalJSON() ([]byte, error) {
	type embed Log
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, l.ExtraProperties)
}

func (l *Log) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

type LogDate struct {
	// Date when the event occurred in ISO 8601 format.
	String        string
	LogDateObject LogDateObject

	typ string
}

func (l *LogDate) GetString() string {
	if l == nil {
		return ""
	}
	return l.String
}

func (l *LogDate) GetLogDateObject() LogDateObject {
	if l == nil {
		return nil
	}
	return l.LogDateObject
}

func (l *LogDate) UnmarshalJSON(data []byte) error {
	var valueString string
	if err := json.Unmarshal(data, &valueString); err == nil {
		l.typ = "String"
		l.String = valueString
		return nil
	}
	var valueLogDateObject LogDateObject
	if err := json.Unmarshal(data, &valueLogDateObject); err == nil {
		l.typ = "LogDateObject"
		l.LogDateObject = valueLogDateObject
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, l)
}

func (l LogDate) MarshalJSON() ([]byte, error) {
	if l.typ == "String" || l.String != "" {
		return json.Marshal(l.String)
	}
	if l.typ == "LogDateObject" || l.LogDateObject != nil {
		return json.Marshal(l.LogDateObject)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", l)
}

type LogDateVisitor interface {
	VisitString(string) error
	VisitLogDateObject(LogDateObject) error
}

func (l *LogDate) Accept(visitor LogDateVisitor) error {
	if l.typ == "String" || l.String != "" {
		return visitor.VisitString(l.String)
	}
	if l.typ == "LogDateObject" || l.LogDateObject != nil {
		return visitor.VisitLogDateObject(l.LogDateObject)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", l)
}

// Date when the event occurred in ISO 8601 format.
type LogDateObject = map[string]interface{}

// Additional useful details about this event (structure is dependent upon event type).
type LogDetails = map[string]interface{}

// Information about the location that triggered this event based on the `ip`.
var (
	logLocationInfoFieldCountryCode   = big.NewInt(1 << 0)
	logLocationInfoFieldCountryCode3  = big.NewInt(1 << 1)
	logLocationInfoFieldCountryName   = big.NewInt(1 << 2)
	logLocationInfoFieldCityName      = big.NewInt(1 << 3)
	logLocationInfoFieldLatitude      = big.NewInt(1 << 4)
	logLocationInfoFieldLongitude     = big.NewInt(1 << 5)
	logLocationInfoFieldTimeZone      = big.NewInt(1 << 6)
	logLocationInfoFieldContinentCode = big.NewInt(1 << 7)
)

type LogLocationInfo struct {
	// Two-letter <a href="https://www.iso.org/iso-3166-country-codes.html">Alpha-2 ISO 3166-1</a> country code.
	CountryCode *string `json:"country_code,omitempty" url:"country_code,omitempty"`
	// Three-letter <a href="https://www.iso.org/iso-3166-country-codes.html">Alpha-3 ISO 3166-1</a> country code.
	CountryCode3 *string `json:"country_code3,omitempty" url:"country_code3,omitempty"`
	// Full country name in English.
	CountryName *string `json:"country_name,omitempty" url:"country_name,omitempty"`
	// Full city name in English.
	CityName *string `json:"city_name,omitempty" url:"city_name,omitempty"`
	// Global latitude (horizontal) position.
	Latitude *string `json:"latitude,omitempty" url:"latitude,omitempty"`
	// Global longitude (vertical) position.
	Longitude *string `json:"longitude,omitempty" url:"longitude,omitempty"`
	// Time zone name as found in the <a href="https://www.iana.org/time-zones">tz database</a>.
	TimeZone *string `json:"time_zone,omitempty" url:"time_zone,omitempty"`
	// Continent the country is located within. Can be `AF` (Africa), `AN` (Antarctica), `AS` (Asia), `EU` (Europe), `NA` (North America), `OC` (Oceania) or `SA` (South America).
	ContinentCode *string `json:"continent_code,omitempty" url:"continent_code,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (l *LogLocationInfo) GetCountryCode() string {
	if l == nil || l.CountryCode == nil {
		return ""
	}
	return *l.CountryCode
}

func (l *LogLocationInfo) GetCountryCode3() string {
	if l == nil || l.CountryCode3 == nil {
		return ""
	}
	return *l.CountryCode3
}

func (l *LogLocationInfo) GetCountryName() string {
	if l == nil || l.CountryName == nil {
		return ""
	}
	return *l.CountryName
}

func (l *LogLocationInfo) GetCityName() string {
	if l == nil || l.CityName == nil {
		return ""
	}
	return *l.CityName
}

func (l *LogLocationInfo) GetLatitude() string {
	if l == nil || l.Latitude == nil {
		return ""
	}
	return *l.Latitude
}

func (l *LogLocationInfo) GetLongitude() string {
	if l == nil || l.Longitude == nil {
		return ""
	}
	return *l.Longitude
}

func (l *LogLocationInfo) GetTimeZone() string {
	if l == nil || l.TimeZone == nil {
		return ""
	}
	return *l.TimeZone
}

func (l *LogLocationInfo) GetContinentCode() string {
	if l == nil || l.ContinentCode == nil {
		return ""
	}
	return *l.ContinentCode
}

func (l *LogLocationInfo) GetExtraProperties() map[string]interface{} {
	return l.ExtraProperties
}

func (l *LogLocationInfo) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetCountryCode sets the CountryCode field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *LogLocationInfo) SetCountryCode(countryCode *string) {
	l.CountryCode = countryCode
	l.require(logLocationInfoFieldCountryCode)
}

// SetCountryCode3 sets the CountryCode3 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *LogLocationInfo) SetCountryCode3(countryCode3 *string) {
	l.CountryCode3 = countryCode3
	l.require(logLocationInfoFieldCountryCode3)
}

// SetCountryName sets the CountryName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *LogLocationInfo) SetCountryName(countryName *string) {
	l.CountryName = countryName
	l.require(logLocationInfoFieldCountryName)
}

// SetCityName sets the CityName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *LogLocationInfo) SetCityName(cityName *string) {
	l.CityName = cityName
	l.require(logLocationInfoFieldCityName)
}

// SetLatitude sets the Latitude field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *LogLocationInfo) SetLatitude(latitude *string) {
	l.Latitude = latitude
	l.require(logLocationInfoFieldLatitude)
}

// SetLongitude sets the Longitude field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *LogLocationInfo) SetLongitude(longitude *string) {
	l.Longitude = longitude
	l.require(logLocationInfoFieldLongitude)
}

// SetTimeZone sets the TimeZone field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *LogLocationInfo) SetTimeZone(timeZone *string) {
	l.TimeZone = timeZone
	l.require(logLocationInfoFieldTimeZone)
}

// SetContinentCode sets the ContinentCode field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *LogLocationInfo) SetContinentCode(continentCode *string) {
	l.ContinentCode = continentCode
	l.require(logLocationInfoFieldContinentCode)
}

func (l *LogLocationInfo) UnmarshalJSON(data []byte) error {
	type embed LogLocationInfo
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*l = LogLocationInfo(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.ExtraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *LogLocationInfo) MarshalJSON() ([]byte, error) {
	type embed LogLocationInfo
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, l.ExtraProperties)
}

func (l *LogLocationInfo) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

// Information about security-related signals.
var (
	logSecurityContextFieldJa3 = big.NewInt(1 << 0)
	logSecurityContextFieldJa4 = big.NewInt(1 << 1)
)

type LogSecurityContext struct {
	// JA3 fingerprint value.
	Ja3 *string `json:"ja3,omitempty" url:"ja3,omitempty"`
	// JA4 fingerprint value.
	Ja4 *string `json:"ja4,omitempty" url:"ja4,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (l *LogSecurityContext) GetJa3() string {
	if l == nil || l.Ja3 == nil {
		return ""
	}
	return *l.Ja3
}

func (l *LogSecurityContext) GetJa4() string {
	if l == nil || l.Ja4 == nil {
		return ""
	}
	return *l.Ja4
}

func (l *LogSecurityContext) GetExtraProperties() map[string]interface{} {
	return l.ExtraProperties
}

func (l *LogSecurityContext) require(field *big.Int) {
	if l.explicitFields == nil {
		l.explicitFields = big.NewInt(0)
	}
	l.explicitFields.Or(l.explicitFields, field)
}

// SetJa3 sets the Ja3 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *LogSecurityContext) SetJa3(ja3 *string) {
	l.Ja3 = ja3
	l.require(logSecurityContextFieldJa3)
}

// SetJa4 sets the Ja4 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *LogSecurityContext) SetJa4(ja4 *string) {
	l.Ja4 = ja4
	l.require(logSecurityContextFieldJa4)
}

func (l *LogSecurityContext) UnmarshalJSON(data []byte) error {
	type embed LogSecurityContext
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*l = LogSecurityContext(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *l)
	if err != nil {
		return err
	}
	l.ExtraProperties = extraProperties
	l.rawJSON = json.RawMessage(data)
	return nil
}

func (l *LogSecurityContext) MarshalJSON() ([]byte, error) {
	type embed LogSecurityContext
	var marshaler = struct {
		embed
	}{
		embed: embed(*l),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, l.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, l.ExtraProperties)
}

func (l *LogSecurityContext) String() string {
	if len(l.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(l.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(l); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", l)
}

var (
	mdlPresentationPropertiesFieldFamilyName                  = big.NewInt(1 << 0)
	mdlPresentationPropertiesFieldGivenName                   = big.NewInt(1 << 1)
	mdlPresentationPropertiesFieldBirthDate                   = big.NewInt(1 << 2)
	mdlPresentationPropertiesFieldIssueDate                   = big.NewInt(1 << 3)
	mdlPresentationPropertiesFieldExpiryDate                  = big.NewInt(1 << 4)
	mdlPresentationPropertiesFieldIssuingCountry              = big.NewInt(1 << 5)
	mdlPresentationPropertiesFieldIssuingAuthority            = big.NewInt(1 << 6)
	mdlPresentationPropertiesFieldPortrait                    = big.NewInt(1 << 7)
	mdlPresentationPropertiesFieldDrivingPrivileges           = big.NewInt(1 << 8)
	mdlPresentationPropertiesFieldResidentAddress             = big.NewInt(1 << 9)
	mdlPresentationPropertiesFieldPortraitCaptureDate         = big.NewInt(1 << 10)
	mdlPresentationPropertiesFieldAgeInYears                  = big.NewInt(1 << 11)
	mdlPresentationPropertiesFieldAgeBirthYear                = big.NewInt(1 << 12)
	mdlPresentationPropertiesFieldIssuingJurisdiction         = big.NewInt(1 << 13)
	mdlPresentationPropertiesFieldNationality                 = big.NewInt(1 << 14)
	mdlPresentationPropertiesFieldResidentCity                = big.NewInt(1 << 15)
	mdlPresentationPropertiesFieldResidentState               = big.NewInt(1 << 16)
	mdlPresentationPropertiesFieldResidentPostalCode          = big.NewInt(1 << 17)
	mdlPresentationPropertiesFieldResidentCountry             = big.NewInt(1 << 18)
	mdlPresentationPropertiesFieldFamilyNameNationalCharacter = big.NewInt(1 << 19)
	mdlPresentationPropertiesFieldGivenNameNationalCharacter  = big.NewInt(1 << 20)
)

type MdlPresentationProperties struct {
	// Family Name
	FamilyName *bool `json:"family_name,omitempty" url:"family_name,omitempty"`
	// Given Name
	GivenName *bool `json:"given_name,omitempty" url:"given_name,omitempty"`
	// Birth Date
	BirthDate *bool `json:"birth_date,omitempty" url:"birth_date,omitempty"`
	// Issue Date
	IssueDate *bool `json:"issue_date,omitempty" url:"issue_date,omitempty"`
	// Expiry Date
	ExpiryDate *bool `json:"expiry_date,omitempty" url:"expiry_date,omitempty"`
	// Issuing Country
	IssuingCountry *bool `json:"issuing_country,omitempty" url:"issuing_country,omitempty"`
	// Issuing Authority
	IssuingAuthority *bool `json:"issuing_authority,omitempty" url:"issuing_authority,omitempty"`
	// Portrait
	Portrait *bool `json:"portrait,omitempty" url:"portrait,omitempty"`
	// Driving Privileges
	DrivingPrivileges *bool `json:"driving_privileges,omitempty" url:"driving_privileges,omitempty"`
	// Resident Address
	ResidentAddress *bool `json:"resident_address,omitempty" url:"resident_address,omitempty"`
	// Portrait Capture Date
	PortraitCaptureDate *bool `json:"portrait_capture_date,omitempty" url:"portrait_capture_date,omitempty"`
	// Age in Years
	AgeInYears *bool `json:"age_in_years,omitempty" url:"age_in_years,omitempty"`
	// Age Birth Year
	AgeBirthYear *bool `json:"age_birth_year,omitempty" url:"age_birth_year,omitempty"`
	// Issuing Jurisdiction
	IssuingJurisdiction *bool `json:"issuing_jurisdiction,omitempty" url:"issuing_jurisdiction,omitempty"`
	// Nationality
	Nationality *bool `json:"nationality,omitempty" url:"nationality,omitempty"`
	// Resident City
	ResidentCity *bool `json:"resident_city,omitempty" url:"resident_city,omitempty"`
	// Resident State
	ResidentState *bool `json:"resident_state,omitempty" url:"resident_state,omitempty"`
	// Resident Postal Code
	ResidentPostalCode *bool `json:"resident_postal_code,omitempty" url:"resident_postal_code,omitempty"`
	// Resident Country
	ResidentCountry *bool `json:"resident_country,omitempty" url:"resident_country,omitempty"`
	// Family Name National Character
	FamilyNameNationalCharacter *bool `json:"family_name_national_character,omitempty" url:"family_name_national_character,omitempty"`
	// Given Name National Character
	GivenNameNationalCharacter *bool `json:"given_name_national_character,omitempty" url:"given_name_national_character,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (m *MdlPresentationProperties) GetFamilyName() bool {
	if m == nil || m.FamilyName == nil {
		return false
	}
	return *m.FamilyName
}

func (m *MdlPresentationProperties) GetGivenName() bool {
	if m == nil || m.GivenName == nil {
		return false
	}
	return *m.GivenName
}

func (m *MdlPresentationProperties) GetBirthDate() bool {
	if m == nil || m.BirthDate == nil {
		return false
	}
	return *m.BirthDate
}

func (m *MdlPresentationProperties) GetIssueDate() bool {
	if m == nil || m.IssueDate == nil {
		return false
	}
	return *m.IssueDate
}

func (m *MdlPresentationProperties) GetExpiryDate() bool {
	if m == nil || m.ExpiryDate == nil {
		return false
	}
	return *m.ExpiryDate
}

func (m *MdlPresentationProperties) GetIssuingCountry() bool {
	if m == nil || m.IssuingCountry == nil {
		return false
	}
	return *m.IssuingCountry
}

func (m *MdlPresentationProperties) GetIssuingAuthority() bool {
	if m == nil || m.IssuingAuthority == nil {
		return false
	}
	return *m.IssuingAuthority
}

func (m *MdlPresentationProperties) GetPortrait() bool {
	if m == nil || m.Portrait == nil {
		return false
	}
	return *m.Portrait
}

func (m *MdlPresentationProperties) GetDrivingPrivileges() bool {
	if m == nil || m.DrivingPrivileges == nil {
		return false
	}
	return *m.DrivingPrivileges
}

func (m *MdlPresentationProperties) GetResidentAddress() bool {
	if m == nil || m.ResidentAddress == nil {
		return false
	}
	return *m.ResidentAddress
}

func (m *MdlPresentationProperties) GetPortraitCaptureDate() bool {
	if m == nil || m.PortraitCaptureDate == nil {
		return false
	}
	return *m.PortraitCaptureDate
}

func (m *MdlPresentationProperties) GetAgeInYears() bool {
	if m == nil || m.AgeInYears == nil {
		return false
	}
	return *m.AgeInYears
}

func (m *MdlPresentationProperties) GetAgeBirthYear() bool {
	if m == nil || m.AgeBirthYear == nil {
		return false
	}
	return *m.AgeBirthYear
}

func (m *MdlPresentationProperties) GetIssuingJurisdiction() bool {
	if m == nil || m.IssuingJurisdiction == nil {
		return false
	}
	return *m.IssuingJurisdiction
}

func (m *MdlPresentationProperties) GetNationality() bool {
	if m == nil || m.Nationality == nil {
		return false
	}
	return *m.Nationality
}

func (m *MdlPresentationProperties) GetResidentCity() bool {
	if m == nil || m.ResidentCity == nil {
		return false
	}
	return *m.ResidentCity
}

func (m *MdlPresentationProperties) GetResidentState() bool {
	if m == nil || m.ResidentState == nil {
		return false
	}
	return *m.ResidentState
}

func (m *MdlPresentationProperties) GetResidentPostalCode() bool {
	if m == nil || m.ResidentPostalCode == nil {
		return false
	}
	return *m.ResidentPostalCode
}

func (m *MdlPresentationProperties) GetResidentCountry() bool {
	if m == nil || m.ResidentCountry == nil {
		return false
	}
	return *m.ResidentCountry
}

func (m *MdlPresentationProperties) GetFamilyNameNationalCharacter() bool {
	if m == nil || m.FamilyNameNationalCharacter == nil {
		return false
	}
	return *m.FamilyNameNationalCharacter
}

func (m *MdlPresentationProperties) GetGivenNameNationalCharacter() bool {
	if m == nil || m.GivenNameNationalCharacter == nil {
		return false
	}
	return *m.GivenNameNationalCharacter
}

func (m *MdlPresentationProperties) GetExtraProperties() map[string]interface{} {
	return m.ExtraProperties
}

func (m *MdlPresentationProperties) require(field *big.Int) {
	if m.explicitFields == nil {
		m.explicitFields = big.NewInt(0)
	}
	m.explicitFields.Or(m.explicitFields, field)
}

// SetFamilyName sets the FamilyName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetFamilyName(familyName *bool) {
	m.FamilyName = familyName
	m.require(mdlPresentationPropertiesFieldFamilyName)
}

// SetGivenName sets the GivenName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetGivenName(givenName *bool) {
	m.GivenName = givenName
	m.require(mdlPresentationPropertiesFieldGivenName)
}

// SetBirthDate sets the BirthDate field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetBirthDate(birthDate *bool) {
	m.BirthDate = birthDate
	m.require(mdlPresentationPropertiesFieldBirthDate)
}

// SetIssueDate sets the IssueDate field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetIssueDate(issueDate *bool) {
	m.IssueDate = issueDate
	m.require(mdlPresentationPropertiesFieldIssueDate)
}

// SetExpiryDate sets the ExpiryDate field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetExpiryDate(expiryDate *bool) {
	m.ExpiryDate = expiryDate
	m.require(mdlPresentationPropertiesFieldExpiryDate)
}

// SetIssuingCountry sets the IssuingCountry field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetIssuingCountry(issuingCountry *bool) {
	m.IssuingCountry = issuingCountry
	m.require(mdlPresentationPropertiesFieldIssuingCountry)
}

// SetIssuingAuthority sets the IssuingAuthority field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetIssuingAuthority(issuingAuthority *bool) {
	m.IssuingAuthority = issuingAuthority
	m.require(mdlPresentationPropertiesFieldIssuingAuthority)
}

// SetPortrait sets the Portrait field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetPortrait(portrait *bool) {
	m.Portrait = portrait
	m.require(mdlPresentationPropertiesFieldPortrait)
}

// SetDrivingPrivileges sets the DrivingPrivileges field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetDrivingPrivileges(drivingPrivileges *bool) {
	m.DrivingPrivileges = drivingPrivileges
	m.require(mdlPresentationPropertiesFieldDrivingPrivileges)
}

// SetResidentAddress sets the ResidentAddress field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetResidentAddress(residentAddress *bool) {
	m.ResidentAddress = residentAddress
	m.require(mdlPresentationPropertiesFieldResidentAddress)
}

// SetPortraitCaptureDate sets the PortraitCaptureDate field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetPortraitCaptureDate(portraitCaptureDate *bool) {
	m.PortraitCaptureDate = portraitCaptureDate
	m.require(mdlPresentationPropertiesFieldPortraitCaptureDate)
}

// SetAgeInYears sets the AgeInYears field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetAgeInYears(ageInYears *bool) {
	m.AgeInYears = ageInYears
	m.require(mdlPresentationPropertiesFieldAgeInYears)
}

// SetAgeBirthYear sets the AgeBirthYear field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetAgeBirthYear(ageBirthYear *bool) {
	m.AgeBirthYear = ageBirthYear
	m.require(mdlPresentationPropertiesFieldAgeBirthYear)
}

// SetIssuingJurisdiction sets the IssuingJurisdiction field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetIssuingJurisdiction(issuingJurisdiction *bool) {
	m.IssuingJurisdiction = issuingJurisdiction
	m.require(mdlPresentationPropertiesFieldIssuingJurisdiction)
}

// SetNationality sets the Nationality field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetNationality(nationality *bool) {
	m.Nationality = nationality
	m.require(mdlPresentationPropertiesFieldNationality)
}

// SetResidentCity sets the ResidentCity field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetResidentCity(residentCity *bool) {
	m.ResidentCity = residentCity
	m.require(mdlPresentationPropertiesFieldResidentCity)
}

// SetResidentState sets the ResidentState field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetResidentState(residentState *bool) {
	m.ResidentState = residentState
	m.require(mdlPresentationPropertiesFieldResidentState)
}

// SetResidentPostalCode sets the ResidentPostalCode field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetResidentPostalCode(residentPostalCode *bool) {
	m.ResidentPostalCode = residentPostalCode
	m.require(mdlPresentationPropertiesFieldResidentPostalCode)
}

// SetResidentCountry sets the ResidentCountry field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetResidentCountry(residentCountry *bool) {
	m.ResidentCountry = residentCountry
	m.require(mdlPresentationPropertiesFieldResidentCountry)
}

// SetFamilyNameNationalCharacter sets the FamilyNameNationalCharacter field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetFamilyNameNationalCharacter(familyNameNationalCharacter *bool) {
	m.FamilyNameNationalCharacter = familyNameNationalCharacter
	m.require(mdlPresentationPropertiesFieldFamilyNameNationalCharacter)
}

// SetGivenNameNationalCharacter sets the GivenNameNationalCharacter field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationProperties) SetGivenNameNationalCharacter(givenNameNationalCharacter *bool) {
	m.GivenNameNationalCharacter = givenNameNationalCharacter
	m.require(mdlPresentationPropertiesFieldGivenNameNationalCharacter)
}

func (m *MdlPresentationProperties) UnmarshalJSON(data []byte) error {
	type embed MdlPresentationProperties
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*m),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*m = MdlPresentationProperties(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *m)
	if err != nil {
		return err
	}
	m.ExtraProperties = extraProperties
	m.rawJSON = json.RawMessage(data)
	return nil
}

func (m *MdlPresentationProperties) MarshalJSON() ([]byte, error) {
	type embed MdlPresentationProperties
	var marshaler = struct {
		embed
	}{
		embed: embed(*m),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, m.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, m.ExtraProperties)
}

func (m *MdlPresentationProperties) String() string {
	if len(m.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(m.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(m); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", m)
}

// A simplified presentation request
var (
	mdlPresentationRequestFieldOrgIso1801351MDl = big.NewInt(1 << 0)
)

type MdlPresentationRequest struct {
	OrgIso1801351MDl *MdlPresentationRequestProperties `json:"org.iso.18013.5.1.mDL" url:"org.iso.18013.5.1.mDL"`

	// 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 (m *MdlPresentationRequest) GetOrgIso1801351MDl() *MdlPresentationRequestProperties {
	if m == nil {
		return nil
	}
	return m.OrgIso1801351MDl
}

func (m *MdlPresentationRequest) GetExtraProperties() map[string]interface{} {
	return m.extraProperties
}

func (m *MdlPresentationRequest) require(field *big.Int) {
	if m.explicitFields == nil {
		m.explicitFields = big.NewInt(0)
	}
	m.explicitFields.Or(m.explicitFields, field)
}

// SetOrgIso1801351MDl sets the OrgIso1801351MDl field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationRequest) SetOrgIso1801351MDl(orgIso1801351MDl *MdlPresentationRequestProperties) {
	m.OrgIso1801351MDl = orgIso1801351MDl
	m.require(mdlPresentationRequestFieldOrgIso1801351MDl)
}

func (m *MdlPresentationRequest) UnmarshalJSON(data []byte) error {
	type unmarshaler MdlPresentationRequest
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*m = MdlPresentationRequest(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *m)
	if err != nil {
		return err
	}
	m.extraProperties = extraProperties
	m.rawJSON = json.RawMessage(data)
	return nil
}

func (m *MdlPresentationRequest) MarshalJSON() ([]byte, error) {
	type embed MdlPresentationRequest
	var marshaler = struct {
		embed
	}{
		embed: embed(*m),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, m.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (m *MdlPresentationRequest) String() string {
	if len(m.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(m.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(m); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", m)
}

var (
	mdlPresentationRequestPropertiesFieldOrgIso1801351 = big.NewInt(1 << 0)
)

type MdlPresentationRequestProperties struct {
	OrgIso1801351 *MdlPresentationProperties `json:"org.iso.18013.5.1" url:"org.iso.18013.5.1"`

	// 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 (m *MdlPresentationRequestProperties) GetOrgIso1801351() *MdlPresentationProperties {
	if m == nil {
		return nil
	}
	return m.OrgIso1801351
}

func (m *MdlPresentationRequestProperties) GetExtraProperties() map[string]interface{} {
	return m.extraProperties
}

func (m *MdlPresentationRequestProperties) require(field *big.Int) {
	if m.explicitFields == nil {
		m.explicitFields = big.NewInt(0)
	}
	m.explicitFields.Or(m.explicitFields, field)
}

// SetOrgIso1801351 sets the OrgIso1801351 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (m *MdlPresentationRequestProperties) SetOrgIso1801351(orgIso1801351 *MdlPresentationProperties) {
	m.OrgIso1801351 = orgIso1801351
	m.require(mdlPresentationRequestPropertiesFieldOrgIso1801351)
}

func (m *MdlPresentationRequestProperties) UnmarshalJSON(data []byte) error {
	type unmarshaler MdlPresentationRequestProperties
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*m = MdlPresentationRequestProperties(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *m)
	if err != nil {
		return err
	}
	m.extraProperties = extraProperties
	m.rawJSON = json.RawMessage(data)
	return nil
}

func (m *MdlPresentationRequestProperties) MarshalJSON() ([]byte, error) {
	type embed MdlPresentationRequestProperties
	var marshaler = struct {
		embed
	}{
		embed: embed(*m),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, m.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (m *MdlPresentationRequestProperties) String() string {
	if len(m.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(m.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(m); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", m)
}

// The MFA policy
type MfaPolicyEnum string

const (
	MfaPolicyEnumAllApplications MfaPolicyEnum = "all-applications"
	MfaPolicyEnumConfidenceScore MfaPolicyEnum = "confidence-score"
)

func NewMfaPolicyEnumFromString(s string) (MfaPolicyEnum, error) {
	switch s {
	case "all-applications":
		return MfaPolicyEnumAllApplications, nil
	case "confidence-score":
		return MfaPolicyEnumConfidenceScore, nil
	}
	var t MfaPolicyEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (m MfaPolicyEnum) Ptr() *MfaPolicyEnum {
	return &m
}

type OauthScope string

const (
	// Read Actions
	OauthScopeReadActions OauthScope = "read:actions"
	// Create Actions
	OauthScopeCreateActions OauthScope = "create:actions"
	// Delete Actions
	OauthScopeDeleteActions OauthScope = "delete:actions"
	// Update Actions
	OauthScopeUpdateActions OauthScope = "update:actions"
	// Read Anomaly Blocks
	OauthScopeReadAnomalyBlocks OauthScope = "read:anomaly_blocks"
	// Delete Anomaly Blocks
	OauthScopeDeleteAnomalyBlocks OauthScope = "delete:anomaly_blocks"
	// Read Shields
	OauthScopeReadShields OauthScope = "read:shields"
	// Create Shields
	OauthScopeCreateShields OauthScope = "create:shields"
	// Update Shields
	OauthScopeUpdateShields OauthScope = "update:shields"
	// Read Attack Protection
	OauthScopeReadAttackProtection OauthScope = "read:attack_protection"
	// Update Attack Protection
	OauthScopeUpdateAttackProtection OauthScope = "update:attack_protection"
	// Read Branding
	OauthScopeReadBranding OauthScope = "read:branding"
	// Update Branding
	OauthScopeUpdateBranding OauthScope = "update:branding"
	// Read Phone Providers
	OauthScopeReadPhoneProviders OauthScope = "read:phone_providers"
	// Create Phone Providers
	OauthScopeCreatePhoneProviders OauthScope = "create:phone_providers"
	// Update Phone Providers
	OauthScopeUpdatePhoneProviders OauthScope = "update:phone_providers"
	// Delete Phone Providers
	OauthScopeDeletePhoneProviders OauthScope = "delete:phone_providers"
	// Read Phone Templates
	OauthScopeReadPhoneTemplates OauthScope = "read:phone_templates"
	// Create Phone Templates
	OauthScopeCreatePhoneTemplates OauthScope = "create:phone_templates"
	// Update Phone Templates
	OauthScopeUpdatePhoneTemplates OauthScope = "update:phone_templates"
	// Delete Phone Templates
	OauthScopeDeletePhoneTemplates OauthScope = "delete:phone_templates"
	// Delete Branding
	OauthScopeDeleteBranding OauthScope = "delete:branding"
	// Read Client Grants
	OauthScopeReadClientGrants OauthScope = "read:client_grants"
	// Create Client Grants
	OauthScopeCreateClientGrants OauthScope = "create:client_grants"
	// Update Client Grants
	OauthScopeUpdateClientGrants OauthScope = "update:client_grants"
	// Delete Client Grants
	OauthScopeDeleteClientGrants OauthScope = "delete:client_grants"
	// Read Organization Client Grants
	OauthScopeReadOrganizationClientGrants OauthScope = "read:organization_client_grants"
	// Read Clients
	OauthScopeReadClients OauthScope = "read:clients"
	// Read Client Keys
	OauthScopeReadClientKeys OauthScope = "read:client_keys"
	// Read Client Credentials
	OauthScopeReadClientCredentials OauthScope = "read:client_credentials"
	// Read Client Summary
	OauthScopeReadClientSummary OauthScope = "read:client_summary"
	// Create Clients
	OauthScopeCreateClients OauthScope = "create:clients"
	// Create Client Credentials
	OauthScopeCreateClientCredentials OauthScope = "create:client_credentials"
	// Update Client Credentials
	OauthScopeUpdateClientCredentials OauthScope = "update:client_credentials"
	// Delete Client Credentials
	OauthScopeDeleteClientCredentials OauthScope = "delete:client_credentials"
	// Update Clients
	OauthScopeUpdateClients OauthScope = "update:clients"
	// Update Client Keys
	OauthScopeUpdateClientKeys OauthScope = "update:client_keys"
	// Delete Clients
	OauthScopeDeleteClients OauthScope = "delete:clients"
	// Read Connections
	OauthScopeReadConnections OauthScope = "read:connections"
	// Read Connection Profiles
	OauthScopeReadConnectionProfiles OauthScope = "read:connection_profiles"
	// Create Connection Profiles
	OauthScopeCreateConnectionProfiles OauthScope = "create:connection_profiles"
	// Update Connection Profiles
	OauthScopeUpdateConnectionProfiles OauthScope = "update:connection_profiles"
	// Delete Connection Profiles
	OauthScopeDeleteConnectionProfiles OauthScope = "delete:connection_profiles"
	// Create Connections
	OauthScopeCreateConnections OauthScope = "create:connections"
	// Update Connections
	OauthScopeUpdateConnections OauthScope = "update:connections"
	// Delete Connections
	OauthScopeDeleteConnections OauthScope = "delete:connections"
	// Read Directory Provisionings
	OauthScopeReadDirectoryProvisionings OauthScope = "read:directory_provisionings"
	// Create Directory Provisionings
	OauthScopeCreateDirectoryProvisionings OauthScope = "create:directory_provisionings"
	// Update Directory Provisionings
	OauthScopeUpdateDirectoryProvisionings OauthScope = "update:directory_provisionings"
	// Delete Directory Provisionings
	OauthScopeDeleteDirectoryProvisionings OauthScope = "delete:directory_provisionings"
	// Read Users
	OauthScopeReadUsers OauthScope = "read:users"
	// Read Connections Keys
	OauthScopeReadConnectionsKeys OauthScope = "read:connections_keys"
	// Create Connections Keys
	OauthScopeCreateConnectionsKeys OauthScope = "create:connections_keys"
	// Update Connections Keys
	OauthScopeUpdateConnectionsKeys OauthScope = "update:connections_keys"
	// Read Scim Config
	OauthScopeReadSCIMConfig OauthScope = "read:scim_config"
	// Create Scim Config
	OauthScopeCreateSCIMConfig OauthScope = "create:scim_config"
	// Update Scim Config
	OauthScopeUpdateSCIMConfig OauthScope = "update:scim_config"
	// Delete Scim Config
	OauthScopeDeleteSCIMConfig OauthScope = "delete:scim_config"
	// Read Scim Token
	OauthScopeReadSCIMToken OauthScope = "read:scim_token"
	// Create Scim Token
	OauthScopeCreateSCIMToken OauthScope = "create:scim_token"
	// Delete Scim Token
	OauthScopeDeleteSCIMToken OauthScope = "delete:scim_token"
	// Delete Users
	OauthScopeDeleteUsers OauthScope = "delete:users"
	// Read Custom Domains
	OauthScopeReadCustomDomains OauthScope = "read:custom_domains"
	// Create Custom Domains
	OauthScopeCreateCustomDomains OauthScope = "create:custom_domains"
	// Update Custom Domains
	OauthScopeUpdateCustomDomains OauthScope = "update:custom_domains"
	// Delete Custom Domains
	OauthScopeDeleteCustomDomains OauthScope = "delete:custom_domains"
	// Read Device Credentials
	OauthScopeReadDeviceCredentials OauthScope = "read:device_credentials"
	// Create Current User Device Credentials
	OauthScopeCreateCurrentUserDeviceCredentials OauthScope = "create:current_user_device_credentials"
	// Delete Device Credentials
	OauthScopeDeleteDeviceCredentials OauthScope = "delete:device_credentials"
	// Delete Current User Device Credentials
	OauthScopeDeleteCurrentUserDeviceCredentials OauthScope = "delete:current_user_device_credentials"
	// Update Device Codes
	OauthScopeUpdateDeviceCodes OauthScope = "update:device_codes"
	// Read Device Codes
	OauthScopeReadDeviceCodes OauthScope = "read:device_codes"
	// Create Test Email Dispatch
	OauthScopeCreateTestEmailDispatch OauthScope = "create:test_email_dispatch"
	// Create Email Templates
	OauthScopeCreateEmailTemplates OauthScope = "create:email_templates"
	// Read Email Templates
	OauthScopeReadEmailTemplates OauthScope = "read:email_templates"
	// Update Email Templates
	OauthScopeUpdateEmailTemplates OauthScope = "update:email_templates"
	// Read Email Provider
	OauthScopeReadEmailProvider OauthScope = "read:email_provider"
	// Create Email Provider
	OauthScopeCreateEmailProvider OauthScope = "create:email_provider"
	// Update Email Provider
	OauthScopeUpdateEmailProvider OauthScope = "update:email_provider"
	// Delete Email Provider
	OauthScopeDeleteEmailProvider OauthScope = "delete:email_provider"
	// Read Entitlements
	OauthScopeReadEntitlements OauthScope = "read:entitlements"
	// Read Event Streams
	OauthScopeReadEventStreams OauthScope = "read:event_streams"
	// Create Event Streams
	OauthScopeCreateEventStreams OauthScope = "create:event_streams"
	// Update Event Streams
	OauthScopeUpdateEventStreams OauthScope = "update:event_streams"
	// Delete Event Streams
	OauthScopeDeleteEventStreams OauthScope = "delete:event_streams"
	// Read Event Deliveries
	OauthScopeReadEventDeliveries OauthScope = "read:event_deliveries"
	// Update Event Deliveries
	OauthScopeUpdateEventDeliveries OauthScope = "update:event_deliveries"
	// Read Extensions
	OauthScopeReadExtensions OauthScope = "read:extensions"
	// Read Flows
	OauthScopeReadFlows OauthScope = "read:flows"
	// Create Flows
	OauthScopeCreateFlows OauthScope = "create:flows"
	// Read Flows Vault Connections
	OauthScopeReadFlowsVaultConnections OauthScope = "read:flows_vault_connections"
	// Create Flows Vault Connections
	OauthScopeCreateFlowsVaultConnections OauthScope = "create:flows_vault_connections"
	// Update Flows Vault Connections
	OauthScopeUpdateFlowsVaultConnections OauthScope = "update:flows_vault_connections"
	// Delete Flows Vault Connections
	OauthScopeDeleteFlowsVaultConnections OauthScope = "delete:flows_vault_connections"
	// Read Flows Executions
	OauthScopeReadFlowsExecutions OauthScope = "read:flows_executions"
	// Delete Flows Executions
	OauthScopeDeleteFlowsExecutions OauthScope = "delete:flows_executions"
	// Update Flows
	OauthScopeUpdateFlows OauthScope = "update:flows"
	// Delete Flows
	OauthScopeDeleteFlows OauthScope = "delete:flows"
	// Read Forms
	OauthScopeReadForms OauthScope = "read:forms"
	// Create Forms
	OauthScopeCreateForms OauthScope = "create:forms"
	// Update Forms
	OauthScopeUpdateForms OauthScope = "update:forms"
	// Delete Forms
	OauthScopeDeleteForms OauthScope = "delete:forms"
	// Read Grants
	OauthScopeReadGrants OauthScope = "read:grants"
	// Delete Grants
	OauthScopeDeleteGrants OauthScope = "delete:grants"
	// Read Groups
	OauthScopeReadGroups OauthScope = "read:groups"
	// Read Group Members
	OauthScopeReadGroupMembers OauthScope = "read:group_members"
	// Create Guardian Enrollment Tickets
	OauthScopeCreateGuardianEnrollmentTickets OauthScope = "create:guardian_enrollment_tickets"
	// Read Guardian Enrollments
	OauthScopeReadGuardianEnrollments OauthScope = "read:guardian_enrollments"
	// Delete Guardian Enrollments
	OauthScopeDeleteGuardianEnrollments OauthScope = "delete:guardian_enrollments"
	// Read Guardian Factors
	OauthScopeReadGuardianFactors OauthScope = "read:guardian_factors"
	// Update Guardian Factors
	OauthScopeUpdateGuardianFactors OauthScope = "update:guardian_factors"
	// Read Mfa Policies
	OauthScopeReadMfaPolicies OauthScope = "read:mfa_policies"
	// Update Mfa Policies
	OauthScopeUpdateMfaPolicies OauthScope = "update:mfa_policies"
	// Read Hooks
	OauthScopeReadHooks OauthScope = "read:hooks"
	// Create Hooks
	OauthScopeCreateHooks OauthScope = "create:hooks"
	// Update Hooks
	OauthScopeUpdateHooks OauthScope = "update:hooks"
	// Delete Hooks
	OauthScopeDeleteHooks OauthScope = "delete:hooks"
	// Read Insights
	OauthScopeReadInsights OauthScope = "read:insights"
	// Read Stats
	OauthScopeReadStats OauthScope = "read:stats"
	// Read Integrations
	OauthScopeReadIntegrations OauthScope = "read:integrations"
	// Create Integrations
	OauthScopeCreateIntegrations OauthScope = "create:integrations"
	// Update Integrations
	OauthScopeUpdateIntegrations OauthScope = "update:integrations"
	// Delete Integrations
	OauthScopeDeleteIntegrations OauthScope = "delete:integrations"
	// Create Users
	OauthScopeCreateUsers OauthScope = "create:users"
	// Update Users
	OauthScopeUpdateUsers OauthScope = "update:users"
	// Read Custom Signing Keys
	OauthScopeReadCustomSigningKeys OauthScope = "read:custom_signing_keys"
	// Create Custom Signing Keys
	OauthScopeCreateCustomSigningKeys OauthScope = "create:custom_signing_keys"
	// Update Custom Signing Keys
	OauthScopeUpdateCustomSigningKeys OauthScope = "update:custom_signing_keys"
	// Delete Custom Signing Keys
	OauthScopeDeleteCustomSigningKeys OauthScope = "delete:custom_signing_keys"
	// Read Encryption Keys
	OauthScopeReadEncryptionKeys OauthScope = "read:encryption_keys"
	// Create Encryption Keys
	OauthScopeCreateEncryptionKeys OauthScope = "create:encryption_keys"
	// Update Encryption Keys
	OauthScopeUpdateEncryptionKeys OauthScope = "update:encryption_keys"
	// Delete Encryption Keys
	OauthScopeDeleteEncryptionKeys OauthScope = "delete:encryption_keys"
	// Read Signing Keys
	OauthScopeReadSigningKeys OauthScope = "read:signing_keys"
	// Create Signing Keys
	OauthScopeCreateSigningKeys OauthScope = "create:signing_keys"
	// Update Signing Keys
	OauthScopeUpdateSigningKeys OauthScope = "update:signing_keys"
	// Read Log Streams
	OauthScopeReadLogStreams OauthScope = "read:log_streams"
	// Create Log Streams
	OauthScopeCreateLogStreams OauthScope = "create:log_streams"
	// Update Log Streams
	OauthScopeUpdateLogStreams OauthScope = "update:log_streams"
	// Delete Log Streams
	OauthScopeDeleteLogStreams OauthScope = "delete:log_streams"
	// Read Logs
	OauthScopeReadLogs OauthScope = "read:logs"
	// Read Logs Users
	OauthScopeReadLogsUsers OauthScope = "read:logs_users"
	// Read Tenant Settings
	OauthScopeReadTenantSettings OauthScope = "read:tenant_settings"
	// Update Tenant Settings
	OauthScopeUpdateTenantSettings OauthScope = "update:tenant_settings"
	// Read Network Acls
	OauthScopeReadNetworkACLs OauthScope = "read:network_acls"
	// Create Network Acls
	OauthScopeCreateNetworkACLs OauthScope = "create:network_acls"
	// Update Network Acls
	OauthScopeUpdateNetworkACLs OauthScope = "update:network_acls"
	// Delete Network Acls
	OauthScopeDeleteNetworkACLs OauthScope = "delete:network_acls"
	// Read Organizations
	OauthScopeReadOrganizations OauthScope = "read:organizations"
	// Read Organizations Summary
	OauthScopeReadOrganizationsSummary OauthScope = "read:organizations_summary"
	// Create Organizations
	OauthScopeCreateOrganizations OauthScope = "create:organizations"
	// Create Organization Connections
	OauthScopeCreateOrganizationConnections OauthScope = "create:organization_connections"
	// Update Organizations
	OauthScopeUpdateOrganizations OauthScope = "update:organizations"
	// Delete Organizations
	OauthScopeDeleteOrganizations OauthScope = "delete:organizations"
	// Create Organization Client Grants
	OauthScopeCreateOrganizationClientGrants OauthScope = "create:organization_client_grants"
	// Delete Organization Client Grants
	OauthScopeDeleteOrganizationClientGrants OauthScope = "delete:organization_client_grants"
	// Read Organization Connections
	OauthScopeReadOrganizationConnections OauthScope = "read:organization_connections"
	// Update Organization Connections
	OauthScopeUpdateOrganizationConnections OauthScope = "update:organization_connections"
	// Delete Organization Connections
	OauthScopeDeleteOrganizationConnections OauthScope = "delete:organization_connections"
	// Read Organization Discovery Domains
	OauthScopeReadOrganizationDiscoveryDomains OauthScope = "read:organization_discovery_domains"
	// Create Organization Discovery Domains
	OauthScopeCreateOrganizationDiscoveryDomains OauthScope = "create:organization_discovery_domains"
	// Update Organization Discovery Domains
	OauthScopeUpdateOrganizationDiscoveryDomains OauthScope = "update:organization_discovery_domains"
	// Delete Organization Discovery Domains
	OauthScopeDeleteOrganizationDiscoveryDomains OauthScope = "delete:organization_discovery_domains"
	// Read Organization Invitations
	OauthScopeReadOrganizationInvitations OauthScope = "read:organization_invitations"
	// Create Organization Invitations
	OauthScopeCreateOrganizationInvitations OauthScope = "create:organization_invitations"
	// Delete Organization Invitations
	OauthScopeDeleteOrganizationInvitations OauthScope = "delete:organization_invitations"
	// Read Organization Members
	OauthScopeReadOrganizationMembers OauthScope = "read:organization_members"
	// Create Organization Members
	OauthScopeCreateOrganizationMembers OauthScope = "create:organization_members"
	// Delete Organization Members
	OauthScopeDeleteOrganizationMembers OauthScope = "delete:organization_members"
	// Read Organization Member Roles
	OauthScopeReadOrganizationMemberRoles OauthScope = "read:organization_member_roles"
	// Create Organization Member Roles
	OauthScopeCreateOrganizationMemberRoles OauthScope = "create:organization_member_roles"
	// Delete Organization Member Roles
	OauthScopeDeleteOrganizationMemberRoles OauthScope = "delete:organization_member_roles"
	// Read Prompts
	OauthScopeReadPrompts OauthScope = "read:prompts"
	// Update Prompts
	OauthScopeUpdatePrompts OauthScope = "update:prompts"
	// Read Resource Servers
	OauthScopeReadResourceServers OauthScope = "read:resource_servers"
	// Update Resource Servers
	OauthScopeUpdateResourceServers OauthScope = "update:resource_servers"
	// Read Refresh Tokens
	OauthScopeReadRefreshTokens OauthScope = "read:refresh_tokens"
	// Delete Refresh Tokens
	OauthScopeDeleteRefreshTokens OauthScope = "delete:refresh_tokens"
	// Create Resource Servers
	OauthScopeCreateResourceServers OauthScope = "create:resource_servers"
	// Delete Resource Servers
	OauthScopeDeleteResourceServers OauthScope = "delete:resource_servers"
	// Read Roles
	OauthScopeReadRoles OauthScope = "read:roles"
	// Create Roles
	OauthScopeCreateRoles OauthScope = "create:roles"
	// Update Roles
	OauthScopeUpdateRoles OauthScope = "update:roles"
	// Delete Roles
	OauthScopeDeleteRoles OauthScope = "delete:roles"
	// Read Role Members
	OauthScopeReadRoleMembers OauthScope = "read:role_members"
	// Create Role Members
	OauthScopeCreateRoleMembers OauthScope = "create:role_members"
	// Read Rules
	OauthScopeReadRules OauthScope = "read:rules"
	// Create Rules
	OauthScopeCreateRules OauthScope = "create:rules"
	// Update Rules
	OauthScopeUpdateRules OauthScope = "update:rules"
	// Read Rules Configs
	OauthScopeReadRulesConfigs OauthScope = "read:rules_configs"
	// Update Rules Configs
	OauthScopeUpdateRulesConfigs OauthScope = "update:rules_configs"
	// Delete Rules Configs
	OauthScopeDeleteRulesConfigs OauthScope = "delete:rules_configs"
	// Delete Rules
	OauthScopeDeleteRules OauthScope = "delete:rules"
	// Read Security Metrics
	OauthScopeReadSecurityMetrics OauthScope = "read:security_metrics"
	// Read Self Service Profiles
	OauthScopeReadSelfServiceProfiles OauthScope = "read:self_service_profiles"
	// Create Self Service Profiles
	OauthScopeCreateSelfServiceProfiles OauthScope = "create:self_service_profiles"
	// Update Self Service Profiles
	OauthScopeUpdateSelfServiceProfiles OauthScope = "update:self_service_profiles"
	// Delete Self Service Profiles
	OauthScopeDeleteSelfServiceProfiles OauthScope = "delete:self_service_profiles"
	// Read Self Service Profile Custom Texts
	OauthScopeReadSelfServiceProfileCustomTexts OauthScope = "read:self_service_profile_custom_texts"
	// Update Self Service Profile Custom Texts
	OauthScopeUpdateSelfServiceProfileCustomTexts OauthScope = "update:self_service_profile_custom_texts"
	// Create Sso Access Tickets
	OauthScopeCreateSSOAccessTickets OauthScope = "create:sso_access_tickets"
	// Delete Sso Access Tickets
	OauthScopeDeleteSSOAccessTickets OauthScope = "delete:sso_access_tickets"
	// Read Sessions
	OauthScopeReadSessions OauthScope = "read:sessions"
	// Update Sessions
	OauthScopeUpdateSessions OauthScope = "update:sessions"
	// Delete Sessions
	OauthScopeDeleteSessions OauthScope = "delete:sessions"
	// Delete Tenants
	OauthScopeDeleteTenants OauthScope = "delete:tenants"
	// Run Checks
	OauthScopeRunChecks OauthScope = "run:checks"
	// Read Checks
	OauthScopeReadChecks OauthScope = "read:checks"
	// Read Tenant Feature Flags
	OauthScopeReadTenantFeatureFlags OauthScope = "read:tenant_feature_flags"
	// Read Tenant Invitations
	OauthScopeReadTenantInvitations OauthScope = "read:tenant_invitations"
	// Create Tenant Invitations
	OauthScopeCreateTenantInvitations OauthScope = "create:tenant_invitations"
	// Update Tenant Invitations
	OauthScopeUpdateTenantInvitations OauthScope = "update:tenant_invitations"
	// Delete Tenant Invitations
	OauthScopeDeleteTenantInvitations OauthScope = "delete:tenant_invitations"
	// Read Tenant Members
	OauthScopeReadTenantMembers OauthScope = "read:tenant_members"
	// Update Tenant Members
	OauthScopeUpdateTenantMembers OauthScope = "update:tenant_members"
	// Delete Tenant Members
	OauthScopeDeleteTenantMembers OauthScope = "delete:tenant_members"
	// Read Owners
	OauthScopeReadOwners OauthScope = "read:owners"
	// Delete Owners
	OauthScopeDeleteOwners OauthScope = "delete:owners"
	// Create User Tickets
	OauthScopeCreateUserTickets OauthScope = "create:user_tickets"
	// Read Token Exchange Profiles
	OauthScopeReadTokenExchangeProfiles OauthScope = "read:token_exchange_profiles"
	// Create Token Exchange Profiles
	OauthScopeCreateTokenExchangeProfiles OauthScope = "create:token_exchange_profiles"
	// Update Token Exchange Profiles
	OauthScopeUpdateTokenExchangeProfiles OauthScope = "update:token_exchange_profiles"
	// Delete Token Exchange Profiles
	OauthScopeDeleteTokenExchangeProfiles OauthScope = "delete:token_exchange_profiles"
	// Read Entity Counts
	OauthScopeReadEntityCounts OauthScope = "read:entity_counts"
	// Read User Attribute Profiles
	OauthScopeReadUserAttributeProfiles OauthScope = "read:user_attribute_profiles"
	// Create User Attribute Profiles
	OauthScopeCreateUserAttributeProfiles OauthScope = "create:user_attribute_profiles"
	// Update User Attribute Profiles
	OauthScopeUpdateUserAttributeProfiles OauthScope = "update:user_attribute_profiles"
	// Delete User Attribute Profiles
	OauthScopeDeleteUserAttributeProfiles OauthScope = "delete:user_attribute_profiles"
	// Read User Idp Tokens
	OauthScopeReadUserIdpTokens OauthScope = "read:user_idp_tokens"
	// Read Current User
	OauthScopeReadCurrentUser OauthScope = "read:current_user"
	// Update Users App Metadata
	OauthScopeUpdateUsersAppMetadata OauthScope = "update:users_app_metadata"
	// Update Current User Metadata
	OauthScopeUpdateCurrentUserMetadata OauthScope = "update:current_user_metadata"
	// Delete Current User
	OauthScopeDeleteCurrentUser OauthScope = "delete:current_user"
	// Read User Application Passwords
	OauthScopeReadUserApplicationPasswords OauthScope = "read:user_application_passwords"
	// Create User Application Passwords
	OauthScopeCreateUserApplicationPasswords OauthScope = "create:user_application_passwords"
	// Delete User Application Passwords
	OauthScopeDeleteUserApplicationPasswords OauthScope = "delete:user_application_passwords"
	// Read Authentication Methods
	OauthScopeReadAuthenticationMethods OauthScope = "read:authentication_methods"
	// Update Authentication Methods
	OauthScopeUpdateAuthenticationMethods OauthScope = "update:authentication_methods"
	// Create Authentication Methods
	OauthScopeCreateAuthenticationMethods OauthScope = "create:authentication_methods"
	// Delete Authentication Methods
	OauthScopeDeleteAuthenticationMethods OauthScope = "delete:authentication_methods"
	// Read Federated Connections Tokens
	OauthScopeReadFederatedConnectionsTokens OauthScope = "read:federated_connections_tokens"
	// Delete Federated Connections Tokens
	OauthScopeDeleteFederatedConnectionsTokens OauthScope = "delete:federated_connections_tokens"
	// Update Current User Identities
	OauthScopeUpdateCurrentUserIdentities OauthScope = "update:current_user_identities"
	// Delete Role Members
	OauthScopeDeleteRoleMembers OauthScope = "delete:role_members"
	// Read Vdcs Templates
	OauthScopeReadVdcsTemplates OauthScope = "read:vdcs_templates"
	// Create Vdcs Templates
	OauthScopeCreateVdcsTemplates OauthScope = "create:vdcs_templates"
	// Update Vdcs Templates
	OauthScopeUpdateVdcsTemplates OauthScope = "update:vdcs_templates"
	// Delete Vdcs Templates
	OauthScopeDeleteVdcsTemplates OauthScope = "delete:vdcs_templates"
)

func NewOauthScopeFromString(s string) (OauthScope, error) {
	switch s {
	case "read:actions":
		return OauthScopeReadActions, nil
	case "create:actions":
		return OauthScopeCreateActions, nil
	case "delete:actions":
		return OauthScopeDeleteActions, nil
	case "update:actions":
		return OauthScopeUpdateActions, nil
	case "read:anomaly_blocks":
		return OauthScopeReadAnomalyBlocks, nil
	case "delete:anomaly_blocks":
		return OauthScopeDeleteAnomalyBlocks, nil
	case "read:shields":
		return OauthScopeReadShields, nil
	case "create:shields":
		return OauthScopeCreateShields, nil
	case "update:shields":
		return OauthScopeUpdateShields, nil
	case "read:attack_protection":
		return OauthScopeReadAttackProtection, nil
	case "update:attack_protection":
		return OauthScopeUpdateAttackProtection, nil
	case "read:branding":
		return OauthScopeReadBranding, nil
	case "update:branding":
		return OauthScopeUpdateBranding, nil
	case "read:phone_providers":
		return OauthScopeReadPhoneProviders, nil
	case "create:phone_providers":
		return OauthScopeCreatePhoneProviders, nil
	case "update:phone_providers":
		return OauthScopeUpdatePhoneProviders, nil
	case "delete:phone_providers":
		return OauthScopeDeletePhoneProviders, nil
	case "read:phone_templates":
		return OauthScopeReadPhoneTemplates, nil
	case "create:phone_templates":
		return OauthScopeCreatePhoneTemplates, nil
	case "update:phone_templates":
		return OauthScopeUpdatePhoneTemplates, nil
	case "delete:phone_templates":
		return OauthScopeDeletePhoneTemplates, nil
	case "delete:branding":
		return OauthScopeDeleteBranding, nil
	case "read:client_grants":
		return OauthScopeReadClientGrants, nil
	case "create:client_grants":
		return OauthScopeCreateClientGrants, nil
	case "update:client_grants":
		return OauthScopeUpdateClientGrants, nil
	case "delete:client_grants":
		return OauthScopeDeleteClientGrants, nil
	case "read:organization_client_grants":
		return OauthScopeReadOrganizationClientGrants, nil
	case "read:clients":
		return OauthScopeReadClients, nil
	case "read:client_keys":
		return OauthScopeReadClientKeys, nil
	case "read:client_credentials":
		return OauthScopeReadClientCredentials, nil
	case "read:client_summary":
		return OauthScopeReadClientSummary, nil
	case "create:clients":
		return OauthScopeCreateClients, nil
	case "create:client_credentials":
		return OauthScopeCreateClientCredentials, nil
	case "update:client_credentials":
		return OauthScopeUpdateClientCredentials, nil
	case "delete:client_credentials":
		return OauthScopeDeleteClientCredentials, nil
	case "update:clients":
		return OauthScopeUpdateClients, nil
	case "update:client_keys":
		return OauthScopeUpdateClientKeys, nil
	case "delete:clients":
		return OauthScopeDeleteClients, nil
	case "read:connections":
		return OauthScopeReadConnections, nil
	case "read:connection_profiles":
		return OauthScopeReadConnectionProfiles, nil
	case "create:connection_profiles":
		return OauthScopeCreateConnectionProfiles, nil
	case "update:connection_profiles":
		return OauthScopeUpdateConnectionProfiles, nil
	case "delete:connection_profiles":
		return OauthScopeDeleteConnectionProfiles, nil
	case "create:connections":
		return OauthScopeCreateConnections, nil
	case "update:connections":
		return OauthScopeUpdateConnections, nil
	case "delete:connections":
		return OauthScopeDeleteConnections, nil
	case "read:directory_provisionings":
		return OauthScopeReadDirectoryProvisionings, nil
	case "create:directory_provisionings":
		return OauthScopeCreateDirectoryProvisionings, nil
	case "update:directory_provisionings":
		return OauthScopeUpdateDirectoryProvisionings, nil
	case "delete:directory_provisionings":
		return OauthScopeDeleteDirectoryProvisionings, nil
	case "read:users":
		return OauthScopeReadUsers, nil
	case "read:connections_keys":
		return OauthScopeReadConnectionsKeys, nil
	case "create:connections_keys":
		return OauthScopeCreateConnectionsKeys, nil
	case "update:connections_keys":
		return OauthScopeUpdateConnectionsKeys, nil
	case "read:scim_config":
		return OauthScopeReadSCIMConfig, nil
	case "create:scim_config":
		return OauthScopeCreateSCIMConfig, nil
	case "update:scim_config":
		return OauthScopeUpdateSCIMConfig, nil
	case "delete:scim_config":
		return OauthScopeDeleteSCIMConfig, nil
	case "read:scim_token":
		return OauthScopeReadSCIMToken, nil
	case "create:scim_token":
		return OauthScopeCreateSCIMToken, nil
	case "delete:scim_token":
		return OauthScopeDeleteSCIMToken, nil
	case "delete:users":
		return OauthScopeDeleteUsers, nil
	case "read:custom_domains":
		return OauthScopeReadCustomDomains, nil
	case "create:custom_domains":
		return OauthScopeCreateCustomDomains, nil
	case "update:custom_domains":
		return OauthScopeUpdateCustomDomains, nil
	case "delete:custom_domains":
		return OauthScopeDeleteCustomDomains, nil
	case "read:device_credentials":
		return OauthScopeReadDeviceCredentials, nil
	case "create:current_user_device_credentials":
		return OauthScopeCreateCurrentUserDeviceCredentials, nil
	case "delete:device_credentials":
		return OauthScopeDeleteDeviceCredentials, nil
	case "delete:current_user_device_credentials":
		return OauthScopeDeleteCurrentUserDeviceCredentials, nil
	case "update:device_codes":
		return OauthScopeUpdateDeviceCodes, nil
	case "read:device_codes":
		return OauthScopeReadDeviceCodes, nil
	case "create:test_email_dispatch":
		return OauthScopeCreateTestEmailDispatch, nil
	case "create:email_templates":
		return OauthScopeCreateEmailTemplates, nil
	case "read:email_templates":
		return OauthScopeReadEmailTemplates, nil
	case "update:email_templates":
		return OauthScopeUpdateEmailTemplates, nil
	case "read:email_provider":
		return OauthScopeReadEmailProvider, nil
	case "create:email_provider":
		return OauthScopeCreateEmailProvider, nil
	case "update:email_provider":
		return OauthScopeUpdateEmailProvider, nil
	case "delete:email_provider":
		return OauthScopeDeleteEmailProvider, nil
	case "read:entitlements":
		return OauthScopeReadEntitlements, nil
	case "read:event_streams":
		return OauthScopeReadEventStreams, nil
	case "create:event_streams":
		return OauthScopeCreateEventStreams, nil
	case "update:event_streams":
		return OauthScopeUpdateEventStreams, nil
	case "delete:event_streams":
		return OauthScopeDeleteEventStreams, nil
	case "read:event_deliveries":
		return OauthScopeReadEventDeliveries, nil
	case "update:event_deliveries":
		return OauthScopeUpdateEventDeliveries, nil
	case "read:extensions":
		return OauthScopeReadExtensions, nil
	case "read:flows":
		return OauthScopeReadFlows, nil
	case "create:flows":
		return OauthScopeCreateFlows, nil
	case "read:flows_vault_connections":
		return OauthScopeReadFlowsVaultConnections, nil
	case "create:flows_vault_connections":
		return OauthScopeCreateFlowsVaultConnections, nil
	case "update:flows_vault_connections":
		return OauthScopeUpdateFlowsVaultConnections, nil
	case "delete:flows_vault_connections":
		return OauthScopeDeleteFlowsVaultConnections, nil
	case "read:flows_executions":
		return OauthScopeReadFlowsExecutions, nil
	case "delete:flows_executions":
		return OauthScopeDeleteFlowsExecutions, nil
	case "update:flows":
		return OauthScopeUpdateFlows, nil
	case "delete:flows":
		return OauthScopeDeleteFlows, nil
	case "read:forms":
		return OauthScopeReadForms, nil
	case "create:forms":
		return OauthScopeCreateForms, nil
	case "update:forms":
		return OauthScopeUpdateForms, nil
	case "delete:forms":
		return OauthScopeDeleteForms, nil
	case "read:grants":
		return OauthScopeReadGrants, nil
	case "delete:grants":
		return OauthScopeDeleteGrants, nil
	case "read:groups":
		return OauthScopeReadGroups, nil
	case "read:group_members":
		return OauthScopeReadGroupMembers, nil
	case "create:guardian_enrollment_tickets":
		return OauthScopeCreateGuardianEnrollmentTickets, nil
	case "read:guardian_enrollments":
		return OauthScopeReadGuardianEnrollments, nil
	case "delete:guardian_enrollments":
		return OauthScopeDeleteGuardianEnrollments, nil
	case "read:guardian_factors":
		return OauthScopeReadGuardianFactors, nil
	case "update:guardian_factors":
		return OauthScopeUpdateGuardianFactors, nil
	case "read:mfa_policies":
		return OauthScopeReadMfaPolicies, nil
	case "update:mfa_policies":
		return OauthScopeUpdateMfaPolicies, nil
	case "read:hooks":
		return OauthScopeReadHooks, nil
	case "create:hooks":
		return OauthScopeCreateHooks, nil
	case "update:hooks":
		return OauthScopeUpdateHooks, nil
	case "delete:hooks":
		return OauthScopeDeleteHooks, nil
	case "read:insights":
		return OauthScopeReadInsights, nil
	case "read:stats":
		return OauthScopeReadStats, nil
	case "read:integrations":
		return OauthScopeReadIntegrations, nil
	case "create:integrations":
		return OauthScopeCreateIntegrations, nil
	case "update:integrations":
		return OauthScopeUpdateIntegrations, nil
	case "delete:integrations":
		return OauthScopeDeleteIntegrations, nil
	case "create:users":
		return OauthScopeCreateUsers, nil
	case "update:users":
		return OauthScopeUpdateUsers, nil
	case "read:custom_signing_keys":
		return OauthScopeReadCustomSigningKeys, nil
	case "create:custom_signing_keys":
		return OauthScopeCreateCustomSigningKeys, nil
	case "update:custom_signing_keys":
		return OauthScopeUpdateCustomSigningKeys, nil
	case "delete:custom_signing_keys":
		return OauthScopeDeleteCustomSigningKeys, nil
	case "read:encryption_keys":
		return OauthScopeReadEncryptionKeys, nil
	case "create:encryption_keys":
		return OauthScopeCreateEncryptionKeys, nil
	case "update:encryption_keys":
		return OauthScopeUpdateEncryptionKeys, nil
	case "delete:encryption_keys":
		return OauthScopeDeleteEncryptionKeys, nil
	case "read:signing_keys":
		return OauthScopeReadSigningKeys, nil
	case "create:signing_keys":
		return OauthScopeCreateSigningKeys, nil
	case "update:signing_keys":
		return OauthScopeUpdateSigningKeys, nil
	case "read:log_streams":
		return OauthScopeReadLogStreams, nil
	case "create:log_streams":
		return OauthScopeCreateLogStreams, nil
	case "update:log_streams":
		return OauthScopeUpdateLogStreams, nil
	case "delete:log_streams":
		return OauthScopeDeleteLogStreams, nil
	case "read:logs":
		return OauthScopeReadLogs, nil
	case "read:logs_users":
		return OauthScopeReadLogsUsers, nil
	case "read:tenant_settings":
		return OauthScopeReadTenantSettings, nil
	case "update:tenant_settings":
		return OauthScopeUpdateTenantSettings, nil
	case "read:network_acls":
		return OauthScopeReadNetworkACLs, nil
	case "create:network_acls":
		return OauthScopeCreateNetworkACLs, nil
	case "update:network_acls":
		return OauthScopeUpdateNetworkACLs, nil
	case "delete:network_acls":
		return OauthScopeDeleteNetworkACLs, nil
	case "read:organizations":
		return OauthScopeReadOrganizations, nil
	case "read:organizations_summary":
		return OauthScopeReadOrganizationsSummary, nil
	case "create:organizations":
		return OauthScopeCreateOrganizations, nil
	case "create:organization_connections":
		return OauthScopeCreateOrganizationConnections, nil
	case "update:organizations":
		return OauthScopeUpdateOrganizations, nil
	case "delete:organizations":
		return OauthScopeDeleteOrganizations, nil
	case "create:organization_client_grants":
		return OauthScopeCreateOrganizationClientGrants, nil
	case "delete:organization_client_grants":
		return OauthScopeDeleteOrganizationClientGrants, nil
	case "read:organization_connections":
		return OauthScopeReadOrganizationConnections, nil
	case "update:organization_connections":
		return OauthScopeUpdateOrganizationConnections, nil
	case "delete:organization_connections":
		return OauthScopeDeleteOrganizationConnections, nil
	case "read:organization_discovery_domains":
		return OauthScopeReadOrganizationDiscoveryDomains, nil
	case "create:organization_discovery_domains":
		return OauthScopeCreateOrganizationDiscoveryDomains, nil
	case "update:organization_discovery_domains":
		return OauthScopeUpdateOrganizationDiscoveryDomains, nil
	case "delete:organization_discovery_domains":
		return OauthScopeDeleteOrganizationDiscoveryDomains, nil
	case "read:organization_invitations":
		return OauthScopeReadOrganizationInvitations, nil
	case "create:organization_invitations":
		return OauthScopeCreateOrganizationInvitations, nil
	case "delete:organization_invitations":
		return OauthScopeDeleteOrganizationInvitations, nil
	case "read:organization_members":
		return OauthScopeReadOrganizationMembers, nil
	case "create:organization_members":
		return OauthScopeCreateOrganizationMembers, nil
	case "delete:organization_members":
		return OauthScopeDeleteOrganizationMembers, nil
	case "read:organization_member_roles":
		return OauthScopeReadOrganizationMemberRoles, nil
	case "create:organization_member_roles":
		return OauthScopeCreateOrganizationMemberRoles, nil
	case "delete:organization_member_roles":
		return OauthScopeDeleteOrganizationMemberRoles, nil
	case "read:prompts":
		return OauthScopeReadPrompts, nil
	case "update:prompts":
		return OauthScopeUpdatePrompts, nil
	case "read:resource_servers":
		return OauthScopeReadResourceServers, nil
	case "update:resource_servers":
		return OauthScopeUpdateResourceServers, nil
	case "read:refresh_tokens":
		return OauthScopeReadRefreshTokens, nil
	case "delete:refresh_tokens":
		return OauthScopeDeleteRefreshTokens, nil
	case "create:resource_servers":
		return OauthScopeCreateResourceServers, nil
	case "delete:resource_servers":
		return OauthScopeDeleteResourceServers, nil
	case "read:roles":
		return OauthScopeReadRoles, nil
	case "create:roles":
		return OauthScopeCreateRoles, nil
	case "update:roles":
		return OauthScopeUpdateRoles, nil
	case "delete:roles":
		return OauthScopeDeleteRoles, nil
	case "read:role_members":
		return OauthScopeReadRoleMembers, nil
	case "create:role_members":
		return OauthScopeCreateRoleMembers, nil
	case "read:rules":
		return OauthScopeReadRules, nil
	case "create:rules":
		return OauthScopeCreateRules, nil
	case "update:rules":
		return OauthScopeUpdateRules, nil
	case "read:rules_configs":
		return OauthScopeReadRulesConfigs, nil
	case "update:rules_configs":
		return OauthScopeUpdateRulesConfigs, nil
	case "delete:rules_configs":
		return OauthScopeDeleteRulesConfigs, nil
	case "delete:rules":
		return OauthScopeDeleteRules, nil
	case "read:security_metrics":
		return OauthScopeReadSecurityMetrics, nil
	case "read:self_service_profiles":
		return OauthScopeReadSelfServiceProfiles, nil
	case "create:self_service_profiles":
		return OauthScopeCreateSelfServiceProfiles, nil
	case "update:self_service_profiles":
		return OauthScopeUpdateSelfServiceProfiles, nil
	case "delete:self_service_profiles":
		return OauthScopeDeleteSelfServiceProfiles, nil
	case "read:self_service_profile_custom_texts":
		return OauthScopeReadSelfServiceProfileCustomTexts, nil
	case "update:self_service_profile_custom_texts":
		return OauthScopeUpdateSelfServiceProfileCustomTexts, nil
	case "create:sso_access_tickets":
		return OauthScopeCreateSSOAccessTickets, nil
	case "delete:sso_access_tickets":
		return OauthScopeDeleteSSOAccessTickets, nil
	case "read:sessions":
		return OauthScopeReadSessions, nil
	case "update:sessions":
		return OauthScopeUpdateSessions, nil
	case "delete:sessions":
		return OauthScopeDeleteSessions, nil
	case "delete:tenants":
		return OauthScopeDeleteTenants, nil
	case "run:checks":
		return OauthScopeRunChecks, nil
	case "read:checks":
		return OauthScopeReadChecks, nil
	case "read:tenant_feature_flags":
		return OauthScopeReadTenantFeatureFlags, nil
	case "read:tenant_invitations":
		return OauthScopeReadTenantInvitations, nil
	case "create:tenant_invitations":
		return OauthScopeCreateTenantInvitations, nil
	case "update:tenant_invitations":
		return OauthScopeUpdateTenantInvitations, nil
	case "delete:tenant_invitations":
		return OauthScopeDeleteTenantInvitations, nil
	case "read:tenant_members":
		return OauthScopeReadTenantMembers, nil
	case "update:tenant_members":
		return OauthScopeUpdateTenantMembers, nil
	case "delete:tenant_members":
		return OauthScopeDeleteTenantMembers, nil
	case "read:owners":
		return OauthScopeReadOwners, nil
	case "delete:owners":
		return OauthScopeDeleteOwners, nil
	case "create:user_tickets":
		return OauthScopeCreateUserTickets, nil
	case "read:token_exchange_profiles":
		return OauthScopeReadTokenExchangeProfiles, nil
	case "create:token_exchange_profiles":
		return OauthScopeCreateTokenExchangeProfiles, nil
	case "update:token_exchange_profiles":
		return OauthScopeUpdateTokenExchangeProfiles, nil
	case "delete:token_exchange_profiles":
		return OauthScopeDeleteTokenExchangeProfiles, nil
	case "read:entity_counts":
		return OauthScopeReadEntityCounts, nil
	case "read:user_attribute_profiles":
		return OauthScopeReadUserAttributeProfiles, nil
	case "create:user_attribute_profiles":
		return OauthScopeCreateUserAttributeProfiles, nil
	case "update:user_attribute_profiles":
		return OauthScopeUpdateUserAttributeProfiles, nil
	case "delete:user_attribute_profiles":
		return OauthScopeDeleteUserAttributeProfiles, nil
	case "read:user_idp_tokens":
		return OauthScopeReadUserIdpTokens, nil
	case "read:current_user":
		return OauthScopeReadCurrentUser, nil
	case "update:users_app_metadata":
		return OauthScopeUpdateUsersAppMetadata, nil
	case "update:current_user_metadata":
		return OauthScopeUpdateCurrentUserMetadata, nil
	case "delete:current_user":
		return OauthScopeDeleteCurrentUser, nil
	case "read:user_application_passwords":
		return OauthScopeReadUserApplicationPasswords, nil
	case "create:user_application_passwords":
		return OauthScopeCreateUserApplicationPasswords, nil
	case "delete:user_application_passwords":
		return OauthScopeDeleteUserApplicationPasswords, nil
	case "read:authentication_methods":
		return OauthScopeReadAuthenticationMethods, nil
	case "update:authentication_methods":
		return OauthScopeUpdateAuthenticationMethods, nil
	case "create:authentication_methods":
		return OauthScopeCreateAuthenticationMethods, nil
	case "delete:authentication_methods":
		return OauthScopeDeleteAuthenticationMethods, nil
	case "read:federated_connections_tokens":
		return OauthScopeReadFederatedConnectionsTokens, nil
	case "delete:federated_connections_tokens":
		return OauthScopeDeleteFederatedConnectionsTokens, nil
	case "update:current_user_identities":
		return OauthScopeUpdateCurrentUserIdentities, nil
	case "delete:role_members":
		return OauthScopeDeleteRoleMembers, nil
	case "read:vdcs_templates":
		return OauthScopeReadVdcsTemplates, nil
	case "create:vdcs_templates":
		return OauthScopeCreateVdcsTemplates, nil
	case "update:vdcs_templates":
		return OauthScopeUpdateVdcsTemplates, nil
	case "delete:vdcs_templates":
		return OauthScopeDeleteVdcsTemplates, nil
	}
	var t OauthScope
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (o OauthScope) Ptr() *OauthScope {
	return &o
}

var (
	organizationFieldID          = big.NewInt(1 << 0)
	organizationFieldName        = big.NewInt(1 << 1)
	organizationFieldDisplayName = big.NewInt(1 << 2)
	organizationFieldBranding    = big.NewInt(1 << 3)
	organizationFieldMetadata    = big.NewInt(1 << 4)
	organizationFieldTokenQuota  = big.NewInt(1 << 5)
)

type Organization struct {
	// Organization identifier.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name of this organization.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Friendly name of this organization.
	DisplayName *string               `json:"display_name,omitempty" url:"display_name,omitempty"`
	Branding    *OrganizationBranding `json:"branding,omitempty" url:"branding,omitempty"`
	Metadata    *OrganizationMetadata `json:"metadata,omitempty" url:"metadata,omitempty"`
	TokenQuota  *TokenQuota           `json:"token_quota,omitempty" url:"token_quota,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (o *Organization) GetID() string {
	if o == nil || o.ID == nil {
		return ""
	}
	return *o.ID
}

func (o *Organization) GetName() string {
	if o == nil || o.Name == nil {
		return ""
	}
	return *o.Name
}

func (o *Organization) GetDisplayName() string {
	if o == nil || o.DisplayName == nil {
		return ""
	}
	return *o.DisplayName
}

func (o *Organization) GetBranding() OrganizationBranding {
	if o == nil || o.Branding == nil {
		return OrganizationBranding{}
	}
	return *o.Branding
}

func (o *Organization) GetMetadata() OrganizationMetadata {
	if o == nil || o.Metadata == nil {
		return nil
	}
	return *o.Metadata
}

func (o *Organization) GetTokenQuota() TokenQuota {
	if o == nil || o.TokenQuota == nil {
		return TokenQuota{}
	}
	return *o.TokenQuota
}

func (o *Organization) GetExtraProperties() map[string]interface{} {
	return o.ExtraProperties
}

func (o *Organization) require(field *big.Int) {
	if o.explicitFields == nil {
		o.explicitFields = big.NewInt(0)
	}
	o.explicitFields.Or(o.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 (o *Organization) SetID(id *string) {
	o.ID = id
	o.require(organizationFieldID)
}

// 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 (o *Organization) SetName(name *string) {
	o.Name = name
	o.require(organizationFieldName)
}

// SetDisplayName sets the DisplayName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *Organization) SetDisplayName(displayName *string) {
	o.DisplayName = displayName
	o.require(organizationFieldDisplayName)
}

// SetBranding sets the Branding field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *Organization) SetBranding(branding *OrganizationBranding) {
	o.Branding = branding
	o.require(organizationFieldBranding)
}

// 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 (o *Organization) SetMetadata(metadata *OrganizationMetadata) {
	o.Metadata = metadata
	o.require(organizationFieldMetadata)
}

// SetTokenQuota sets the TokenQuota field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *Organization) SetTokenQuota(tokenQuota *TokenQuota) {
	o.TokenQuota = tokenQuota
	o.require(organizationFieldTokenQuota)
}

func (o *Organization) UnmarshalJSON(data []byte) error {
	type embed Organization
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*o),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*o = Organization(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *o)
	if err != nil {
		return err
	}
	o.ExtraProperties = extraProperties
	o.rawJSON = json.RawMessage(data)
	return nil
}

func (o *Organization) MarshalJSON() ([]byte, error) {
	type embed Organization
	var marshaler = struct {
		embed
	}{
		embed: embed(*o),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, o.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, o.ExtraProperties)
}

func (o *Organization) String() string {
	if len(o.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(o.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(o); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", o)
}

// Theme defines how to style the login pages.
var (
	organizationBrandingFieldLogoURL = big.NewInt(1 << 0)
	organizationBrandingFieldColors  = big.NewInt(1 << 1)
)

type OrganizationBranding struct {
	// URL of logo to display on login page.
	LogoURL *string                     `json:"logo_url,omitempty" url:"logo_url,omitempty"`
	Colors  *OrganizationBrandingColors `json:"colors,omitempty" url:"colors,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 (o *OrganizationBranding) GetLogoURL() string {
	if o == nil || o.LogoURL == nil {
		return ""
	}
	return *o.LogoURL
}

func (o *OrganizationBranding) GetColors() OrganizationBrandingColors {
	if o == nil || o.Colors == nil {
		return OrganizationBrandingColors{}
	}
	return *o.Colors
}

func (o *OrganizationBranding) GetExtraProperties() map[string]interface{} {
	return o.extraProperties
}

func (o *OrganizationBranding) require(field *big.Int) {
	if o.explicitFields == nil {
		o.explicitFields = big.NewInt(0)
	}
	o.explicitFields.Or(o.explicitFields, field)
}

// SetLogoURL sets the LogoURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationBranding) SetLogoURL(logoURL *string) {
	o.LogoURL = logoURL
	o.require(organizationBrandingFieldLogoURL)
}

// SetColors sets the Colors field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationBranding) SetColors(colors *OrganizationBrandingColors) {
	o.Colors = colors
	o.require(organizationBrandingFieldColors)
}

func (o *OrganizationBranding) UnmarshalJSON(data []byte) error {
	type unmarshaler OrganizationBranding
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*o = OrganizationBranding(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *o)
	if err != nil {
		return err
	}
	o.extraProperties = extraProperties
	o.rawJSON = json.RawMessage(data)
	return nil
}

func (o *OrganizationBranding) MarshalJSON() ([]byte, error) {
	type embed OrganizationBranding
	var marshaler = struct {
		embed
	}{
		embed: embed(*o),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, o.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (o *OrganizationBranding) String() string {
	if len(o.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(o.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(o); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", o)
}

// Color scheme used to customize the login pages.
var (
	organizationBrandingColorsFieldPrimary        = big.NewInt(1 << 0)
	organizationBrandingColorsFieldPageBackground = big.NewInt(1 << 1)
)

type OrganizationBrandingColors struct {
	// HEX Color for primary elements.
	Primary string `json:"primary" url:"primary"`
	// HEX Color for background.
	PageBackground string `json:"page_background" url:"page_background"`

	// 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 (o *OrganizationBrandingColors) GetPrimary() string {
	if o == nil {
		return ""
	}
	return o.Primary
}

func (o *OrganizationBrandingColors) GetPageBackground() string {
	if o == nil {
		return ""
	}
	return o.PageBackground
}

func (o *OrganizationBrandingColors) GetExtraProperties() map[string]interface{} {
	return o.extraProperties
}

func (o *OrganizationBrandingColors) require(field *big.Int) {
	if o.explicitFields == nil {
		o.explicitFields = big.NewInt(0)
	}
	o.explicitFields.Or(o.explicitFields, field)
}

// SetPrimary sets the Primary field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationBrandingColors) SetPrimary(primary string) {
	o.Primary = primary
	o.require(organizationBrandingColorsFieldPrimary)
}

// SetPageBackground sets the PageBackground field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationBrandingColors) SetPageBackground(pageBackground string) {
	o.PageBackground = pageBackground
	o.require(organizationBrandingColorsFieldPageBackground)
}

func (o *OrganizationBrandingColors) UnmarshalJSON(data []byte) error {
	type unmarshaler OrganizationBrandingColors
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*o = OrganizationBrandingColors(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *o)
	if err != nil {
		return err
	}
	o.extraProperties = extraProperties
	o.rawJSON = json.RawMessage(data)
	return nil
}

func (o *OrganizationBrandingColors) MarshalJSON() ([]byte, error) {
	type embed OrganizationBrandingColors
	var marshaler = struct {
		embed
	}{
		embed: embed(*o),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, o.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (o *OrganizationBrandingColors) String() string {
	if len(o.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(o.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(o); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", o)
}

var (
	organizationClientGrantFieldID                   = big.NewInt(1 << 0)
	organizationClientGrantFieldClientID             = big.NewInt(1 << 1)
	organizationClientGrantFieldAudience             = big.NewInt(1 << 2)
	organizationClientGrantFieldScope                = big.NewInt(1 << 3)
	organizationClientGrantFieldOrganizationUsage    = big.NewInt(1 << 4)
	organizationClientGrantFieldAllowAnyOrganization = big.NewInt(1 << 5)
)

type OrganizationClientGrant struct {
	// ID of the client grant.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// ID of the client.
	ClientID *string `json:"client_id,omitempty" url:"client_id,omitempty"`
	// The audience (API identifier) of this client grant
	Audience *string `json:"audience,omitempty" url:"audience,omitempty"`
	// Scopes allowed for this client grant.
	Scope             []string               `json:"scope,omitempty" url:"scope,omitempty"`
	OrganizationUsage *OrganizationUsageEnum `json:"organization_usage,omitempty" url:"organization_usage,omitempty"`
	// If enabled, any organization can be used with this grant. If disabled (default), the grant must be explicitly assigned to the desired organizations.
	AllowAnyOrganization *bool `json:"allow_any_organization,omitempty" url:"allow_any_organization,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 (o *OrganizationClientGrant) GetID() string {
	if o == nil || o.ID == nil {
		return ""
	}
	return *o.ID
}

func (o *OrganizationClientGrant) GetClientID() string {
	if o == nil || o.ClientID == nil {
		return ""
	}
	return *o.ClientID
}

func (o *OrganizationClientGrant) GetAudience() string {
	if o == nil || o.Audience == nil {
		return ""
	}
	return *o.Audience
}

func (o *OrganizationClientGrant) GetScope() []string {
	if o == nil || o.Scope == nil {
		return nil
	}
	return o.Scope
}

func (o *OrganizationClientGrant) GetOrganizationUsage() OrganizationUsageEnum {
	if o == nil || o.OrganizationUsage == nil {
		return ""
	}
	return *o.OrganizationUsage
}

func (o *OrganizationClientGrant) GetAllowAnyOrganization() bool {
	if o == nil || o.AllowAnyOrganization == nil {
		return false
	}
	return *o.AllowAnyOrganization
}

func (o *OrganizationClientGrant) GetExtraProperties() map[string]interface{} {
	return o.extraProperties
}

func (o *OrganizationClientGrant) require(field *big.Int) {
	if o.explicitFields == nil {
		o.explicitFields = big.NewInt(0)
	}
	o.explicitFields.Or(o.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 (o *OrganizationClientGrant) SetID(id *string) {
	o.ID = id
	o.require(organizationClientGrantFieldID)
}

// SetClientID sets the ClientID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationClientGrant) SetClientID(clientID *string) {
	o.ClientID = clientID
	o.require(organizationClientGrantFieldClientID)
}

// SetAudience sets the Audience field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationClientGrant) SetAudience(audience *string) {
	o.Audience = audience
	o.require(organizationClientGrantFieldAudience)
}

// SetScope sets the Scope field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationClientGrant) SetScope(scope []string) {
	o.Scope = scope
	o.require(organizationClientGrantFieldScope)
}

// SetOrganizationUsage sets the OrganizationUsage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationClientGrant) SetOrganizationUsage(organizationUsage *OrganizationUsageEnum) {
	o.OrganizationUsage = organizationUsage
	o.require(organizationClientGrantFieldOrganizationUsage)
}

// SetAllowAnyOrganization sets the AllowAnyOrganization field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationClientGrant) SetAllowAnyOrganization(allowAnyOrganization *bool) {
	o.AllowAnyOrganization = allowAnyOrganization
	o.require(organizationClientGrantFieldAllowAnyOrganization)
}

func (o *OrganizationClientGrant) UnmarshalJSON(data []byte) error {
	type unmarshaler OrganizationClientGrant
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*o = OrganizationClientGrant(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *o)
	if err != nil {
		return err
	}
	o.extraProperties = extraProperties
	o.rawJSON = json.RawMessage(data)
	return nil
}

func (o *OrganizationClientGrant) MarshalJSON() ([]byte, error) {
	type embed OrganizationClientGrant
	var marshaler = struct {
		embed
	}{
		embed: embed(*o),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, o.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (o *OrganizationClientGrant) String() string {
	if len(o.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(o.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(o); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", o)
}

var (
	organizationConnectionFieldConnectionID            = big.NewInt(1 << 0)
	organizationConnectionFieldAssignMembershipOnLogin = big.NewInt(1 << 1)
	organizationConnectionFieldShowAsButton            = big.NewInt(1 << 2)
	organizationConnectionFieldIsSignupEnabled         = big.NewInt(1 << 3)
	organizationConnectionFieldConnection              = big.NewInt(1 << 4)
)

type OrganizationConnection struct {
	// ID of the connection.
	ConnectionID *string `json:"connection_id,omitempty" url:"connection_id,omitempty"`
	// When true, all users that log in with this connection will be automatically granted membership in the organization. When false, users must be granted membership in the organization before logging in with this connection.
	AssignMembershipOnLogin *bool `json:"assign_membership_on_login,omitempty" url:"assign_membership_on_login,omitempty"`
	// Determines whether a connection should be displayed on this organization’s login prompt. Only applicable for enterprise connections. Default: true.
	ShowAsButton *bool `json:"show_as_button,omitempty" url:"show_as_button,omitempty"`
	// Determines whether organization signup should be enabled for this organization connection. Only applicable for database connections. Default: false.
	IsSignupEnabled *bool                              `json:"is_signup_enabled,omitempty" url:"is_signup_enabled,omitempty"`
	Connection      *OrganizationConnectionInformation `json:"connection,omitempty" url:"connection,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 (o *OrganizationConnection) GetConnectionID() string {
	if o == nil || o.ConnectionID == nil {
		return ""
	}
	return *o.ConnectionID
}

func (o *OrganizationConnection) GetAssignMembershipOnLogin() bool {
	if o == nil || o.AssignMembershipOnLogin == nil {
		return false
	}
	return *o.AssignMembershipOnLogin
}

func (o *OrganizationConnection) GetShowAsButton() bool {
	if o == nil || o.ShowAsButton == nil {
		return false
	}
	return *o.ShowAsButton
}

func (o *OrganizationConnection) GetIsSignupEnabled() bool {
	if o == nil || o.IsSignupEnabled == nil {
		return false
	}
	return *o.IsSignupEnabled
}

func (o *OrganizationConnection) GetConnection() OrganizationConnectionInformation {
	if o == nil || o.Connection == nil {
		return OrganizationConnectionInformation{}
	}
	return *o.Connection
}

func (o *OrganizationConnection) GetExtraProperties() map[string]interface{} {
	return o.extraProperties
}

func (o *OrganizationConnection) require(field *big.Int) {
	if o.explicitFields == nil {
		o.explicitFields = big.NewInt(0)
	}
	o.explicitFields.Or(o.explicitFields, field)
}

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationConnection) SetConnectionID(connectionID *string) {
	o.ConnectionID = connectionID
	o.require(organizationConnectionFieldConnectionID)
}

// SetAssignMembershipOnLogin sets the AssignMembershipOnLogin field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationConnection) SetAssignMembershipOnLogin(assignMembershipOnLogin *bool) {
	o.AssignMembershipOnLogin = assignMembershipOnLogin
	o.require(organizationConnectionFieldAssignMembershipOnLogin)
}

// SetShowAsButton sets the ShowAsButton field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationConnection) SetShowAsButton(showAsButton *bool) {
	o.ShowAsButton = showAsButton
	o.require(organizationConnectionFieldShowAsButton)
}

// SetIsSignupEnabled sets the IsSignupEnabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationConnection) SetIsSignupEnabled(isSignupEnabled *bool) {
	o.IsSignupEnabled = isSignupEnabled
	o.require(organizationConnectionFieldIsSignupEnabled)
}

// SetConnection sets the Connection field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationConnection) SetConnection(connection *OrganizationConnectionInformation) {
	o.Connection = connection
	o.require(organizationConnectionFieldConnection)
}

func (o *OrganizationConnection) UnmarshalJSON(data []byte) error {
	type unmarshaler OrganizationConnection
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*o = OrganizationConnection(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *o)
	if err != nil {
		return err
	}
	o.extraProperties = extraProperties
	o.rawJSON = json.RawMessage(data)
	return nil
}

func (o *OrganizationConnection) MarshalJSON() ([]byte, error) {
	type embed OrganizationConnection
	var marshaler = struct {
		embed
	}{
		embed: embed(*o),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, o.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (o *OrganizationConnection) String() string {
	if len(o.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(o.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(o); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", o)
}

var (
	organizationConnectionInformationFieldName     = big.NewInt(1 << 0)
	organizationConnectionInformationFieldStrategy = big.NewInt(1 << 1)
)

type OrganizationConnectionInformation struct {
	// The name of the enabled connection.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// The strategy of the enabled connection.
	Strategy *string `json:"strategy,omitempty" url:"strategy,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (o *OrganizationConnectionInformation) GetName() string {
	if o == nil || o.Name == nil {
		return ""
	}
	return *o.Name
}

func (o *OrganizationConnectionInformation) GetStrategy() string {
	if o == nil || o.Strategy == nil {
		return ""
	}
	return *o.Strategy
}

func (o *OrganizationConnectionInformation) GetExtraProperties() map[string]interface{} {
	return o.ExtraProperties
}

func (o *OrganizationConnectionInformation) require(field *big.Int) {
	if o.explicitFields == nil {
		o.explicitFields = big.NewInt(0)
	}
	o.explicitFields.Or(o.explicitFields, field)
}

// 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 (o *OrganizationConnectionInformation) SetName(name *string) {
	o.Name = name
	o.require(organizationConnectionInformationFieldName)
}

// SetStrategy sets the Strategy field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationConnectionInformation) SetStrategy(strategy *string) {
	o.Strategy = strategy
	o.require(organizationConnectionInformationFieldStrategy)
}

func (o *OrganizationConnectionInformation) UnmarshalJSON(data []byte) error {
	type embed OrganizationConnectionInformation
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*o),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*o = OrganizationConnectionInformation(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *o)
	if err != nil {
		return err
	}
	o.ExtraProperties = extraProperties
	o.rawJSON = json.RawMessage(data)
	return nil
}

func (o *OrganizationConnectionInformation) MarshalJSON() ([]byte, error) {
	type embed OrganizationConnectionInformation
	var marshaler = struct {
		embed
	}{
		embed: embed(*o),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, o.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, o.ExtraProperties)
}

func (o *OrganizationConnectionInformation) String() string {
	if len(o.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(o.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(o); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", o)
}

var (
	organizationInvitationFieldID             = big.NewInt(1 << 0)
	organizationInvitationFieldOrganizationID = big.NewInt(1 << 1)
	organizationInvitationFieldInviter        = big.NewInt(1 << 2)
	organizationInvitationFieldInvitee        = big.NewInt(1 << 3)
	organizationInvitationFieldInvitationURL  = big.NewInt(1 << 4)
	organizationInvitationFieldCreatedAt      = big.NewInt(1 << 5)
	organizationInvitationFieldExpiresAt      = big.NewInt(1 << 6)
	organizationInvitationFieldClientID       = big.NewInt(1 << 7)
	organizationInvitationFieldConnectionID   = big.NewInt(1 << 8)
	organizationInvitationFieldAppMetadata    = big.NewInt(1 << 9)
	organizationInvitationFieldUserMetadata   = big.NewInt(1 << 10)
	organizationInvitationFieldRoles          = big.NewInt(1 << 11)
	organizationInvitationFieldTicketID       = big.NewInt(1 << 12)
)

type OrganizationInvitation struct {
	// The id of the user invitation.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// Organization identifier.
	OrganizationID *string                        `json:"organization_id,omitempty" url:"organization_id,omitempty"`
	Inviter        *OrganizationInvitationInviter `json:"inviter,omitempty" url:"inviter,omitempty"`
	Invitee        *OrganizationInvitationInvitee `json:"invitee,omitempty" url:"invitee,omitempty"`
	// The invitation url to be send to the invitee.
	InvitationURL *string `json:"invitation_url,omitempty" url:"invitation_url,omitempty"`
	// The ISO 8601 formatted timestamp representing the creation time of the invitation.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The ISO 8601 formatted timestamp representing the expiration time of the invitation.
	ExpiresAt *time.Time `json:"expires_at,omitempty" url:"expires_at,omitempty"`
	// Auth0 client ID. Used to resolve the application's login initiation endpoint.
	ClientID *string `json:"client_id,omitempty" url:"client_id,omitempty"`
	// The id of the connection to force invitee to authenticate with.
	ConnectionID *string       `json:"connection_id,omitempty" url:"connection_id,omitempty"`
	AppMetadata  *AppMetadata  `json:"app_metadata,omitempty" url:"app_metadata,omitempty"`
	UserMetadata *UserMetadata `json:"user_metadata,omitempty" url:"user_metadata,omitempty"`
	// List of roles IDs to associated with the user.
	Roles []string `json:"roles,omitempty" url:"roles,omitempty"`
	// The id of the invitation ticket
	TicketID *string `json:"ticket_id,omitempty" url:"ticket_id,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 (o *OrganizationInvitation) GetID() string {
	if o == nil || o.ID == nil {
		return ""
	}
	return *o.ID
}

func (o *OrganizationInvitation) GetOrganizationID() string {
	if o == nil || o.OrganizationID == nil {
		return ""
	}
	return *o.OrganizationID
}

func (o *OrganizationInvitation) GetInviter() OrganizationInvitationInviter {
	if o == nil || o.Inviter == nil {
		return OrganizationInvitationInviter{}
	}
	return *o.Inviter
}

func (o *OrganizationInvitation) GetInvitee() OrganizationInvitationInvitee {
	if o == nil || o.Invitee == nil {
		return OrganizationInvitationInvitee{}
	}
	return *o.Invitee
}

func (o *OrganizationInvitation) GetInvitationURL() string {
	if o == nil || o.InvitationURL == nil {
		return ""
	}
	return *o.InvitationURL
}

func (o *OrganizationInvitation) GetCreatedAt() time.Time {
	if o == nil || o.CreatedAt == nil {
		return time.Time{}
	}
	return *o.CreatedAt
}

func (o *OrganizationInvitation) GetExpiresAt() time.Time {
	if o == nil || o.ExpiresAt == nil {
		return time.Time{}
	}
	return *o.ExpiresAt
}

func (o *OrganizationInvitation) GetClientID() string {
	if o == nil || o.ClientID == nil {
		return ""
	}
	return *o.ClientID
}

func (o *OrganizationInvitation) GetConnectionID() string {
	if o == nil || o.ConnectionID == nil {
		return ""
	}
	return *o.ConnectionID
}

func (o *OrganizationInvitation) GetAppMetadata() AppMetadata {
	if o == nil || o.AppMetadata == nil {
		return nil
	}
	return *o.AppMetadata
}

func (o *OrganizationInvitation) GetUserMetadata() UserMetadata {
	if o == nil || o.UserMetadata == nil {
		return nil
	}
	return *o.UserMetadata
}

func (o *OrganizationInvitation) GetRoles() []string {
	if o == nil || o.Roles == nil {
		return nil
	}
	return o.Roles
}

func (o *OrganizationInvitation) GetTicketID() string {
	if o == nil || o.TicketID == nil {
		return ""
	}
	return *o.TicketID
}

func (o *OrganizationInvitation) GetExtraProperties() map[string]interface{} {
	return o.extraProperties
}

func (o *OrganizationInvitation) require(field *big.Int) {
	if o.explicitFields == nil {
		o.explicitFields = big.NewInt(0)
	}
	o.explicitFields.Or(o.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 (o *OrganizationInvitation) SetID(id *string) {
	o.ID = id
	o.require(organizationInvitationFieldID)
}

// SetOrganizationID sets the OrganizationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationInvitation) SetOrganizationID(organizationID *string) {
	o.OrganizationID = organizationID
	o.require(organizationInvitationFieldOrganizationID)
}

// SetInviter sets the Inviter field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationInvitation) SetInviter(inviter *OrganizationInvitationInviter) {
	o.Inviter = inviter
	o.require(organizationInvitationFieldInviter)
}

// SetInvitee sets the Invitee field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationInvitation) SetInvitee(invitee *OrganizationInvitationInvitee) {
	o.Invitee = invitee
	o.require(organizationInvitationFieldInvitee)
}

// SetInvitationURL sets the InvitationURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationInvitation) SetInvitationURL(invitationURL *string) {
	o.InvitationURL = invitationURL
	o.require(organizationInvitationFieldInvitationURL)
}

// 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 (o *OrganizationInvitation) SetCreatedAt(createdAt *time.Time) {
	o.CreatedAt = createdAt
	o.require(organizationInvitationFieldCreatedAt)
}

// SetExpiresAt sets the ExpiresAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationInvitation) SetExpiresAt(expiresAt *time.Time) {
	o.ExpiresAt = expiresAt
	o.require(organizationInvitationFieldExpiresAt)
}

// SetClientID sets the ClientID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationInvitation) SetClientID(clientID *string) {
	o.ClientID = clientID
	o.require(organizationInvitationFieldClientID)
}

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationInvitation) SetConnectionID(connectionID *string) {
	o.ConnectionID = connectionID
	o.require(organizationInvitationFieldConnectionID)
}

// SetAppMetadata sets the AppMetadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationInvitation) SetAppMetadata(appMetadata *AppMetadata) {
	o.AppMetadata = appMetadata
	o.require(organizationInvitationFieldAppMetadata)
}

// SetUserMetadata sets the UserMetadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationInvitation) SetUserMetadata(userMetadata *UserMetadata) {
	o.UserMetadata = userMetadata
	o.require(organizationInvitationFieldUserMetadata)
}

// SetRoles sets the Roles field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationInvitation) SetRoles(roles []string) {
	o.Roles = roles
	o.require(organizationInvitationFieldRoles)
}

// SetTicketID sets the TicketID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationInvitation) SetTicketID(ticketID *string) {
	o.TicketID = ticketID
	o.require(organizationInvitationFieldTicketID)
}

func (o *OrganizationInvitation) UnmarshalJSON(data []byte) error {
	type embed OrganizationInvitation
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed: embed(*o),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*o = OrganizationInvitation(unmarshaler.embed)
	o.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	o.ExpiresAt = unmarshaler.ExpiresAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *o)
	if err != nil {
		return err
	}
	o.extraProperties = extraProperties
	o.rawJSON = json.RawMessage(data)
	return nil
}

func (o *OrganizationInvitation) MarshalJSON() ([]byte, error) {
	type embed OrganizationInvitation
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed:     embed(*o),
		CreatedAt: internal.NewOptionalDateTime(o.CreatedAt),
		ExpiresAt: internal.NewOptionalDateTime(o.ExpiresAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, o.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (o *OrganizationInvitation) String() string {
	if len(o.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(o.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(o); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", o)
}

var (
	organizationInvitationInviteeFieldEmail = big.NewInt(1 << 0)
)

type OrganizationInvitationInvitee struct {
	// The invitee's email.
	Email string `json:"email" url:"email"`

	// 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 (o *OrganizationInvitationInvitee) GetEmail() string {
	if o == nil {
		return ""
	}
	return o.Email
}

func (o *OrganizationInvitationInvitee) GetExtraProperties() map[string]interface{} {
	return o.extraProperties
}

func (o *OrganizationInvitationInvitee) require(field *big.Int) {
	if o.explicitFields == nil {
		o.explicitFields = big.NewInt(0)
	}
	o.explicitFields.Or(o.explicitFields, field)
}

// SetEmail sets the Email field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationInvitationInvitee) SetEmail(email string) {
	o.Email = email
	o.require(organizationInvitationInviteeFieldEmail)
}

func (o *OrganizationInvitationInvitee) UnmarshalJSON(data []byte) error {
	type unmarshaler OrganizationInvitationInvitee
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*o = OrganizationInvitationInvitee(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *o)
	if err != nil {
		return err
	}
	o.extraProperties = extraProperties
	o.rawJSON = json.RawMessage(data)
	return nil
}

func (o *OrganizationInvitationInvitee) MarshalJSON() ([]byte, error) {
	type embed OrganizationInvitationInvitee
	var marshaler = struct {
		embed
	}{
		embed: embed(*o),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, o.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (o *OrganizationInvitationInvitee) String() string {
	if len(o.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(o.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(o); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", o)
}

var (
	organizationInvitationInviterFieldName = big.NewInt(1 << 0)
)

type OrganizationInvitationInviter struct {
	// The inviter's name.
	Name string `json:"name" url:"name"`

	// 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 (o *OrganizationInvitationInviter) GetName() string {
	if o == nil {
		return ""
	}
	return o.Name
}

func (o *OrganizationInvitationInviter) GetExtraProperties() map[string]interface{} {
	return o.extraProperties
}

func (o *OrganizationInvitationInviter) require(field *big.Int) {
	if o.explicitFields == nil {
		o.explicitFields = big.NewInt(0)
	}
	o.explicitFields.Or(o.explicitFields, field)
}

// 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 (o *OrganizationInvitationInviter) SetName(name string) {
	o.Name = name
	o.require(organizationInvitationInviterFieldName)
}

func (o *OrganizationInvitationInviter) UnmarshalJSON(data []byte) error {
	type unmarshaler OrganizationInvitationInviter
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*o = OrganizationInvitationInviter(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *o)
	if err != nil {
		return err
	}
	o.extraProperties = extraProperties
	o.rawJSON = json.RawMessage(data)
	return nil
}

func (o *OrganizationInvitationInviter) MarshalJSON() ([]byte, error) {
	type embed OrganizationInvitationInviter
	var marshaler = struct {
		embed
	}{
		embed: embed(*o),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, o.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (o *OrganizationInvitationInviter) String() string {
	if len(o.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(o.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(o); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", o)
}

var (
	organizationMemberFieldUserID  = big.NewInt(1 << 0)
	organizationMemberFieldPicture = big.NewInt(1 << 1)
	organizationMemberFieldName    = big.NewInt(1 << 2)
	organizationMemberFieldEmail   = big.NewInt(1 << 3)
	organizationMemberFieldRoles   = big.NewInt(1 << 4)
)

type OrganizationMember struct {
	// ID of this user.
	UserID *string `json:"user_id,omitempty" url:"user_id,omitempty"`
	// URL to a picture for this user.
	Picture *string `json:"picture,omitempty" url:"picture,omitempty"`
	// Name of this user.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Email address of this user.
	Email *string                   `json:"email,omitempty" url:"email,omitempty"`
	Roles []*OrganizationMemberRole `json:"roles,omitempty" url:"roles,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 (o *OrganizationMember) GetUserID() string {
	if o == nil || o.UserID == nil {
		return ""
	}
	return *o.UserID
}

func (o *OrganizationMember) GetPicture() string {
	if o == nil || o.Picture == nil {
		return ""
	}
	return *o.Picture
}

func (o *OrganizationMember) GetName() string {
	if o == nil || o.Name == nil {
		return ""
	}
	return *o.Name
}

func (o *OrganizationMember) GetEmail() string {
	if o == nil || o.Email == nil {
		return ""
	}
	return *o.Email
}

func (o *OrganizationMember) GetRoles() []*OrganizationMemberRole {
	if o == nil || o.Roles == nil {
		return nil
	}
	return o.Roles
}

func (o *OrganizationMember) GetExtraProperties() map[string]interface{} {
	return o.extraProperties
}

func (o *OrganizationMember) require(field *big.Int) {
	if o.explicitFields == nil {
		o.explicitFields = big.NewInt(0)
	}
	o.explicitFields.Or(o.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 (o *OrganizationMember) SetUserID(userID *string) {
	o.UserID = userID
	o.require(organizationMemberFieldUserID)
}

// SetPicture sets the Picture field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationMember) SetPicture(picture *string) {
	o.Picture = picture
	o.require(organizationMemberFieldPicture)
}

// 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 (o *OrganizationMember) SetName(name *string) {
	o.Name = name
	o.require(organizationMemberFieldName)
}

// SetEmail sets the Email field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationMember) SetEmail(email *string) {
	o.Email = email
	o.require(organizationMemberFieldEmail)
}

// SetRoles sets the Roles field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (o *OrganizationMember) SetRoles(roles []*OrganizationMemberRole) {
	o.Roles = roles
	o.require(organizationMemberFieldRoles)
}

func (o *OrganizationMember) UnmarshalJSON(data []byte) error {
	type unmarshaler OrganizationMember
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*o = OrganizationMember(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *o)
	if err != nil {
		return err
	}
	o.extraProperties = extraProperties
	o.rawJSON = json.RawMessage(data)
	return nil
}

func (o *OrganizationMember) MarshalJSON() ([]byte, error) {
	type embed OrganizationMember
	var marshaler = struct {
		embed
	}{
		embed: embed(*o),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, o.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (o *OrganizationMember) String() string {
	if len(o.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(o.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(o); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", o)
}

var (
	organizationMemberRoleFieldID   = big.NewInt(1 << 0)
	organizationMemberRoleFieldName = big.NewInt(1 << 1)
)

type OrganizationMemberRole struct {
	// ID for this role.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// Name of this role.
	Name *string `json:"name,omitempty" url:"name,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 (o *OrganizationMemberRole) GetID() string {
	if o == nil || o.ID == nil {
		return ""
	}
	return *o.ID
}

func (o *OrganizationMemberRole) GetName() string {
	if o == nil || o.Name == nil {
		return ""
	}
	return *o.Name
}

func (o *OrganizationMemberRole) GetExtraProperties() map[string]interface{} {
	return o.extraProperties
}

func (o *OrganizationMemberRole) require(field *big.Int) {
	if o.explicitFields == nil {
		o.explicitFields = big.NewInt(0)
	}
	o.explicitFields.Or(o.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 (o *OrganizationMemberRole) SetID(id *string) {
	o.ID = id
	o.require(organizationMemberRoleFieldID)
}

// 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 (o *OrganizationMemberRole) SetName(name *string) {
	o.Name = name
	o.require(organizationMemberRoleFieldName)
}

func (o *OrganizationMemberRole) UnmarshalJSON(data []byte) error {
	type unmarshaler OrganizationMemberRole
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*o = OrganizationMemberRole(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *o)
	if err != nil {
		return err
	}
	o.extraProperties = extraProperties
	o.rawJSON = json.RawMessage(data)
	return nil
}

func (o *OrganizationMemberRole) MarshalJSON() ([]byte, error) {
	type embed OrganizationMemberRole
	var marshaler = struct {
		embed
	}{
		embed: embed(*o),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, o.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (o *OrganizationMemberRole) String() string {
	if len(o.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(o.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(o); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", o)
}

// Metadata associated with the organization, in the form of an object with string values (max 255 chars). Maximum of 25 metadata properties allowed.
type OrganizationMetadata = map[string]*string

// Defines whether organizations can be used with client credentials exchanges for this grant.
type OrganizationUsageEnum string

const (
	OrganizationUsageEnumDeny    OrganizationUsageEnum = "deny"
	OrganizationUsageEnumAllow   OrganizationUsageEnum = "allow"
	OrganizationUsageEnumRequire OrganizationUsageEnum = "require"
)

func NewOrganizationUsageEnumFromString(s string) (OrganizationUsageEnum, error) {
	switch s {
	case "deny":
		return OrganizationUsageEnumDeny, nil
	case "allow":
		return OrganizationUsageEnumAllow, nil
	case "require":
		return OrganizationUsageEnumRequire, nil
	}
	var t OrganizationUsageEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (o OrganizationUsageEnum) Ptr() *OrganizationUsageEnum {
	return &o
}

// Name of the prompt.
type PartialGroupsEnum string

const (
	PartialGroupsEnumLogin             PartialGroupsEnum = "login"
	PartialGroupsEnumLoginID           PartialGroupsEnum = "login-id"
	PartialGroupsEnumLoginPassword     PartialGroupsEnum = "login-password"
	PartialGroupsEnumLoginPasswordless PartialGroupsEnum = "login-passwordless"
	PartialGroupsEnumSignup            PartialGroupsEnum = "signup"
	PartialGroupsEnumSignupID          PartialGroupsEnum = "signup-id"
	PartialGroupsEnumSignupPassword    PartialGroupsEnum = "signup-password"
	PartialGroupsEnumCustomizedConsent PartialGroupsEnum = "customized-consent"
)

func NewPartialGroupsEnumFromString(s string) (PartialGroupsEnum, error) {
	switch s {
	case "login":
		return PartialGroupsEnumLogin, nil
	case "login-id":
		return PartialGroupsEnumLoginID, nil
	case "login-password":
		return PartialGroupsEnumLoginPassword, nil
	case "login-passwordless":
		return PartialGroupsEnumLoginPasswordless, nil
	case "signup":
		return PartialGroupsEnumSignup, nil
	case "signup-id":
		return PartialGroupsEnumSignupID, nil
	case "signup-password":
		return PartialGroupsEnumSignupPassword, nil
	case "customized-consent":
		return PartialGroupsEnumCustomizedConsent, nil
	}
	var t PartialGroupsEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (p PartialGroupsEnum) Ptr() *PartialGroupsEnum {
	return &p
}

var (
	partialPhoneTemplateContentFieldFrom = big.NewInt(1 << 0)
	partialPhoneTemplateContentFieldBody = big.NewInt(1 << 1)
)

type PartialPhoneTemplateContent struct {
	// Default phone number to be used as 'from' when sending a phone notification
	From *string            `json:"from,omitempty" url:"from,omitempty"`
	Body *PhoneTemplateBody `json:"body,omitempty" url:"body,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 (p *PartialPhoneTemplateContent) GetFrom() string {
	if p == nil || p.From == nil {
		return ""
	}
	return *p.From
}

func (p *PartialPhoneTemplateContent) GetBody() PhoneTemplateBody {
	if p == nil || p.Body == nil {
		return PhoneTemplateBody{}
	}
	return *p.Body
}

func (p *PartialPhoneTemplateContent) GetExtraProperties() map[string]interface{} {
	return p.extraProperties
}

func (p *PartialPhoneTemplateContent) require(field *big.Int) {
	if p.explicitFields == nil {
		p.explicitFields = big.NewInt(0)
	}
	p.explicitFields.Or(p.explicitFields, field)
}

// SetFrom sets the From field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PartialPhoneTemplateContent) SetFrom(from *string) {
	p.From = from
	p.require(partialPhoneTemplateContentFieldFrom)
}

// SetBody sets the Body field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PartialPhoneTemplateContent) SetBody(body *PhoneTemplateBody) {
	p.Body = body
	p.require(partialPhoneTemplateContentFieldBody)
}

func (p *PartialPhoneTemplateContent) UnmarshalJSON(data []byte) error {
	type unmarshaler PartialPhoneTemplateContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*p = PartialPhoneTemplateContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *p)
	if err != nil {
		return err
	}
	p.extraProperties = extraProperties
	p.rawJSON = json.RawMessage(data)
	return nil
}

func (p *PartialPhoneTemplateContent) MarshalJSON() ([]byte, error) {
	type embed PartialPhoneTemplateContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*p),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, p.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (p *PartialPhoneTemplateContent) String() string {
	if len(p.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(p.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(p); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", p)
}

var (
	patchClientCredentialResponseContentFieldID               = big.NewInt(1 << 0)
	patchClientCredentialResponseContentFieldName             = big.NewInt(1 << 1)
	patchClientCredentialResponseContentFieldKid              = big.NewInt(1 << 2)
	patchClientCredentialResponseContentFieldAlg              = big.NewInt(1 << 3)
	patchClientCredentialResponseContentFieldCredentialType   = big.NewInt(1 << 4)
	patchClientCredentialResponseContentFieldSubjectDn        = big.NewInt(1 << 5)
	patchClientCredentialResponseContentFieldThumbprintSha256 = big.NewInt(1 << 6)
	patchClientCredentialResponseContentFieldCreatedAt        = big.NewInt(1 << 7)
	patchClientCredentialResponseContentFieldUpdatedAt        = big.NewInt(1 << 8)
	patchClientCredentialResponseContentFieldExpiresAt        = big.NewInt(1 << 9)
)

type PatchClientCredentialResponseContent struct {
	// ID of the credential. Generated on creation.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name given to the credential by the user.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// The key identifier of the credential, generated on creation.
	Kid            *string                        `json:"kid,omitempty" url:"kid,omitempty"`
	Alg            *ClientCredentialAlgorithmEnum `json:"alg,omitempty" url:"alg,omitempty"`
	CredentialType *ClientCredentialTypeEnum      `json:"credential_type,omitempty" url:"credential_type,omitempty"`
	// The X509 certificate's Subject Distinguished Name
	SubjectDn *string `json:"subject_dn,omitempty" url:"subject_dn,omitempty"`
	// The X509 certificate's SHA256 thumbprint
	ThumbprintSha256 *string `json:"thumbprint_sha256,omitempty" url:"thumbprint_sha256,omitempty"`
	// The ISO 8601 formatted date the credential was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The ISO 8601 formatted date the credential was updated.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,omitempty"`
	// The ISO 8601 formatted date representing the expiration of the credential.
	ExpiresAt *time.Time `json:"expires_at,omitempty" url:"expires_at,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (p *PatchClientCredentialResponseContent) GetID() string {
	if p == nil || p.ID == nil {
		return ""
	}
	return *p.ID
}

func (p *PatchClientCredentialResponseContent) GetName() string {
	if p == nil || p.Name == nil {
		return ""
	}
	return *p.Name
}

func (p *PatchClientCredentialResponseContent) GetKid() string {
	if p == nil || p.Kid == nil {
		return ""
	}
	return *p.Kid
}

func (p *PatchClientCredentialResponseContent) GetAlg() ClientCredentialAlgorithmEnum {
	if p == nil || p.Alg == nil {
		return ""
	}
	return *p.Alg
}

func (p *PatchClientCredentialResponseContent) GetCredentialType() ClientCredentialTypeEnum {
	if p == nil || p.CredentialType == nil {
		return ""
	}
	return *p.CredentialType
}

func (p *PatchClientCredentialResponseContent) GetSubjectDn() string {
	if p == nil || p.SubjectDn == nil {
		return ""
	}
	return *p.SubjectDn
}

func (p *PatchClientCredentialResponseContent) GetThumbprintSha256() string {
	if p == nil || p.ThumbprintSha256 == nil {
		return ""
	}
	return *p.ThumbprintSha256
}

func (p *PatchClientCredentialResponseContent) GetCreatedAt() time.Time {
	if p == nil || p.CreatedAt == nil {
		return time.Time{}
	}
	return *p.CreatedAt
}

func (p *PatchClientCredentialResponseContent) GetUpdatedAt() time.Time {
	if p == nil || p.UpdatedAt == nil {
		return time.Time{}
	}
	return *p.UpdatedAt
}

func (p *PatchClientCredentialResponseContent) GetExpiresAt() time.Time {
	if p == nil || p.ExpiresAt == nil {
		return time.Time{}
	}
	return *p.ExpiresAt
}

func (p *PatchClientCredentialResponseContent) GetExtraProperties() map[string]interface{} {
	return p.ExtraProperties
}

func (p *PatchClientCredentialResponseContent) require(field *big.Int) {
	if p.explicitFields == nil {
		p.explicitFields = big.NewInt(0)
	}
	p.explicitFields.Or(p.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 (p *PatchClientCredentialResponseContent) SetID(id *string) {
	p.ID = id
	p.require(patchClientCredentialResponseContentFieldID)
}

// 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 (p *PatchClientCredentialResponseContent) SetName(name *string) {
	p.Name = name
	p.require(patchClientCredentialResponseContentFieldName)
}

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PatchClientCredentialResponseContent) SetKid(kid *string) {
	p.Kid = kid
	p.require(patchClientCredentialResponseContentFieldKid)
}

// SetAlg sets the Alg field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PatchClientCredentialResponseContent) SetAlg(alg *ClientCredentialAlgorithmEnum) {
	p.Alg = alg
	p.require(patchClientCredentialResponseContentFieldAlg)
}

// SetCredentialType sets the CredentialType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PatchClientCredentialResponseContent) SetCredentialType(credentialType *ClientCredentialTypeEnum) {
	p.CredentialType = credentialType
	p.require(patchClientCredentialResponseContentFieldCredentialType)
}

// SetSubjectDn sets the SubjectDn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PatchClientCredentialResponseContent) SetSubjectDn(subjectDn *string) {
	p.SubjectDn = subjectDn
	p.require(patchClientCredentialResponseContentFieldSubjectDn)
}

// SetThumbprintSha256 sets the ThumbprintSha256 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PatchClientCredentialResponseContent) SetThumbprintSha256(thumbprintSha256 *string) {
	p.ThumbprintSha256 = thumbprintSha256
	p.require(patchClientCredentialResponseContentFieldThumbprintSha256)
}

// 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 (p *PatchClientCredentialResponseContent) SetCreatedAt(createdAt *time.Time) {
	p.CreatedAt = createdAt
	p.require(patchClientCredentialResponseContentFieldCreatedAt)
}

// 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 (p *PatchClientCredentialResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	p.UpdatedAt = updatedAt
	p.require(patchClientCredentialResponseContentFieldUpdatedAt)
}

// SetExpiresAt sets the ExpiresAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PatchClientCredentialResponseContent) SetExpiresAt(expiresAt *time.Time) {
	p.ExpiresAt = expiresAt
	p.require(patchClientCredentialResponseContentFieldExpiresAt)
}

func (p *PatchClientCredentialResponseContent) UnmarshalJSON(data []byte) error {
	type embed PatchClientCredentialResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed: embed(*p),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*p = PatchClientCredentialResponseContent(unmarshaler.embed)
	p.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	p.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	p.ExpiresAt = unmarshaler.ExpiresAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *p)
	if err != nil {
		return err
	}
	p.ExtraProperties = extraProperties
	p.rawJSON = json.RawMessage(data)
	return nil
}

func (p *PatchClientCredentialResponseContent) MarshalJSON() ([]byte, error) {
	type embed PatchClientCredentialResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed:     embed(*p),
		CreatedAt: internal.NewOptionalDateTime(p.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(p.UpdatedAt),
		ExpiresAt: internal.NewOptionalDateTime(p.ExpiresAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, p.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, p.ExtraProperties)
}

func (p *PatchClientCredentialResponseContent) String() string {
	if len(p.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(p.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(p); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", p)
}

var (
	permissionRequestPayloadFieldResourceServerIdentifier = big.NewInt(1 << 0)
	permissionRequestPayloadFieldPermissionName           = big.NewInt(1 << 1)
)

type PermissionRequestPayload struct {
	// Resource server (API) identifier that this permission is for.
	ResourceServerIdentifier string `json:"resource_server_identifier" url:"resource_server_identifier"`
	// Name of this permission.
	PermissionName string `json:"permission_name" url:"permission_name"`

	// 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 (p *PermissionRequestPayload) GetResourceServerIdentifier() string {
	if p == nil {
		return ""
	}
	return p.ResourceServerIdentifier
}

func (p *PermissionRequestPayload) GetPermissionName() string {
	if p == nil {
		return ""
	}
	return p.PermissionName
}

func (p *PermissionRequestPayload) GetExtraProperties() map[string]interface{} {
	return p.extraProperties
}

func (p *PermissionRequestPayload) require(field *big.Int) {
	if p.explicitFields == nil {
		p.explicitFields = big.NewInt(0)
	}
	p.explicitFields.Or(p.explicitFields, field)
}

// SetResourceServerIdentifier sets the ResourceServerIdentifier field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PermissionRequestPayload) SetResourceServerIdentifier(resourceServerIdentifier string) {
	p.ResourceServerIdentifier = resourceServerIdentifier
	p.require(permissionRequestPayloadFieldResourceServerIdentifier)
}

// SetPermissionName sets the PermissionName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PermissionRequestPayload) SetPermissionName(permissionName string) {
	p.PermissionName = permissionName
	p.require(permissionRequestPayloadFieldPermissionName)
}

func (p *PermissionRequestPayload) UnmarshalJSON(data []byte) error {
	type unmarshaler PermissionRequestPayload
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*p = PermissionRequestPayload(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *p)
	if err != nil {
		return err
	}
	p.extraProperties = extraProperties
	p.rawJSON = json.RawMessage(data)
	return nil
}

func (p *PermissionRequestPayload) MarshalJSON() ([]byte, error) {
	type embed PermissionRequestPayload
	var marshaler = struct {
		embed
	}{
		embed: embed(*p),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, p.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (p *PermissionRequestPayload) String() string {
	if len(p.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(p.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(p); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", p)
}

var (
	permissionsResponsePayloadFieldResourceServerIdentifier = big.NewInt(1 << 0)
	permissionsResponsePayloadFieldPermissionName           = big.NewInt(1 << 1)
	permissionsResponsePayloadFieldResourceServerName       = big.NewInt(1 << 2)
	permissionsResponsePayloadFieldDescription              = big.NewInt(1 << 3)
)

type PermissionsResponsePayload struct {
	// Resource server (API) identifier that this permission is for.
	ResourceServerIdentifier *string `json:"resource_server_identifier,omitempty" url:"resource_server_identifier,omitempty"`
	// Name of this permission.
	PermissionName *string `json:"permission_name,omitempty" url:"permission_name,omitempty"`
	// Resource server (API) name this permission is for.
	ResourceServerName *string `json:"resource_server_name,omitempty" url:"resource_server_name,omitempty"`
	// Description of this permission.
	Description *string `json:"description,omitempty" url:"description,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 (p *PermissionsResponsePayload) GetResourceServerIdentifier() string {
	if p == nil || p.ResourceServerIdentifier == nil {
		return ""
	}
	return *p.ResourceServerIdentifier
}

func (p *PermissionsResponsePayload) GetPermissionName() string {
	if p == nil || p.PermissionName == nil {
		return ""
	}
	return *p.PermissionName
}

func (p *PermissionsResponsePayload) GetResourceServerName() string {
	if p == nil || p.ResourceServerName == nil {
		return ""
	}
	return *p.ResourceServerName
}

func (p *PermissionsResponsePayload) GetDescription() string {
	if p == nil || p.Description == nil {
		return ""
	}
	return *p.Description
}

func (p *PermissionsResponsePayload) GetExtraProperties() map[string]interface{} {
	return p.extraProperties
}

func (p *PermissionsResponsePayload) require(field *big.Int) {
	if p.explicitFields == nil {
		p.explicitFields = big.NewInt(0)
	}
	p.explicitFields.Or(p.explicitFields, field)
}

// SetResourceServerIdentifier sets the ResourceServerIdentifier field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PermissionsResponsePayload) SetResourceServerIdentifier(resourceServerIdentifier *string) {
	p.ResourceServerIdentifier = resourceServerIdentifier
	p.require(permissionsResponsePayloadFieldResourceServerIdentifier)
}

// SetPermissionName sets the PermissionName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PermissionsResponsePayload) SetPermissionName(permissionName *string) {
	p.PermissionName = permissionName
	p.require(permissionsResponsePayloadFieldPermissionName)
}

// SetResourceServerName sets the ResourceServerName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PermissionsResponsePayload) SetResourceServerName(resourceServerName *string) {
	p.ResourceServerName = resourceServerName
	p.require(permissionsResponsePayloadFieldResourceServerName)
}

// SetDescription sets the Description field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PermissionsResponsePayload) SetDescription(description *string) {
	p.Description = description
	p.require(permissionsResponsePayloadFieldDescription)
}

func (p *PermissionsResponsePayload) UnmarshalJSON(data []byte) error {
	type unmarshaler PermissionsResponsePayload
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*p = PermissionsResponsePayload(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *p)
	if err != nil {
		return err
	}
	p.extraProperties = extraProperties
	p.rawJSON = json.RawMessage(data)
	return nil
}

func (p *PermissionsResponsePayload) MarshalJSON() ([]byte, error) {
	type embed PermissionsResponsePayload
	var marshaler = struct {
		embed
	}{
		embed: embed(*p),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, p.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (p *PermissionsResponsePayload) String() string {
	if len(p.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(p.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(p); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", p)
}

// This depicts the type of notifications this provider can receive.
type PhoneProviderChannelEnum = string

type PhoneProviderConfiguration struct {
	TwilioProviderConfiguration *TwilioProviderConfiguration
	CustomProviderConfiguration *CustomProviderConfiguration

	typ string
}

func (p *PhoneProviderConfiguration) GetTwilioProviderConfiguration() *TwilioProviderConfiguration {
	if p == nil {
		return nil
	}
	return p.TwilioProviderConfiguration
}

func (p *PhoneProviderConfiguration) GetCustomProviderConfiguration() *CustomProviderConfiguration {
	if p == nil {
		return nil
	}
	return p.CustomProviderConfiguration
}

func (p *PhoneProviderConfiguration) UnmarshalJSON(data []byte) error {
	valueTwilioProviderConfiguration := new(TwilioProviderConfiguration)
	if err := json.Unmarshal(data, &valueTwilioProviderConfiguration); err == nil {
		p.typ = "TwilioProviderConfiguration"
		p.TwilioProviderConfiguration = valueTwilioProviderConfiguration
		return nil
	}
	valueCustomProviderConfiguration := new(CustomProviderConfiguration)
	if err := json.Unmarshal(data, &valueCustomProviderConfiguration); err == nil {
		p.typ = "CustomProviderConfiguration"
		p.CustomProviderConfiguration = valueCustomProviderConfiguration
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, p)
}

func (p PhoneProviderConfiguration) MarshalJSON() ([]byte, error) {
	if p.typ == "TwilioProviderConfiguration" || p.TwilioProviderConfiguration != nil {
		return json.Marshal(p.TwilioProviderConfiguration)
	}
	if p.typ == "CustomProviderConfiguration" || p.CustomProviderConfiguration != nil {
		return json.Marshal(p.CustomProviderConfiguration)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", p)
}

type PhoneProviderConfigurationVisitor interface {
	VisitTwilioProviderConfiguration(*TwilioProviderConfiguration) error
	VisitCustomProviderConfiguration(*CustomProviderConfiguration) error
}

func (p *PhoneProviderConfiguration) Accept(visitor PhoneProviderConfigurationVisitor) error {
	if p.typ == "TwilioProviderConfiguration" || p.TwilioProviderConfiguration != nil {
		return visitor.VisitTwilioProviderConfiguration(p.TwilioProviderConfiguration)
	}
	if p.typ == "CustomProviderConfiguration" || p.CustomProviderConfiguration != nil {
		return visitor.VisitCustomProviderConfiguration(p.CustomProviderConfiguration)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", p)
}

// Provider credentials required to use authenticate to the provider.
type PhoneProviderCredentials struct {
	TwilioProviderCredentials *TwilioProviderCredentials
	CustomProviderCredentials *CustomProviderCredentials

	typ string
}

func (p *PhoneProviderCredentials) GetTwilioProviderCredentials() *TwilioProviderCredentials {
	if p == nil {
		return nil
	}
	return p.TwilioProviderCredentials
}

func (p *PhoneProviderCredentials) GetCustomProviderCredentials() *CustomProviderCredentials {
	if p == nil {
		return nil
	}
	return p.CustomProviderCredentials
}

func (p *PhoneProviderCredentials) UnmarshalJSON(data []byte) error {
	valueTwilioProviderCredentials := new(TwilioProviderCredentials)
	if err := json.Unmarshal(data, &valueTwilioProviderCredentials); err == nil {
		p.typ = "TwilioProviderCredentials"
		p.TwilioProviderCredentials = valueTwilioProviderCredentials
		return nil
	}
	valueCustomProviderCredentials := new(CustomProviderCredentials)
	if err := json.Unmarshal(data, &valueCustomProviderCredentials); err == nil {
		p.typ = "CustomProviderCredentials"
		p.CustomProviderCredentials = valueCustomProviderCredentials
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, p)
}

func (p PhoneProviderCredentials) MarshalJSON() ([]byte, error) {
	if p.typ == "TwilioProviderCredentials" || p.TwilioProviderCredentials != nil {
		return json.Marshal(p.TwilioProviderCredentials)
	}
	if p.typ == "CustomProviderCredentials" || p.CustomProviderCredentials != nil {
		return json.Marshal(p.CustomProviderCredentials)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", p)
}

type PhoneProviderCredentialsVisitor interface {
	VisitTwilioProviderCredentials(*TwilioProviderCredentials) error
	VisitCustomProviderCredentials(*CustomProviderCredentials) error
}

func (p *PhoneProviderCredentials) Accept(visitor PhoneProviderCredentialsVisitor) error {
	if p.typ == "TwilioProviderCredentials" || p.TwilioProviderCredentials != nil {
		return visitor.VisitTwilioProviderCredentials(p.TwilioProviderCredentials)
	}
	if p.typ == "CustomProviderCredentials" || p.CustomProviderCredentials != nil {
		return visitor.VisitCustomProviderCredentials(p.CustomProviderCredentials)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", p)
}

// The delivery method for the notification
type PhoneProviderDeliveryMethodEnum string

const (
	PhoneProviderDeliveryMethodEnumText  PhoneProviderDeliveryMethodEnum = "text"
	PhoneProviderDeliveryMethodEnumVoice PhoneProviderDeliveryMethodEnum = "voice"
)

func NewPhoneProviderDeliveryMethodEnumFromString(s string) (PhoneProviderDeliveryMethodEnum, error) {
	switch s {
	case "text":
		return PhoneProviderDeliveryMethodEnumText, nil
	case "voice":
		return PhoneProviderDeliveryMethodEnumVoice, nil
	}
	var t PhoneProviderDeliveryMethodEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (p PhoneProviderDeliveryMethodEnum) Ptr() *PhoneProviderDeliveryMethodEnum {
	return &p
}

// Name of the phone notification provider
type PhoneProviderNameEnum string

const (
	PhoneProviderNameEnumTwilio PhoneProviderNameEnum = "twilio"
	PhoneProviderNameEnumCustom PhoneProviderNameEnum = "custom"
)

func NewPhoneProviderNameEnumFromString(s string) (PhoneProviderNameEnum, error) {
	switch s {
	case "twilio":
		return PhoneProviderNameEnumTwilio, nil
	case "custom":
		return PhoneProviderNameEnumCustom, nil
	}
	var t PhoneProviderNameEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (p PhoneProviderNameEnum) Ptr() *PhoneProviderNameEnum {
	return &p
}

// Phone provider configuration schema
var (
	phoneProviderSchemaMaskedFieldID            = big.NewInt(1 << 0)
	phoneProviderSchemaMaskedFieldTenant        = big.NewInt(1 << 1)
	phoneProviderSchemaMaskedFieldName          = big.NewInt(1 << 2)
	phoneProviderSchemaMaskedFieldChannel       = big.NewInt(1 << 3)
	phoneProviderSchemaMaskedFieldDisabled      = big.NewInt(1 << 4)
	phoneProviderSchemaMaskedFieldConfiguration = big.NewInt(1 << 5)
	phoneProviderSchemaMaskedFieldCreatedAt     = big.NewInt(1 << 6)
	phoneProviderSchemaMaskedFieldUpdatedAt     = big.NewInt(1 << 7)
)

type PhoneProviderSchemaMasked struct {
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name of the tenant
	Tenant  *string                   `json:"tenant,omitempty" url:"tenant,omitempty"`
	Name    PhoneProviderNameEnum     `json:"name" url:"name"`
	Channel *PhoneProviderChannelEnum `json:"channel,omitempty" url:"channel,omitempty"`
	// Whether the provider is enabled (false) or disabled (true).
	Disabled      *bool                       `json:"disabled,omitempty" url:"disabled,omitempty"`
	Configuration *PhoneProviderConfiguration `json:"configuration,omitempty" url:"configuration,omitempty"`
	// The provider's creation date and time in ISO 8601 format
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The date and time of the last update to the provider in ISO 8601 format
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,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 (p *PhoneProviderSchemaMasked) GetID() string {
	if p == nil || p.ID == nil {
		return ""
	}
	return *p.ID
}

func (p *PhoneProviderSchemaMasked) GetTenant() string {
	if p == nil || p.Tenant == nil {
		return ""
	}
	return *p.Tenant
}

func (p *PhoneProviderSchemaMasked) GetName() PhoneProviderNameEnum {
	if p == nil {
		return ""
	}
	return p.Name
}

func (p *PhoneProviderSchemaMasked) GetDisabled() bool {
	if p == nil || p.Disabled == nil {
		return false
	}
	return *p.Disabled
}

func (p *PhoneProviderSchemaMasked) GetConfiguration() PhoneProviderConfiguration {
	if p == nil || p.Configuration == nil {
		return PhoneProviderConfiguration{}
	}
	return *p.Configuration
}

func (p *PhoneProviderSchemaMasked) GetCreatedAt() time.Time {
	if p == nil || p.CreatedAt == nil {
		return time.Time{}
	}
	return *p.CreatedAt
}

func (p *PhoneProviderSchemaMasked) GetUpdatedAt() time.Time {
	if p == nil || p.UpdatedAt == nil {
		return time.Time{}
	}
	return *p.UpdatedAt
}

func (p *PhoneProviderSchemaMasked) GetExtraProperties() map[string]interface{} {
	return p.extraProperties
}

func (p *PhoneProviderSchemaMasked) require(field *big.Int) {
	if p.explicitFields == nil {
		p.explicitFields = big.NewInt(0)
	}
	p.explicitFields.Or(p.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 (p *PhoneProviderSchemaMasked) SetID(id *string) {
	p.ID = id
	p.require(phoneProviderSchemaMaskedFieldID)
}

// SetTenant sets the Tenant field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneProviderSchemaMasked) SetTenant(tenant *string) {
	p.Tenant = tenant
	p.require(phoneProviderSchemaMaskedFieldTenant)
}

// 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 (p *PhoneProviderSchemaMasked) SetName(name PhoneProviderNameEnum) {
	p.Name = name
	p.require(phoneProviderSchemaMaskedFieldName)
}

// SetChannel sets the Channel field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneProviderSchemaMasked) SetChannel(channel *PhoneProviderChannelEnum) {
	p.Channel = channel
	p.require(phoneProviderSchemaMaskedFieldChannel)
}

// SetDisabled sets the Disabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneProviderSchemaMasked) SetDisabled(disabled *bool) {
	p.Disabled = disabled
	p.require(phoneProviderSchemaMaskedFieldDisabled)
}

// SetConfiguration sets the Configuration field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneProviderSchemaMasked) SetConfiguration(configuration *PhoneProviderConfiguration) {
	p.Configuration = configuration
	p.require(phoneProviderSchemaMaskedFieldConfiguration)
}

// 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 (p *PhoneProviderSchemaMasked) SetCreatedAt(createdAt *time.Time) {
	p.CreatedAt = createdAt
	p.require(phoneProviderSchemaMaskedFieldCreatedAt)
}

// 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 (p *PhoneProviderSchemaMasked) SetUpdatedAt(updatedAt *time.Time) {
	p.UpdatedAt = updatedAt
	p.require(phoneProviderSchemaMaskedFieldUpdatedAt)
}

func (p *PhoneProviderSchemaMasked) UnmarshalJSON(data []byte) error {
	type embed PhoneProviderSchemaMasked
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*p),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*p = PhoneProviderSchemaMasked(unmarshaler.embed)
	p.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	p.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *p)
	if err != nil {
		return err
	}
	p.extraProperties = extraProperties
	p.rawJSON = json.RawMessage(data)
	return nil
}

func (p *PhoneProviderSchemaMasked) MarshalJSON() ([]byte, error) {
	type embed PhoneProviderSchemaMasked
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*p),
		CreatedAt: internal.NewOptionalDateTime(p.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(p.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, p.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (p *PhoneProviderSchemaMasked) String() string {
	if len(p.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(p.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(p); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", p)
}

var (
	phoneTemplateFieldID           = big.NewInt(1 << 0)
	phoneTemplateFieldChannel      = big.NewInt(1 << 1)
	phoneTemplateFieldCustomizable = big.NewInt(1 << 2)
	phoneTemplateFieldTenant       = big.NewInt(1 << 3)
	phoneTemplateFieldContent      = big.NewInt(1 << 4)
	phoneTemplateFieldType         = big.NewInt(1 << 5)
	phoneTemplateFieldDisabled     = big.NewInt(1 << 6)
)

type PhoneTemplate struct {
	ID           string                            `json:"id" url:"id"`
	Channel      *string                           `json:"channel,omitempty" url:"channel,omitempty"`
	Customizable *bool                             `json:"customizable,omitempty" url:"customizable,omitempty"`
	Tenant       *string                           `json:"tenant,omitempty" url:"tenant,omitempty"`
	Content      *PhoneTemplateContent             `json:"content" url:"content"`
	Type         PhoneTemplateNotificationTypeEnum `json:"type" url:"type"`
	// Whether the template is enabled (false) or disabled (true).
	Disabled bool `json:"disabled" url:"disabled"`

	// 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 (p *PhoneTemplate) GetID() string {
	if p == nil {
		return ""
	}
	return p.ID
}

func (p *PhoneTemplate) GetChannel() string {
	if p == nil || p.Channel == nil {
		return ""
	}
	return *p.Channel
}

func (p *PhoneTemplate) GetCustomizable() bool {
	if p == nil || p.Customizable == nil {
		return false
	}
	return *p.Customizable
}

func (p *PhoneTemplate) GetTenant() string {
	if p == nil || p.Tenant == nil {
		return ""
	}
	return *p.Tenant
}

func (p *PhoneTemplate) GetContent() *PhoneTemplateContent {
	if p == nil {
		return nil
	}
	return p.Content
}

func (p *PhoneTemplate) GetType() PhoneTemplateNotificationTypeEnum {
	if p == nil {
		return ""
	}
	return p.Type
}

func (p *PhoneTemplate) GetDisabled() bool {
	if p == nil {
		return false
	}
	return p.Disabled
}

func (p *PhoneTemplate) GetExtraProperties() map[string]interface{} {
	return p.extraProperties
}

func (p *PhoneTemplate) require(field *big.Int) {
	if p.explicitFields == nil {
		p.explicitFields = big.NewInt(0)
	}
	p.explicitFields.Or(p.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 (p *PhoneTemplate) SetID(id string) {
	p.ID = id
	p.require(phoneTemplateFieldID)
}

// SetChannel sets the Channel field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneTemplate) SetChannel(channel *string) {
	p.Channel = channel
	p.require(phoneTemplateFieldChannel)
}

// SetCustomizable sets the Customizable field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneTemplate) SetCustomizable(customizable *bool) {
	p.Customizable = customizable
	p.require(phoneTemplateFieldCustomizable)
}

// SetTenant sets the Tenant field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneTemplate) SetTenant(tenant *string) {
	p.Tenant = tenant
	p.require(phoneTemplateFieldTenant)
}

// SetContent sets the Content field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneTemplate) SetContent(content *PhoneTemplateContent) {
	p.Content = content
	p.require(phoneTemplateFieldContent)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneTemplate) SetType(type_ PhoneTemplateNotificationTypeEnum) {
	p.Type = type_
	p.require(phoneTemplateFieldType)
}

// SetDisabled sets the Disabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneTemplate) SetDisabled(disabled bool) {
	p.Disabled = disabled
	p.require(phoneTemplateFieldDisabled)
}

func (p *PhoneTemplate) UnmarshalJSON(data []byte) error {
	type unmarshaler PhoneTemplate
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*p = PhoneTemplate(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *p)
	if err != nil {
		return err
	}
	p.extraProperties = extraProperties
	p.rawJSON = json.RawMessage(data)
	return nil
}

func (p *PhoneTemplate) MarshalJSON() ([]byte, error) {
	type embed PhoneTemplate
	var marshaler = struct {
		embed
	}{
		embed: embed(*p),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, p.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (p *PhoneTemplate) String() string {
	if len(p.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(p.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(p); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", p)
}

var (
	phoneTemplateBodyFieldText  = big.NewInt(1 << 0)
	phoneTemplateBodyFieldVoice = big.NewInt(1 << 1)
)

type PhoneTemplateBody struct {
	// Content of the phone template for text notifications
	Text *string `json:"text,omitempty" url:"text,omitempty"`
	// Content of the phone template for voice notifications
	Voice *string `json:"voice,omitempty" url:"voice,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 (p *PhoneTemplateBody) GetText() string {
	if p == nil || p.Text == nil {
		return ""
	}
	return *p.Text
}

func (p *PhoneTemplateBody) GetVoice() string {
	if p == nil || p.Voice == nil {
		return ""
	}
	return *p.Voice
}

func (p *PhoneTemplateBody) GetExtraProperties() map[string]interface{} {
	return p.extraProperties
}

func (p *PhoneTemplateBody) require(field *big.Int) {
	if p.explicitFields == nil {
		p.explicitFields = big.NewInt(0)
	}
	p.explicitFields.Or(p.explicitFields, field)
}

// SetText sets the Text field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneTemplateBody) SetText(text *string) {
	p.Text = text
	p.require(phoneTemplateBodyFieldText)
}

// SetVoice sets the Voice field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneTemplateBody) SetVoice(voice *string) {
	p.Voice = voice
	p.require(phoneTemplateBodyFieldVoice)
}

func (p *PhoneTemplateBody) UnmarshalJSON(data []byte) error {
	type unmarshaler PhoneTemplateBody
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*p = PhoneTemplateBody(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *p)
	if err != nil {
		return err
	}
	p.extraProperties = extraProperties
	p.rawJSON = json.RawMessage(data)
	return nil
}

func (p *PhoneTemplateBody) MarshalJSON() ([]byte, error) {
	type embed PhoneTemplateBody
	var marshaler = struct {
		embed
	}{
		embed: embed(*p),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, p.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (p *PhoneTemplateBody) String() string {
	if len(p.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(p.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(p); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", p)
}

var (
	phoneTemplateContentFieldSyntax = big.NewInt(1 << 0)
	phoneTemplateContentFieldFrom   = big.NewInt(1 << 1)
	phoneTemplateContentFieldBody   = big.NewInt(1 << 2)
)

type PhoneTemplateContent struct {
	Syntax *string `json:"syntax,omitempty" url:"syntax,omitempty"`
	// Default phone number to be used as 'from' when sending a phone notification
	From *string            `json:"from,omitempty" url:"from,omitempty"`
	Body *PhoneTemplateBody `json:"body,omitempty" url:"body,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 (p *PhoneTemplateContent) GetSyntax() string {
	if p == nil || p.Syntax == nil {
		return ""
	}
	return *p.Syntax
}

func (p *PhoneTemplateContent) GetFrom() string {
	if p == nil || p.From == nil {
		return ""
	}
	return *p.From
}

func (p *PhoneTemplateContent) GetBody() PhoneTemplateBody {
	if p == nil || p.Body == nil {
		return PhoneTemplateBody{}
	}
	return *p.Body
}

func (p *PhoneTemplateContent) GetExtraProperties() map[string]interface{} {
	return p.extraProperties
}

func (p *PhoneTemplateContent) require(field *big.Int) {
	if p.explicitFields == nil {
		p.explicitFields = big.NewInt(0)
	}
	p.explicitFields.Or(p.explicitFields, field)
}

// SetSyntax sets the Syntax field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneTemplateContent) SetSyntax(syntax *string) {
	p.Syntax = syntax
	p.require(phoneTemplateContentFieldSyntax)
}

// SetFrom sets the From field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneTemplateContent) SetFrom(from *string) {
	p.From = from
	p.require(phoneTemplateContentFieldFrom)
}

// SetBody sets the Body field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PhoneTemplateContent) SetBody(body *PhoneTemplateBody) {
	p.Body = body
	p.require(phoneTemplateContentFieldBody)
}

func (p *PhoneTemplateContent) UnmarshalJSON(data []byte) error {
	type unmarshaler PhoneTemplateContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*p = PhoneTemplateContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *p)
	if err != nil {
		return err
	}
	p.extraProperties = extraProperties
	p.rawJSON = json.RawMessage(data)
	return nil
}

func (p *PhoneTemplateContent) MarshalJSON() ([]byte, error) {
	type embed PhoneTemplateContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*p),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, p.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (p *PhoneTemplateContent) String() string {
	if len(p.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(p.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(p); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", p)
}

type PhoneTemplateNotificationTypeEnum string

const (
	PhoneTemplateNotificationTypeEnumOtpVerify      PhoneTemplateNotificationTypeEnum = "otp_verify"
	PhoneTemplateNotificationTypeEnumOtpEnroll      PhoneTemplateNotificationTypeEnum = "otp_enroll"
	PhoneTemplateNotificationTypeEnumChangePassword PhoneTemplateNotificationTypeEnum = "change_password"
	PhoneTemplateNotificationTypeEnumBlockedAccount PhoneTemplateNotificationTypeEnum = "blocked_account"
	PhoneTemplateNotificationTypeEnumPasswordBreach PhoneTemplateNotificationTypeEnum = "password_breach"
)

func NewPhoneTemplateNotificationTypeEnumFromString(s string) (PhoneTemplateNotificationTypeEnum, error) {
	switch s {
	case "otp_verify":
		return PhoneTemplateNotificationTypeEnumOtpVerify, nil
	case "otp_enroll":
		return PhoneTemplateNotificationTypeEnumOtpEnroll, nil
	case "change_password":
		return PhoneTemplateNotificationTypeEnumChangePassword, nil
	case "blocked_account":
		return PhoneTemplateNotificationTypeEnumBlockedAccount, nil
	case "password_breach":
		return PhoneTemplateNotificationTypeEnumPasswordBreach, nil
	}
	var t PhoneTemplateNotificationTypeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (p PhoneTemplateNotificationTypeEnum) Ptr() *PhoneTemplateNotificationTypeEnum {
	return &p
}

var (
	postClientCredentialResponseContentFieldID               = big.NewInt(1 << 0)
	postClientCredentialResponseContentFieldName             = big.NewInt(1 << 1)
	postClientCredentialResponseContentFieldKid              = big.NewInt(1 << 2)
	postClientCredentialResponseContentFieldAlg              = big.NewInt(1 << 3)
	postClientCredentialResponseContentFieldCredentialType   = big.NewInt(1 << 4)
	postClientCredentialResponseContentFieldSubjectDn        = big.NewInt(1 << 5)
	postClientCredentialResponseContentFieldThumbprintSha256 = big.NewInt(1 << 6)
	postClientCredentialResponseContentFieldCreatedAt        = big.NewInt(1 << 7)
	postClientCredentialResponseContentFieldUpdatedAt        = big.NewInt(1 << 8)
	postClientCredentialResponseContentFieldExpiresAt        = big.NewInt(1 << 9)
)

type PostClientCredentialResponseContent struct {
	// ID of the credential. Generated on creation.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name given to the credential by the user.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// The key identifier of the credential, generated on creation.
	Kid            *string                        `json:"kid,omitempty" url:"kid,omitempty"`
	Alg            *ClientCredentialAlgorithmEnum `json:"alg,omitempty" url:"alg,omitempty"`
	CredentialType *ClientCredentialTypeEnum      `json:"credential_type,omitempty" url:"credential_type,omitempty"`
	// The X509 certificate's Subject Distinguished Name
	SubjectDn *string `json:"subject_dn,omitempty" url:"subject_dn,omitempty"`
	// The X509 certificate's SHA256 thumbprint
	ThumbprintSha256 *string `json:"thumbprint_sha256,omitempty" url:"thumbprint_sha256,omitempty"`
	// The ISO 8601 formatted date the credential was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The ISO 8601 formatted date the credential was updated.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,omitempty"`
	// The ISO 8601 formatted date representing the expiration of the credential.
	ExpiresAt *time.Time `json:"expires_at,omitempty" url:"expires_at,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (p *PostClientCredentialResponseContent) GetID() string {
	if p == nil || p.ID == nil {
		return ""
	}
	return *p.ID
}

func (p *PostClientCredentialResponseContent) GetName() string {
	if p == nil || p.Name == nil {
		return ""
	}
	return *p.Name
}

func (p *PostClientCredentialResponseContent) GetKid() string {
	if p == nil || p.Kid == nil {
		return ""
	}
	return *p.Kid
}

func (p *PostClientCredentialResponseContent) GetAlg() ClientCredentialAlgorithmEnum {
	if p == nil || p.Alg == nil {
		return ""
	}
	return *p.Alg
}

func (p *PostClientCredentialResponseContent) GetCredentialType() ClientCredentialTypeEnum {
	if p == nil || p.CredentialType == nil {
		return ""
	}
	return *p.CredentialType
}

func (p *PostClientCredentialResponseContent) GetSubjectDn() string {
	if p == nil || p.SubjectDn == nil {
		return ""
	}
	return *p.SubjectDn
}

func (p *PostClientCredentialResponseContent) GetThumbprintSha256() string {
	if p == nil || p.ThumbprintSha256 == nil {
		return ""
	}
	return *p.ThumbprintSha256
}

func (p *PostClientCredentialResponseContent) GetCreatedAt() time.Time {
	if p == nil || p.CreatedAt == nil {
		return time.Time{}
	}
	return *p.CreatedAt
}

func (p *PostClientCredentialResponseContent) GetUpdatedAt() time.Time {
	if p == nil || p.UpdatedAt == nil {
		return time.Time{}
	}
	return *p.UpdatedAt
}

func (p *PostClientCredentialResponseContent) GetExpiresAt() time.Time {
	if p == nil || p.ExpiresAt == nil {
		return time.Time{}
	}
	return *p.ExpiresAt
}

func (p *PostClientCredentialResponseContent) GetExtraProperties() map[string]interface{} {
	return p.ExtraProperties
}

func (p *PostClientCredentialResponseContent) require(field *big.Int) {
	if p.explicitFields == nil {
		p.explicitFields = big.NewInt(0)
	}
	p.explicitFields.Or(p.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 (p *PostClientCredentialResponseContent) SetID(id *string) {
	p.ID = id
	p.require(postClientCredentialResponseContentFieldID)
}

// 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 (p *PostClientCredentialResponseContent) SetName(name *string) {
	p.Name = name
	p.require(postClientCredentialResponseContentFieldName)
}

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PostClientCredentialResponseContent) SetKid(kid *string) {
	p.Kid = kid
	p.require(postClientCredentialResponseContentFieldKid)
}

// SetAlg sets the Alg field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PostClientCredentialResponseContent) SetAlg(alg *ClientCredentialAlgorithmEnum) {
	p.Alg = alg
	p.require(postClientCredentialResponseContentFieldAlg)
}

// SetCredentialType sets the CredentialType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PostClientCredentialResponseContent) SetCredentialType(credentialType *ClientCredentialTypeEnum) {
	p.CredentialType = credentialType
	p.require(postClientCredentialResponseContentFieldCredentialType)
}

// SetSubjectDn sets the SubjectDn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PostClientCredentialResponseContent) SetSubjectDn(subjectDn *string) {
	p.SubjectDn = subjectDn
	p.require(postClientCredentialResponseContentFieldSubjectDn)
}

// SetThumbprintSha256 sets the ThumbprintSha256 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PostClientCredentialResponseContent) SetThumbprintSha256(thumbprintSha256 *string) {
	p.ThumbprintSha256 = thumbprintSha256
	p.require(postClientCredentialResponseContentFieldThumbprintSha256)
}

// 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 (p *PostClientCredentialResponseContent) SetCreatedAt(createdAt *time.Time) {
	p.CreatedAt = createdAt
	p.require(postClientCredentialResponseContentFieldCreatedAt)
}

// 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 (p *PostClientCredentialResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	p.UpdatedAt = updatedAt
	p.require(postClientCredentialResponseContentFieldUpdatedAt)
}

// SetExpiresAt sets the ExpiresAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (p *PostClientCredentialResponseContent) SetExpiresAt(expiresAt *time.Time) {
	p.ExpiresAt = expiresAt
	p.require(postClientCredentialResponseContentFieldExpiresAt)
}

func (p *PostClientCredentialResponseContent) UnmarshalJSON(data []byte) error {
	type embed PostClientCredentialResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed: embed(*p),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*p = PostClientCredentialResponseContent(unmarshaler.embed)
	p.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	p.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	p.ExpiresAt = unmarshaler.ExpiresAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *p)
	if err != nil {
		return err
	}
	p.ExtraProperties = extraProperties
	p.rawJSON = json.RawMessage(data)
	return nil
}

func (p *PostClientCredentialResponseContent) MarshalJSON() ([]byte, error) {
	type embed PostClientCredentialResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
		ExpiresAt *internal.DateTime `json:"expires_at,omitempty"`
	}{
		embed:     embed(*p),
		CreatedAt: internal.NewOptionalDateTime(p.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(p.UpdatedAt),
		ExpiresAt: internal.NewOptionalDateTime(p.ExpiresAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, p.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, p.ExtraProperties)
}

func (p *PostClientCredentialResponseContent) String() string {
	if len(p.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(p.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(p); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", p)
}

// Applies to phone authentication methods only. The preferred communication method.
type PreferredAuthenticationMethodEnum string

const (
	PreferredAuthenticationMethodEnumVoice PreferredAuthenticationMethodEnum = "voice"
	PreferredAuthenticationMethodEnumSms   PreferredAuthenticationMethodEnum = "sms"
)

func NewPreferredAuthenticationMethodEnumFromString(s string) (PreferredAuthenticationMethodEnum, error) {
	switch s {
	case "voice":
		return PreferredAuthenticationMethodEnumVoice, nil
	case "sms":
		return PreferredAuthenticationMethodEnumSms, nil
	}
	var t PreferredAuthenticationMethodEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (p PreferredAuthenticationMethodEnum) Ptr() *PreferredAuthenticationMethodEnum {
	return &p
}

// Name of the prompt.
type PromptGroupNameEnum string

const (
	PromptGroupNameEnumLogin                     PromptGroupNameEnum = "login"
	PromptGroupNameEnumLoginID                   PromptGroupNameEnum = "login-id"
	PromptGroupNameEnumLoginPassword             PromptGroupNameEnum = "login-password"
	PromptGroupNameEnumLoginPasswordless         PromptGroupNameEnum = "login-passwordless"
	PromptGroupNameEnumLoginEmailVerification    PromptGroupNameEnum = "login-email-verification"
	PromptGroupNameEnumSignup                    PromptGroupNameEnum = "signup"
	PromptGroupNameEnumSignupID                  PromptGroupNameEnum = "signup-id"
	PromptGroupNameEnumSignupPassword            PromptGroupNameEnum = "signup-password"
	PromptGroupNameEnumPhoneIdentifierEnrollment PromptGroupNameEnum = "phone-identifier-enrollment"
	PromptGroupNameEnumPhoneIdentifierChallenge  PromptGroupNameEnum = "phone-identifier-challenge"
	PromptGroupNameEnumEmailIdentifierChallenge  PromptGroupNameEnum = "email-identifier-challenge"
	PromptGroupNameEnumResetPassword             PromptGroupNameEnum = "reset-password"
	PromptGroupNameEnumCustomForm                PromptGroupNameEnum = "custom-form"
	PromptGroupNameEnumConsent                   PromptGroupNameEnum = "consent"
	PromptGroupNameEnumCustomizedConsent         PromptGroupNameEnum = "customized-consent"
	PromptGroupNameEnumLogout                    PromptGroupNameEnum = "logout"
	PromptGroupNameEnumMfaPush                   PromptGroupNameEnum = "mfa-push"
	PromptGroupNameEnumMfaOtp                    PromptGroupNameEnum = "mfa-otp"
	PromptGroupNameEnumMfaVoice                  PromptGroupNameEnum = "mfa-voice"
	PromptGroupNameEnumMfaPhone                  PromptGroupNameEnum = "mfa-phone"
	PromptGroupNameEnumMfaWebauthn               PromptGroupNameEnum = "mfa-webauthn"
	PromptGroupNameEnumMfaSms                    PromptGroupNameEnum = "mfa-sms"
	PromptGroupNameEnumMfaEmail                  PromptGroupNameEnum = "mfa-email"
	PromptGroupNameEnumMfaRecoveryCode           PromptGroupNameEnum = "mfa-recovery-code"
	PromptGroupNameEnumMfa                       PromptGroupNameEnum = "mfa"
	PromptGroupNameEnumStatus                    PromptGroupNameEnum = "status"
	PromptGroupNameEnumDeviceFlow                PromptGroupNameEnum = "device-flow"
	PromptGroupNameEnumEmailVerification         PromptGroupNameEnum = "email-verification"
	PromptGroupNameEnumEmailOtpChallenge         PromptGroupNameEnum = "email-otp-challenge"
	PromptGroupNameEnumOrganizations             PromptGroupNameEnum = "organizations"
	PromptGroupNameEnumInvitation                PromptGroupNameEnum = "invitation"
	PromptGroupNameEnumCommon                    PromptGroupNameEnum = "common"
	PromptGroupNameEnumPasskeys                  PromptGroupNameEnum = "passkeys"
	PromptGroupNameEnumCaptcha                   PromptGroupNameEnum = "captcha"
	PromptGroupNameEnumBruteForceProtection      PromptGroupNameEnum = "brute-force-protection"
	PromptGroupNameEnumAsyncApprovalFlow         PromptGroupNameEnum = "async-approval-flow"
)

func NewPromptGroupNameEnumFromString(s string) (PromptGroupNameEnum, error) {
	switch s {
	case "login":
		return PromptGroupNameEnumLogin, nil
	case "login-id":
		return PromptGroupNameEnumLoginID, nil
	case "login-password":
		return PromptGroupNameEnumLoginPassword, nil
	case "login-passwordless":
		return PromptGroupNameEnumLoginPasswordless, nil
	case "login-email-verification":
		return PromptGroupNameEnumLoginEmailVerification, nil
	case "signup":
		return PromptGroupNameEnumSignup, nil
	case "signup-id":
		return PromptGroupNameEnumSignupID, nil
	case "signup-password":
		return PromptGroupNameEnumSignupPassword, nil
	case "phone-identifier-enrollment":
		return PromptGroupNameEnumPhoneIdentifierEnrollment, nil
	case "phone-identifier-challenge":
		return PromptGroupNameEnumPhoneIdentifierChallenge, nil
	case "email-identifier-challenge":
		return PromptGroupNameEnumEmailIdentifierChallenge, nil
	case "reset-password":
		return PromptGroupNameEnumResetPassword, nil
	case "custom-form":
		return PromptGroupNameEnumCustomForm, nil
	case "consent":
		return PromptGroupNameEnumConsent, nil
	case "customized-consent":
		return PromptGroupNameEnumCustomizedConsent, nil
	case "logout":
		return PromptGroupNameEnumLogout, nil
	case "mfa-push":
		return PromptGroupNameEnumMfaPush, nil
	case "mfa-otp":
		return PromptGroupNameEnumMfaOtp, nil
	case "mfa-voice":
		return PromptGroupNameEnumMfaVoice, nil
	case "mfa-phone":
		return PromptGroupNameEnumMfaPhone, nil
	case "mfa-webauthn":
		return PromptGroupNameEnumMfaWebauthn, nil
	case "mfa-sms":
		return PromptGroupNameEnumMfaSms, nil
	case "mfa-email":
		return PromptGroupNameEnumMfaEmail, nil
	case "mfa-recovery-code":
		return PromptGroupNameEnumMfaRecoveryCode, nil
	case "mfa":
		return PromptGroupNameEnumMfa, nil
	case "status":
		return PromptGroupNameEnumStatus, nil
	case "device-flow":
		return PromptGroupNameEnumDeviceFlow, nil
	case "email-verification":
		return PromptGroupNameEnumEmailVerification, nil
	case "email-otp-challenge":
		return PromptGroupNameEnumEmailOtpChallenge, nil
	case "organizations":
		return PromptGroupNameEnumOrganizations, nil
	case "invitation":
		return PromptGroupNameEnumInvitation, nil
	case "common":
		return PromptGroupNameEnumCommon, nil
	case "passkeys":
		return PromptGroupNameEnumPasskeys, nil
	case "captcha":
		return PromptGroupNameEnumCaptcha, nil
	case "brute-force-protection":
		return PromptGroupNameEnumBruteForceProtection, nil
	case "async-approval-flow":
		return PromptGroupNameEnumAsyncApprovalFlow, nil
	}
	var t PromptGroupNameEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (p PromptGroupNameEnum) Ptr() *PromptGroupNameEnum {
	return &p
}

// Language to update.
type PromptLanguageEnum string

const (
	PromptLanguageEnumAm    PromptLanguageEnum = "am"
	PromptLanguageEnumAr    PromptLanguageEnum = "ar"
	PromptLanguageEnumArEg  PromptLanguageEnum = "ar-EG"
	PromptLanguageEnumArSa  PromptLanguageEnum = "ar-SA"
	PromptLanguageEnumAz    PromptLanguageEnum = "az"
	PromptLanguageEnumBg    PromptLanguageEnum = "bg"
	PromptLanguageEnumBn    PromptLanguageEnum = "bn"
	PromptLanguageEnumBs    PromptLanguageEnum = "bs"
	PromptLanguageEnumCaEs  PromptLanguageEnum = "ca-ES"
	PromptLanguageEnumCnr   PromptLanguageEnum = "cnr"
	PromptLanguageEnumCs    PromptLanguageEnum = "cs"
	PromptLanguageEnumCy    PromptLanguageEnum = "cy"
	PromptLanguageEnumDa    PromptLanguageEnum = "da"
	PromptLanguageEnumDe    PromptLanguageEnum = "de"
	PromptLanguageEnumEl    PromptLanguageEnum = "el"
	PromptLanguageEnumEn    PromptLanguageEnum = "en"
	PromptLanguageEnumEnCa  PromptLanguageEnum = "en-CA"
	PromptLanguageEnumEs    PromptLanguageEnum = "es"
	PromptLanguageEnumEs419 PromptLanguageEnum = "es-419"
	PromptLanguageEnumEsAr  PromptLanguageEnum = "es-AR"
	PromptLanguageEnumEsMx  PromptLanguageEnum = "es-MX"
	PromptLanguageEnumEt    PromptLanguageEnum = "et"
	PromptLanguageEnumEuEs  PromptLanguageEnum = "eu-ES"
	PromptLanguageEnumFa    PromptLanguageEnum = "fa"
	PromptLanguageEnumFi    PromptLanguageEnum = "fi"
	PromptLanguageEnumFr    PromptLanguageEnum = "fr"
	PromptLanguageEnumFrCa  PromptLanguageEnum = "fr-CA"
	PromptLanguageEnumFrFr  PromptLanguageEnum = "fr-FR"
	PromptLanguageEnumGlEs  PromptLanguageEnum = "gl-ES"
	PromptLanguageEnumGu    PromptLanguageEnum = "gu"
	PromptLanguageEnumHe    PromptLanguageEnum = "he"
	PromptLanguageEnumHi    PromptLanguageEnum = "hi"
	PromptLanguageEnumHr    PromptLanguageEnum = "hr"
	PromptLanguageEnumHu    PromptLanguageEnum = "hu"
	PromptLanguageEnumHy    PromptLanguageEnum = "hy"
	PromptLanguageEnumID    PromptLanguageEnum = "id"
	PromptLanguageEnumIs    PromptLanguageEnum = "is"
	PromptLanguageEnumIt    PromptLanguageEnum = "it"
	PromptLanguageEnumJa    PromptLanguageEnum = "ja"
	PromptLanguageEnumKa    PromptLanguageEnum = "ka"
	PromptLanguageEnumKk    PromptLanguageEnum = "kk"
	PromptLanguageEnumKn    PromptLanguageEnum = "kn"
	PromptLanguageEnumKo    PromptLanguageEnum = "ko"
	PromptLanguageEnumLt    PromptLanguageEnum = "lt"
	PromptLanguageEnumLv    PromptLanguageEnum = "lv"
	PromptLanguageEnumMk    PromptLanguageEnum = "mk"
	PromptLanguageEnumMl    PromptLanguageEnum = "ml"
	PromptLanguageEnumMn    PromptLanguageEnum = "mn"
	PromptLanguageEnumMr    PromptLanguageEnum = "mr"
	PromptLanguageEnumMs    PromptLanguageEnum = "ms"
	PromptLanguageEnumMy    PromptLanguageEnum = "my"
	PromptLanguageEnumNb    PromptLanguageEnum = "nb"
	PromptLanguageEnumNl    PromptLanguageEnum = "nl"
	PromptLanguageEnumNn    PromptLanguageEnum = "nn"
	PromptLanguageEnumNo    PromptLanguageEnum = "no"
	PromptLanguageEnumPa    PromptLanguageEnum = "pa"
	PromptLanguageEnumPl    PromptLanguageEnum = "pl"
	PromptLanguageEnumPt    PromptLanguageEnum = "pt"
	PromptLanguageEnumPtBr  PromptLanguageEnum = "pt-BR"
	PromptLanguageEnumPtPt  PromptLanguageEnum = "pt-PT"
	PromptLanguageEnumRo    PromptLanguageEnum = "ro"
	PromptLanguageEnumRu    PromptLanguageEnum = "ru"
	PromptLanguageEnumSk    PromptLanguageEnum = "sk"
	PromptLanguageEnumSl    PromptLanguageEnum = "sl"
	PromptLanguageEnumSo    PromptLanguageEnum = "so"
	PromptLanguageEnumSq    PromptLanguageEnum = "sq"
	PromptLanguageEnumSr    PromptLanguageEnum = "sr"
	PromptLanguageEnumSv    PromptLanguageEnum = "sv"
	PromptLanguageEnumSw    PromptLanguageEnum = "sw"
	PromptLanguageEnumTa    PromptLanguageEnum = "ta"
	PromptLanguageEnumTe    PromptLanguageEnum = "te"
	PromptLanguageEnumTh    PromptLanguageEnum = "th"
	PromptLanguageEnumTl    PromptLanguageEnum = "tl"
	PromptLanguageEnumTr    PromptLanguageEnum = "tr"
	PromptLanguageEnumUk    PromptLanguageEnum = "uk"
	PromptLanguageEnumUr    PromptLanguageEnum = "ur"
	PromptLanguageEnumVi    PromptLanguageEnum = "vi"
	PromptLanguageEnumZgh   PromptLanguageEnum = "zgh"
	PromptLanguageEnumZhCn  PromptLanguageEnum = "zh-CN"
	PromptLanguageEnumZhHk  PromptLanguageEnum = "zh-HK"
	PromptLanguageEnumZhTw  PromptLanguageEnum = "zh-TW"
)

func NewPromptLanguageEnumFromString(s string) (PromptLanguageEnum, error) {
	switch s {
	case "am":
		return PromptLanguageEnumAm, nil
	case "ar":
		return PromptLanguageEnumAr, nil
	case "ar-EG":
		return PromptLanguageEnumArEg, nil
	case "ar-SA":
		return PromptLanguageEnumArSa, nil
	case "az":
		return PromptLanguageEnumAz, nil
	case "bg":
		return PromptLanguageEnumBg, nil
	case "bn":
		return PromptLanguageEnumBn, nil
	case "bs":
		return PromptLanguageEnumBs, nil
	case "ca-ES":
		return PromptLanguageEnumCaEs, nil
	case "cnr":
		return PromptLanguageEnumCnr, nil
	case "cs":
		return PromptLanguageEnumCs, nil
	case "cy":
		return PromptLanguageEnumCy, nil
	case "da":
		return PromptLanguageEnumDa, nil
	case "de":
		return PromptLanguageEnumDe, nil
	case "el":
		return PromptLanguageEnumEl, nil
	case "en":
		return PromptLanguageEnumEn, nil
	case "en-CA":
		return PromptLanguageEnumEnCa, nil
	case "es":
		return PromptLanguageEnumEs, nil
	case "es-419":
		return PromptLanguageEnumEs419, nil
	case "es-AR":
		return PromptLanguageEnumEsAr, nil
	case "es-MX":
		return PromptLanguageEnumEsMx, nil
	case "et":
		return PromptLanguageEnumEt, nil
	case "eu-ES":
		return PromptLanguageEnumEuEs, nil
	case "fa":
		return PromptLanguageEnumFa, nil
	case "fi":
		return PromptLanguageEnumFi, nil
	case "fr":
		return PromptLanguageEnumFr, nil
	case "fr-CA":
		return PromptLanguageEnumFrCa, nil
	case "fr-FR":
		return PromptLanguageEnumFrFr, nil
	case "gl-ES":
		return PromptLanguageEnumGlEs, nil
	case "gu":
		return PromptLanguageEnumGu, nil
	case "he":
		return PromptLanguageEnumHe, nil
	case "hi":
		return PromptLanguageEnumHi, nil
	case "hr":
		return PromptLanguageEnumHr, nil
	case "hu":
		return PromptLanguageEnumHu, nil
	case "hy":
		return PromptLanguageEnumHy, nil
	case "id":
		return PromptLanguageEnumID, nil
	case "is":
		return PromptLanguageEnumIs, nil
	case "it":
		return PromptLanguageEnumIt, nil
	case "ja":
		return PromptLanguageEnumJa, nil
	case "ka":
		return PromptLanguageEnumKa, nil
	case "kk":
		return PromptLanguageEnumKk, nil
	case "kn":
		return PromptLanguageEnumKn, nil
	case "ko":
		return PromptLanguageEnumKo, nil
	case "lt":
		return PromptLanguageEnumLt, nil
	case "lv":
		return PromptLanguageEnumLv, nil
	case "mk":
		return PromptLanguageEnumMk, nil
	case "ml":
		return PromptLanguageEnumMl, nil
	case "mn":
		return PromptLanguageEnumMn, nil
	case "mr":
		return PromptLanguageEnumMr, nil
	case "ms":
		return PromptLanguageEnumMs, nil
	case "my":
		return PromptLanguageEnumMy, nil
	case "nb":
		return PromptLanguageEnumNb, nil
	case "nl":
		return PromptLanguageEnumNl, nil
	case "nn":
		return PromptLanguageEnumNn, nil
	case "no":
		return PromptLanguageEnumNo, nil
	case "pa":
		return PromptLanguageEnumPa, nil
	case "pl":
		return PromptLanguageEnumPl, nil
	case "pt":
		return PromptLanguageEnumPt, nil
	case "pt-BR":
		return PromptLanguageEnumPtBr, nil
	case "pt-PT":
		return PromptLanguageEnumPtPt, nil
	case "ro":
		return PromptLanguageEnumRo, nil
	case "ru":
		return PromptLanguageEnumRu, nil
	case "sk":
		return PromptLanguageEnumSk, nil
	case "sl":
		return PromptLanguageEnumSl, nil
	case "so":
		return PromptLanguageEnumSo, nil
	case "sq":
		return PromptLanguageEnumSq, nil
	case "sr":
		return PromptLanguageEnumSr, nil
	case "sv":
		return PromptLanguageEnumSv, nil
	case "sw":
		return PromptLanguageEnumSw, nil
	case "ta":
		return PromptLanguageEnumTa, nil
	case "te":
		return PromptLanguageEnumTe, nil
	case "th":
		return PromptLanguageEnumTh, nil
	case "tl":
		return PromptLanguageEnumTl, nil
	case "tr":
		return PromptLanguageEnumTr, nil
	case "uk":
		return PromptLanguageEnumUk, nil
	case "ur":
		return PromptLanguageEnumUr, nil
	case "vi":
		return PromptLanguageEnumVi, nil
	case "zgh":
		return PromptLanguageEnumZgh, nil
	case "zh-CN":
		return PromptLanguageEnumZhCn, nil
	case "zh-HK":
		return PromptLanguageEnumZhHk, nil
	case "zh-TW":
		return PromptLanguageEnumZhTw, nil
	}
	var t PromptLanguageEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (p PromptLanguageEnum) Ptr() *PromptLanguageEnum {
	return &p
}

// Algorithm which will be used with the credential. Can be one of RS256, RS384, PS256. If not specified, RS256 will be used. Applies to `public_key` credential type.
type PublicKeyCredentialAlgorithmEnum string

const (
	PublicKeyCredentialAlgorithmEnumRs256 PublicKeyCredentialAlgorithmEnum = "RS256"
	PublicKeyCredentialAlgorithmEnumRs384 PublicKeyCredentialAlgorithmEnum = "RS384"
	PublicKeyCredentialAlgorithmEnumPs256 PublicKeyCredentialAlgorithmEnum = "PS256"
)

func NewPublicKeyCredentialAlgorithmEnumFromString(s string) (PublicKeyCredentialAlgorithmEnum, error) {
	switch s {
	case "RS256":
		return PublicKeyCredentialAlgorithmEnumRs256, nil
	case "RS384":
		return PublicKeyCredentialAlgorithmEnumRs384, nil
	case "PS256":
		return PublicKeyCredentialAlgorithmEnumPs256, nil
	}
	var t PublicKeyCredentialAlgorithmEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (p PublicKeyCredentialAlgorithmEnum) Ptr() *PublicKeyCredentialAlgorithmEnum {
	return &p
}

type RefreshTokenDate struct {
	// The date and time when the refresh token was created
	DateTime               time.Time
	RefreshTokenDateObject RefreshTokenDateObject

	typ string
}

func (r *RefreshTokenDate) GetDateTime() time.Time {
	if r == nil {
		return time.Time{}
	}
	return r.DateTime
}

func (r *RefreshTokenDate) GetRefreshTokenDateObject() RefreshTokenDateObject {
	if r == nil {
		return nil
	}
	return r.RefreshTokenDateObject
}

func (r *RefreshTokenDate) UnmarshalJSON(data []byte) error {
	var valueDateTime *internal.DateTime
	if err := json.Unmarshal(data, &valueDateTime); err == nil {
		r.typ = "DateTime"
		r.DateTime = valueDateTime.Time()
		return nil
	}
	var valueRefreshTokenDateObject RefreshTokenDateObject
	if err := json.Unmarshal(data, &valueRefreshTokenDateObject); err == nil {
		r.typ = "RefreshTokenDateObject"
		r.RefreshTokenDateObject = valueRefreshTokenDateObject
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, r)
}

func (r RefreshTokenDate) MarshalJSON() ([]byte, error) {
	if r.typ == "DateTime" || !r.DateTime.IsZero() {
		return json.Marshal(internal.NewDateTime(r.DateTime))
	}
	if r.typ == "RefreshTokenDateObject" || r.RefreshTokenDateObject != nil {
		return json.Marshal(r.RefreshTokenDateObject)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", r)
}

type RefreshTokenDateVisitor interface {
	VisitDateTime(time.Time) error
	VisitRefreshTokenDateObject(RefreshTokenDateObject) error
}

func (r *RefreshTokenDate) Accept(visitor RefreshTokenDateVisitor) error {
	if r.typ == "DateTime" || !r.DateTime.IsZero() {
		return visitor.VisitDateTime(r.DateTime)
	}
	if r.typ == "RefreshTokenDateObject" || r.RefreshTokenDateObject != nil {
		return visitor.VisitRefreshTokenDateObject(r.RefreshTokenDateObject)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", r)
}

// The date and time when the refresh token was created
type RefreshTokenDateObject = map[string]interface{}

// Device used while issuing/exchanging the refresh token
var (
	refreshTokenDeviceFieldInitialIP        = big.NewInt(1 << 0)
	refreshTokenDeviceFieldInitialAsn       = big.NewInt(1 << 1)
	refreshTokenDeviceFieldInitialUserAgent = big.NewInt(1 << 2)
	refreshTokenDeviceFieldLastIP           = big.NewInt(1 << 3)
	refreshTokenDeviceFieldLastAsn          = big.NewInt(1 << 4)
	refreshTokenDeviceFieldLastUserAgent    = big.NewInt(1 << 5)
)

type RefreshTokenDevice struct {
	// First IP address associated with the refresh token
	InitialIP *string `json:"initial_ip,omitempty" url:"initial_ip,omitempty"`
	// First autonomous system number associated with the refresh token
	InitialAsn *string `json:"initial_asn,omitempty" url:"initial_asn,omitempty"`
	// First user agent associated with the refresh token
	InitialUserAgent *string `json:"initial_user_agent,omitempty" url:"initial_user_agent,omitempty"`
	// Last IP address associated with the refresh token
	LastIP *string `json:"last_ip,omitempty" url:"last_ip,omitempty"`
	// Last autonomous system number associated with the refresh token
	LastAsn *string `json:"last_asn,omitempty" url:"last_asn,omitempty"`
	// Last user agent associated with the refresh token
	LastUserAgent *string `json:"last_user_agent,omitempty" url:"last_user_agent,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (r *RefreshTokenDevice) GetInitialIP() string {
	if r == nil || r.InitialIP == nil {
		return ""
	}
	return *r.InitialIP
}

func (r *RefreshTokenDevice) GetInitialAsn() string {
	if r == nil || r.InitialAsn == nil {
		return ""
	}
	return *r.InitialAsn
}

func (r *RefreshTokenDevice) GetInitialUserAgent() string {
	if r == nil || r.InitialUserAgent == nil {
		return ""
	}
	return *r.InitialUserAgent
}

func (r *RefreshTokenDevice) GetLastIP() string {
	if r == nil || r.LastIP == nil {
		return ""
	}
	return *r.LastIP
}

func (r *RefreshTokenDevice) GetLastAsn() string {
	if r == nil || r.LastAsn == nil {
		return ""
	}
	return *r.LastAsn
}

func (r *RefreshTokenDevice) GetLastUserAgent() string {
	if r == nil || r.LastUserAgent == nil {
		return ""
	}
	return *r.LastUserAgent
}

func (r *RefreshTokenDevice) GetExtraProperties() map[string]interface{} {
	return r.ExtraProperties
}

func (r *RefreshTokenDevice) require(field *big.Int) {
	if r.explicitFields == nil {
		r.explicitFields = big.NewInt(0)
	}
	r.explicitFields.Or(r.explicitFields, field)
}

// SetInitialIP sets the InitialIP field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenDevice) SetInitialIP(initialIP *string) {
	r.InitialIP = initialIP
	r.require(refreshTokenDeviceFieldInitialIP)
}

// SetInitialAsn sets the InitialAsn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenDevice) SetInitialAsn(initialAsn *string) {
	r.InitialAsn = initialAsn
	r.require(refreshTokenDeviceFieldInitialAsn)
}

// SetInitialUserAgent sets the InitialUserAgent field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenDevice) SetInitialUserAgent(initialUserAgent *string) {
	r.InitialUserAgent = initialUserAgent
	r.require(refreshTokenDeviceFieldInitialUserAgent)
}

// SetLastIP sets the LastIP field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenDevice) SetLastIP(lastIP *string) {
	r.LastIP = lastIP
	r.require(refreshTokenDeviceFieldLastIP)
}

// SetLastAsn sets the LastAsn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenDevice) SetLastAsn(lastAsn *string) {
	r.LastAsn = lastAsn
	r.require(refreshTokenDeviceFieldLastAsn)
}

// SetLastUserAgent sets the LastUserAgent field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenDevice) SetLastUserAgent(lastUserAgent *string) {
	r.LastUserAgent = lastUserAgent
	r.require(refreshTokenDeviceFieldLastUserAgent)
}

func (r *RefreshTokenDevice) UnmarshalJSON(data []byte) error {
	type embed RefreshTokenDevice
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*r = RefreshTokenDevice(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *r)
	if err != nil {
		return err
	}
	r.ExtraProperties = extraProperties
	r.rawJSON = json.RawMessage(data)
	return nil
}

func (r *RefreshTokenDevice) MarshalJSON() ([]byte, error) {
	type embed RefreshTokenDevice
	var marshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, r.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, r.ExtraProperties)
}

func (r *RefreshTokenDevice) String() string {
	if len(r.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(r.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(r); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", r)
}

var (
	refreshTokenResourceServerFieldAudience = big.NewInt(1 << 0)
	refreshTokenResourceServerFieldScopes   = big.NewInt(1 << 1)
)

type RefreshTokenResourceServer struct {
	// Resource server ID
	Audience *string `json:"audience,omitempty" url:"audience,omitempty"`
	// List of scopes for the refresh token
	Scopes *string `json:"scopes,omitempty" url:"scopes,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (r *RefreshTokenResourceServer) GetAudience() string {
	if r == nil || r.Audience == nil {
		return ""
	}
	return *r.Audience
}

func (r *RefreshTokenResourceServer) GetScopes() string {
	if r == nil || r.Scopes == nil {
		return ""
	}
	return *r.Scopes
}

func (r *RefreshTokenResourceServer) GetExtraProperties() map[string]interface{} {
	return r.ExtraProperties
}

func (r *RefreshTokenResourceServer) require(field *big.Int) {
	if r.explicitFields == nil {
		r.explicitFields = big.NewInt(0)
	}
	r.explicitFields.Or(r.explicitFields, field)
}

// SetAudience sets the Audience field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenResourceServer) SetAudience(audience *string) {
	r.Audience = audience
	r.require(refreshTokenResourceServerFieldAudience)
}

// SetScopes sets the Scopes field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenResourceServer) SetScopes(scopes *string) {
	r.Scopes = scopes
	r.require(refreshTokenResourceServerFieldScopes)
}

func (r *RefreshTokenResourceServer) UnmarshalJSON(data []byte) error {
	type embed RefreshTokenResourceServer
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*r = RefreshTokenResourceServer(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *r)
	if err != nil {
		return err
	}
	r.ExtraProperties = extraProperties
	r.rawJSON = json.RawMessage(data)
	return nil
}

func (r *RefreshTokenResourceServer) MarshalJSON() ([]byte, error) {
	type embed RefreshTokenResourceServer
	var marshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, r.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, r.ExtraProperties)
}

func (r *RefreshTokenResourceServer) String() string {
	if len(r.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(r.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(r); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", r)
}

var (
	refreshTokenResponseContentFieldID              = big.NewInt(1 << 0)
	refreshTokenResponseContentFieldUserID          = big.NewInt(1 << 1)
	refreshTokenResponseContentFieldCreatedAt       = big.NewInt(1 << 2)
	refreshTokenResponseContentFieldIdleExpiresAt   = big.NewInt(1 << 3)
	refreshTokenResponseContentFieldExpiresAt       = big.NewInt(1 << 4)
	refreshTokenResponseContentFieldDevice          = big.NewInt(1 << 5)
	refreshTokenResponseContentFieldClientID        = big.NewInt(1 << 6)
	refreshTokenResponseContentFieldSessionID       = big.NewInt(1 << 7)
	refreshTokenResponseContentFieldRotating        = big.NewInt(1 << 8)
	refreshTokenResponseContentFieldResourceServers = big.NewInt(1 << 9)
	refreshTokenResponseContentFieldLastExchangedAt = big.NewInt(1 << 10)
)

type RefreshTokenResponseContent struct {
	// The ID of the refresh token
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// ID of the user which can be used when interacting with other APIs.
	UserID        *string             `json:"user_id,omitempty" url:"user_id,omitempty"`
	CreatedAt     *RefreshTokenDate   `json:"created_at,omitempty" url:"created_at,omitempty"`
	IdleExpiresAt *RefreshTokenDate   `json:"idle_expires_at,omitempty" url:"idle_expires_at,omitempty"`
	ExpiresAt     *RefreshTokenDate   `json:"expires_at,omitempty" url:"expires_at,omitempty"`
	Device        *RefreshTokenDevice `json:"device,omitempty" url:"device,omitempty"`
	// ID of the client application granted with this refresh token
	ClientID  *string                `json:"client_id,omitempty" url:"client_id,omitempty"`
	SessionID *RefreshTokenSessionID `json:"session_id,omitempty" url:"session_id,omitempty"`
	// True if the token is a rotating refresh token
	Rotating *bool `json:"rotating,omitempty" url:"rotating,omitempty"`
	// A list of the resource server IDs associated to this refresh-token and their granted scopes
	ResourceServers []*RefreshTokenResourceServer `json:"resource_servers,omitempty" url:"resource_servers,omitempty"`
	LastExchangedAt *RefreshTokenDate             `json:"last_exchanged_at,omitempty" url:"last_exchanged_at,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (r *RefreshTokenResponseContent) GetID() string {
	if r == nil || r.ID == nil {
		return ""
	}
	return *r.ID
}

func (r *RefreshTokenResponseContent) GetUserID() string {
	if r == nil || r.UserID == nil {
		return ""
	}
	return *r.UserID
}

func (r *RefreshTokenResponseContent) GetCreatedAt() RefreshTokenDate {
	if r == nil || r.CreatedAt == nil {
		return RefreshTokenDate{}
	}
	return *r.CreatedAt
}

func (r *RefreshTokenResponseContent) GetIdleExpiresAt() RefreshTokenDate {
	if r == nil || r.IdleExpiresAt == nil {
		return RefreshTokenDate{}
	}
	return *r.IdleExpiresAt
}

func (r *RefreshTokenResponseContent) GetExpiresAt() RefreshTokenDate {
	if r == nil || r.ExpiresAt == nil {
		return RefreshTokenDate{}
	}
	return *r.ExpiresAt
}

func (r *RefreshTokenResponseContent) GetDevice() RefreshTokenDevice {
	if r == nil || r.Device == nil {
		return RefreshTokenDevice{}
	}
	return *r.Device
}

func (r *RefreshTokenResponseContent) GetClientID() string {
	if r == nil || r.ClientID == nil {
		return ""
	}
	return *r.ClientID
}

func (r *RefreshTokenResponseContent) GetSessionID() RefreshTokenSessionID {
	if r == nil || r.SessionID == nil {
		return nil
	}
	return *r.SessionID
}

func (r *RefreshTokenResponseContent) GetRotating() bool {
	if r == nil || r.Rotating == nil {
		return false
	}
	return *r.Rotating
}

func (r *RefreshTokenResponseContent) GetResourceServers() []*RefreshTokenResourceServer {
	if r == nil || r.ResourceServers == nil {
		return nil
	}
	return r.ResourceServers
}

func (r *RefreshTokenResponseContent) GetLastExchangedAt() RefreshTokenDate {
	if r == nil || r.LastExchangedAt == nil {
		return RefreshTokenDate{}
	}
	return *r.LastExchangedAt
}

func (r *RefreshTokenResponseContent) GetExtraProperties() map[string]interface{} {
	return r.ExtraProperties
}

func (r *RefreshTokenResponseContent) require(field *big.Int) {
	if r.explicitFields == nil {
		r.explicitFields = big.NewInt(0)
	}
	r.explicitFields.Or(r.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 (r *RefreshTokenResponseContent) SetID(id *string) {
	r.ID = id
	r.require(refreshTokenResponseContentFieldID)
}

// 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 (r *RefreshTokenResponseContent) SetUserID(userID *string) {
	r.UserID = userID
	r.require(refreshTokenResponseContentFieldUserID)
}

// 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 (r *RefreshTokenResponseContent) SetCreatedAt(createdAt *RefreshTokenDate) {
	r.CreatedAt = createdAt
	r.require(refreshTokenResponseContentFieldCreatedAt)
}

// SetIdleExpiresAt sets the IdleExpiresAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenResponseContent) SetIdleExpiresAt(idleExpiresAt *RefreshTokenDate) {
	r.IdleExpiresAt = idleExpiresAt
	r.require(refreshTokenResponseContentFieldIdleExpiresAt)
}

// SetExpiresAt sets the ExpiresAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenResponseContent) SetExpiresAt(expiresAt *RefreshTokenDate) {
	r.ExpiresAt = expiresAt
	r.require(refreshTokenResponseContentFieldExpiresAt)
}

// SetDevice sets the Device field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenResponseContent) SetDevice(device *RefreshTokenDevice) {
	r.Device = device
	r.require(refreshTokenResponseContentFieldDevice)
}

// SetClientID sets the ClientID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenResponseContent) SetClientID(clientID *string) {
	r.ClientID = clientID
	r.require(refreshTokenResponseContentFieldClientID)
}

// 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 (r *RefreshTokenResponseContent) SetSessionID(sessionID *RefreshTokenSessionID) {
	r.SessionID = sessionID
	r.require(refreshTokenResponseContentFieldSessionID)
}

// SetRotating sets the Rotating field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenResponseContent) SetRotating(rotating *bool) {
	r.Rotating = rotating
	r.require(refreshTokenResponseContentFieldRotating)
}

// SetResourceServers sets the ResourceServers field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenResponseContent) SetResourceServers(resourceServers []*RefreshTokenResourceServer) {
	r.ResourceServers = resourceServers
	r.require(refreshTokenResponseContentFieldResourceServers)
}

// SetLastExchangedAt sets the LastExchangedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RefreshTokenResponseContent) SetLastExchangedAt(lastExchangedAt *RefreshTokenDate) {
	r.LastExchangedAt = lastExchangedAt
	r.require(refreshTokenResponseContentFieldLastExchangedAt)
}

func (r *RefreshTokenResponseContent) UnmarshalJSON(data []byte) error {
	type embed RefreshTokenResponseContent
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*r = RefreshTokenResponseContent(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *r)
	if err != nil {
		return err
	}
	r.ExtraProperties = extraProperties
	r.rawJSON = json.RawMessage(data)
	return nil
}

func (r *RefreshTokenResponseContent) MarshalJSON() ([]byte, error) {
	type embed RefreshTokenResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, r.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, r.ExtraProperties)
}

func (r *RefreshTokenResponseContent) String() string {
	if len(r.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(r.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(r); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", r)
}

// ID of the authenticated session used to obtain this refresh-token
type RefreshTokenSessionID = *string

type ResetPhoneTemplateRequestContent = interface{}

var (
	resetPhoneTemplateResponseContentFieldID           = big.NewInt(1 << 0)
	resetPhoneTemplateResponseContentFieldChannel      = big.NewInt(1 << 1)
	resetPhoneTemplateResponseContentFieldCustomizable = big.NewInt(1 << 2)
	resetPhoneTemplateResponseContentFieldTenant       = big.NewInt(1 << 3)
	resetPhoneTemplateResponseContentFieldContent      = big.NewInt(1 << 4)
	resetPhoneTemplateResponseContentFieldType         = big.NewInt(1 << 5)
	resetPhoneTemplateResponseContentFieldDisabled     = big.NewInt(1 << 6)
)

type ResetPhoneTemplateResponseContent struct {
	ID           string                            `json:"id" url:"id"`
	Channel      *string                           `json:"channel,omitempty" url:"channel,omitempty"`
	Customizable *bool                             `json:"customizable,omitempty" url:"customizable,omitempty"`
	Tenant       *string                           `json:"tenant,omitempty" url:"tenant,omitempty"`
	Content      *PhoneTemplateContent             `json:"content" url:"content"`
	Type         PhoneTemplateNotificationTypeEnum `json:"type" url:"type"`
	// Whether the template is enabled (false) or disabled (true).
	Disabled bool `json:"disabled" url:"disabled"`

	// 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 (r *ResetPhoneTemplateResponseContent) GetID() string {
	if r == nil {
		return ""
	}
	return r.ID
}

func (r *ResetPhoneTemplateResponseContent) GetChannel() string {
	if r == nil || r.Channel == nil {
		return ""
	}
	return *r.Channel
}

func (r *ResetPhoneTemplateResponseContent) GetCustomizable() bool {
	if r == nil || r.Customizable == nil {
		return false
	}
	return *r.Customizable
}

func (r *ResetPhoneTemplateResponseContent) GetTenant() string {
	if r == nil || r.Tenant == nil {
		return ""
	}
	return *r.Tenant
}

func (r *ResetPhoneTemplateResponseContent) GetContent() *PhoneTemplateContent {
	if r == nil {
		return nil
	}
	return r.Content
}

func (r *ResetPhoneTemplateResponseContent) GetType() PhoneTemplateNotificationTypeEnum {
	if r == nil {
		return ""
	}
	return r.Type
}

func (r *ResetPhoneTemplateResponseContent) GetDisabled() bool {
	if r == nil {
		return false
	}
	return r.Disabled
}

func (r *ResetPhoneTemplateResponseContent) GetExtraProperties() map[string]interface{} {
	return r.extraProperties
}

func (r *ResetPhoneTemplateResponseContent) require(field *big.Int) {
	if r.explicitFields == nil {
		r.explicitFields = big.NewInt(0)
	}
	r.explicitFields.Or(r.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 (r *ResetPhoneTemplateResponseContent) SetID(id string) {
	r.ID = id
	r.require(resetPhoneTemplateResponseContentFieldID)
}

// SetChannel sets the Channel field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *ResetPhoneTemplateResponseContent) SetChannel(channel *string) {
	r.Channel = channel
	r.require(resetPhoneTemplateResponseContentFieldChannel)
}

// SetCustomizable sets the Customizable field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *ResetPhoneTemplateResponseContent) SetCustomizable(customizable *bool) {
	r.Customizable = customizable
	r.require(resetPhoneTemplateResponseContentFieldCustomizable)
}

// SetTenant sets the Tenant field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *ResetPhoneTemplateResponseContent) SetTenant(tenant *string) {
	r.Tenant = tenant
	r.require(resetPhoneTemplateResponseContentFieldTenant)
}

// SetContent sets the Content field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *ResetPhoneTemplateResponseContent) SetContent(content *PhoneTemplateContent) {
	r.Content = content
	r.require(resetPhoneTemplateResponseContentFieldContent)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *ResetPhoneTemplateResponseContent) SetType(type_ PhoneTemplateNotificationTypeEnum) {
	r.Type = type_
	r.require(resetPhoneTemplateResponseContentFieldType)
}

// SetDisabled sets the Disabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *ResetPhoneTemplateResponseContent) SetDisabled(disabled bool) {
	r.Disabled = disabled
	r.require(resetPhoneTemplateResponseContentFieldDisabled)
}

func (r *ResetPhoneTemplateResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler ResetPhoneTemplateResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*r = ResetPhoneTemplateResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *r)
	if err != nil {
		return err
	}
	r.extraProperties = extraProperties
	r.rawJSON = json.RawMessage(data)
	return nil
}

func (r *ResetPhoneTemplateResponseContent) MarshalJSON() ([]byte, error) {
	type embed ResetPhoneTemplateResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, r.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (r *ResetPhoneTemplateResponseContent) String() string {
	if len(r.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(r.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(r); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", r)
}

// PEM-encoded certificate
type ResourceServerVerificationKeyPemCertificate = string

var (
	revokedSigningKeysResponseContentFieldCert = big.NewInt(1 << 0)
	revokedSigningKeysResponseContentFieldKid  = big.NewInt(1 << 1)
)

type RevokedSigningKeysResponseContent struct {
	// Revoked key certificate
	Cert string `json:"cert" url:"cert"`
	// Revoked key id
	Kid string `json:"kid" url:"kid"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	ExtraProperties map[string]interface{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (r *RevokedSigningKeysResponseContent) GetCert() string {
	if r == nil {
		return ""
	}
	return r.Cert
}

func (r *RevokedSigningKeysResponseContent) GetKid() string {
	if r == nil {
		return ""
	}
	return r.Kid
}

func (r *RevokedSigningKeysResponseContent) GetExtraProperties() map[string]interface{} {
	return r.ExtraProperties
}

func (r *RevokedSigningKeysResponseContent) require(field *big.Int) {
	if r.explicitFields == nil {
		r.explicitFields = big.NewInt(0)
	}
	r.explicitFields.Or(r.explicitFields, field)
}

// SetCert sets the Cert field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RevokedSigningKeysResponseContent) SetCert(cert string) {
	r.Cert = cert
	r.require(revokedSigningKeysResponseContentFieldCert)
}

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RevokedSigningKeysResponseContent) SetKid(kid string) {
	r.Kid = kid
	r.require(revokedSigningKeysResponseContentFieldKid)
}

func (r *RevokedSigningKeysResponseContent) UnmarshalJSON(data []byte) error {
	type embed RevokedSigningKeysResponseContent
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*r = RevokedSigningKeysResponseContent(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *r)
	if err != nil {
		return err
	}
	r.ExtraProperties = extraProperties
	r.rawJSON = json.RawMessage(data)
	return nil
}

func (r *RevokedSigningKeysResponseContent) MarshalJSON() ([]byte, error) {
	type embed RevokedSigningKeysResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, r.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, r.ExtraProperties)
}

func (r *RevokedSigningKeysResponseContent) String() string {
	if len(r.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(r.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(r); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", r)
}

var (
	roleFieldID          = big.NewInt(1 << 0)
	roleFieldName        = big.NewInt(1 << 1)
	roleFieldDescription = big.NewInt(1 << 2)
)

type Role struct {
	// ID for this role.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// Name of this role.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Description of this role.
	Description *string `json:"description,omitempty" url:"description,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 (r *Role) GetID() string {
	if r == nil || r.ID == nil {
		return ""
	}
	return *r.ID
}

func (r *Role) GetName() string {
	if r == nil || r.Name == nil {
		return ""
	}
	return *r.Name
}

func (r *Role) GetDescription() string {
	if r == nil || r.Description == nil {
		return ""
	}
	return *r.Description
}

func (r *Role) GetExtraProperties() map[string]interface{} {
	return r.extraProperties
}

func (r *Role) require(field *big.Int) {
	if r.explicitFields == nil {
		r.explicitFields = big.NewInt(0)
	}
	r.explicitFields.Or(r.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 (r *Role) SetID(id *string) {
	r.ID = id
	r.require(roleFieldID)
}

// 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 (r *Role) SetName(name *string) {
	r.Name = name
	r.require(roleFieldName)
}

// SetDescription sets the Description field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *Role) SetDescription(description *string) {
	r.Description = description
	r.require(roleFieldDescription)
}

func (r *Role) UnmarshalJSON(data []byte) error {
	type unmarshaler Role
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*r = Role(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *r)
	if err != nil {
		return err
	}
	r.extraProperties = extraProperties
	r.rawJSON = json.RawMessage(data)
	return nil
}

func (r *Role) MarshalJSON() ([]byte, error) {
	type embed Role
	var marshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, r.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (r *Role) String() string {
	if len(r.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(r.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(r); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", r)
}

var (
	roleUserFieldUserID  = big.NewInt(1 << 0)
	roleUserFieldPicture = big.NewInt(1 << 1)
	roleUserFieldName    = big.NewInt(1 << 2)
	roleUserFieldEmail   = big.NewInt(1 << 3)
)

type RoleUser struct {
	// ID of this user.
	UserID *string `json:"user_id,omitempty" url:"user_id,omitempty"`
	// URL to a picture for this user.
	Picture *string `json:"picture,omitempty" url:"picture,omitempty"`
	// Name of this user.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Email address of this user.
	Email *string `json:"email,omitempty" url:"email,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 (r *RoleUser) GetUserID() string {
	if r == nil || r.UserID == nil {
		return ""
	}
	return *r.UserID
}

func (r *RoleUser) GetPicture() string {
	if r == nil || r.Picture == nil {
		return ""
	}
	return *r.Picture
}

func (r *RoleUser) GetName() string {
	if r == nil || r.Name == nil {
		return ""
	}
	return *r.Name
}

func (r *RoleUser) GetEmail() string {
	if r == nil || r.Email == nil {
		return ""
	}
	return *r.Email
}

func (r *RoleUser) GetExtraProperties() map[string]interface{} {
	return r.extraProperties
}

func (r *RoleUser) require(field *big.Int) {
	if r.explicitFields == nil {
		r.explicitFields = big.NewInt(0)
	}
	r.explicitFields.Or(r.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 (r *RoleUser) SetUserID(userID *string) {
	r.UserID = userID
	r.require(roleUserFieldUserID)
}

// SetPicture sets the Picture field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RoleUser) SetPicture(picture *string) {
	r.Picture = picture
	r.require(roleUserFieldPicture)
}

// 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 (r *RoleUser) SetName(name *string) {
	r.Name = name
	r.require(roleUserFieldName)
}

// SetEmail sets the Email field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RoleUser) SetEmail(email *string) {
	r.Email = email
	r.require(roleUserFieldEmail)
}

func (r *RoleUser) UnmarshalJSON(data []byte) error {
	type unmarshaler RoleUser
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*r = RoleUser(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *r)
	if err != nil {
		return err
	}
	r.extraProperties = extraProperties
	r.rawJSON = json.RawMessage(data)
	return nil
}

func (r *RoleUser) MarshalJSON() ([]byte, error) {
	type embed RoleUser
	var marshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, r.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (r *RoleUser) String() string {
	if len(r.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(r.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(r); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", r)
}

var (
	rotateConnectionKeysRequestContentFieldSigningAlg = big.NewInt(1 << 0)
)

type RotateConnectionKeysRequestContent struct {
	SigningAlg *RotateConnectionKeysSigningAlgEnum `json:"signing_alg,omitempty" url:"signing_alg,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 (r *RotateConnectionKeysRequestContent) GetSigningAlg() RotateConnectionKeysSigningAlgEnum {
	if r == nil || r.SigningAlg == nil {
		return ""
	}
	return *r.SigningAlg
}

func (r *RotateConnectionKeysRequestContent) GetExtraProperties() map[string]interface{} {
	return r.extraProperties
}

func (r *RotateConnectionKeysRequestContent) require(field *big.Int) {
	if r.explicitFields == nil {
		r.explicitFields = big.NewInt(0)
	}
	r.explicitFields.Or(r.explicitFields, field)
}

// SetSigningAlg sets the SigningAlg field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RotateConnectionKeysRequestContent) SetSigningAlg(signingAlg *RotateConnectionKeysSigningAlgEnum) {
	r.SigningAlg = signingAlg
	r.require(rotateConnectionKeysRequestContentFieldSigningAlg)
}

func (r *RotateConnectionKeysRequestContent) UnmarshalJSON(data []byte) error {
	type unmarshaler RotateConnectionKeysRequestContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*r = RotateConnectionKeysRequestContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *r)
	if err != nil {
		return err
	}
	r.extraProperties = extraProperties
	r.rawJSON = json.RawMessage(data)
	return nil
}

func (r *RotateConnectionKeysRequestContent) MarshalJSON() ([]byte, error) {
	type embed RotateConnectionKeysRequestContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, r.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (r *RotateConnectionKeysRequestContent) String() string {
	if len(r.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(r.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(r); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", r)
}

// Selected Signing Algorithm
type RotateConnectionKeysSigningAlgEnum string

const (
	RotateConnectionKeysSigningAlgEnumRs256 RotateConnectionKeysSigningAlgEnum = "RS256"
	RotateConnectionKeysSigningAlgEnumRs512 RotateConnectionKeysSigningAlgEnum = "RS512"
	RotateConnectionKeysSigningAlgEnumPs256 RotateConnectionKeysSigningAlgEnum = "PS256"
	RotateConnectionKeysSigningAlgEnumEs256 RotateConnectionKeysSigningAlgEnum = "ES256"
)

func NewRotateConnectionKeysSigningAlgEnumFromString(s string) (RotateConnectionKeysSigningAlgEnum, error) {
	switch s {
	case "RS256":
		return RotateConnectionKeysSigningAlgEnumRs256, nil
	case "RS512":
		return RotateConnectionKeysSigningAlgEnumRs512, nil
	case "PS256":
		return RotateConnectionKeysSigningAlgEnumPs256, nil
	case "ES256":
		return RotateConnectionKeysSigningAlgEnumEs256, nil
	}
	var t RotateConnectionKeysSigningAlgEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (r RotateConnectionKeysSigningAlgEnum) Ptr() *RotateConnectionKeysSigningAlgEnum {
	return &r
}

var (
	rotateConnectionsKeysResponseContentFieldKid         = big.NewInt(1 << 0)
	rotateConnectionsKeysResponseContentFieldCert        = big.NewInt(1 << 1)
	rotateConnectionsKeysResponseContentFieldPkcs        = big.NewInt(1 << 2)
	rotateConnectionsKeysResponseContentFieldNext        = big.NewInt(1 << 3)
	rotateConnectionsKeysResponseContentFieldFingerprint = big.NewInt(1 << 4)
	rotateConnectionsKeysResponseContentFieldThumbprint  = big.NewInt(1 << 5)
	rotateConnectionsKeysResponseContentFieldAlgorithm   = big.NewInt(1 << 6)
	rotateConnectionsKeysResponseContentFieldKeyUse      = big.NewInt(1 << 7)
	rotateConnectionsKeysResponseContentFieldSubjectDn   = big.NewInt(1 << 8)
)

type RotateConnectionsKeysResponseContent struct {
	// The key id of the signing key
	Kid string `json:"kid" url:"kid"`
	// The public certificate of the signing key
	Cert string `json:"cert" url:"cert"`
	// The public certificate of the signing key in pkcs7 format
	Pkcs *string `json:"pkcs,omitempty" url:"pkcs,omitempty"`
	// True if the key is the the next key
	Next *bool `json:"next,omitempty" url:"next,omitempty"`
	// The cert fingerprint
	Fingerprint string `json:"fingerprint" url:"fingerprint"`
	// The cert thumbprint
	Thumbprint string `json:"thumbprint" url:"thumbprint"`
	// Signing key algorithm
	Algorithm *string               `json:"algorithm,omitempty" url:"algorithm,omitempty"`
	KeyUse    *ConnectionKeyUseEnum `json:"key_use,omitempty" url:"key_use,omitempty"`
	SubjectDn *string               `json:"subject_dn,omitempty" url:"subject_dn,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (r *RotateConnectionsKeysResponseContent) GetKid() string {
	if r == nil {
		return ""
	}
	return r.Kid
}

func (r *RotateConnectionsKeysResponseContent) GetCert() string {
	if r == nil {
		return ""
	}
	return r.Cert
}

func (r *RotateConnectionsKeysResponseContent) GetPkcs() string {
	if r == nil || r.Pkcs == nil {
		return ""
	}
	return *r.Pkcs
}

func (r *RotateConnectionsKeysResponseContent) GetNext() bool {
	if r == nil || r.Next == nil {
		return false
	}
	return *r.Next
}

func (r *RotateConnectionsKeysResponseContent) GetFingerprint() string {
	if r == nil {
		return ""
	}
	return r.Fingerprint
}

func (r *RotateConnectionsKeysResponseContent) GetThumbprint() string {
	if r == nil {
		return ""
	}
	return r.Thumbprint
}

func (r *RotateConnectionsKeysResponseContent) GetAlgorithm() string {
	if r == nil || r.Algorithm == nil {
		return ""
	}
	return *r.Algorithm
}

func (r *RotateConnectionsKeysResponseContent) GetKeyUse() ConnectionKeyUseEnum {
	if r == nil || r.KeyUse == nil {
		return ""
	}
	return *r.KeyUse
}

func (r *RotateConnectionsKeysResponseContent) GetSubjectDn() string {
	if r == nil || r.SubjectDn == nil {
		return ""
	}
	return *r.SubjectDn
}

func (r *RotateConnectionsKeysResponseContent) GetExtraProperties() map[string]interface{} {
	return r.ExtraProperties
}

func (r *RotateConnectionsKeysResponseContent) require(field *big.Int) {
	if r.explicitFields == nil {
		r.explicitFields = big.NewInt(0)
	}
	r.explicitFields.Or(r.explicitFields, field)
}

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RotateConnectionsKeysResponseContent) SetKid(kid string) {
	r.Kid = kid
	r.require(rotateConnectionsKeysResponseContentFieldKid)
}

// SetCert sets the Cert field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RotateConnectionsKeysResponseContent) SetCert(cert string) {
	r.Cert = cert
	r.require(rotateConnectionsKeysResponseContentFieldCert)
}

// SetPkcs sets the Pkcs field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RotateConnectionsKeysResponseContent) SetPkcs(pkcs *string) {
	r.Pkcs = pkcs
	r.require(rotateConnectionsKeysResponseContentFieldPkcs)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RotateConnectionsKeysResponseContent) SetNext(next *bool) {
	r.Next = next
	r.require(rotateConnectionsKeysResponseContentFieldNext)
}

// SetFingerprint sets the Fingerprint field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RotateConnectionsKeysResponseContent) SetFingerprint(fingerprint string) {
	r.Fingerprint = fingerprint
	r.require(rotateConnectionsKeysResponseContentFieldFingerprint)
}

// SetThumbprint sets the Thumbprint field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RotateConnectionsKeysResponseContent) SetThumbprint(thumbprint string) {
	r.Thumbprint = thumbprint
	r.require(rotateConnectionsKeysResponseContentFieldThumbprint)
}

// SetAlgorithm sets the Algorithm field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RotateConnectionsKeysResponseContent) SetAlgorithm(algorithm *string) {
	r.Algorithm = algorithm
	r.require(rotateConnectionsKeysResponseContentFieldAlgorithm)
}

// SetKeyUse sets the KeyUse field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RotateConnectionsKeysResponseContent) SetKeyUse(keyUse *ConnectionKeyUseEnum) {
	r.KeyUse = keyUse
	r.require(rotateConnectionsKeysResponseContentFieldKeyUse)
}

// SetSubjectDn sets the SubjectDn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RotateConnectionsKeysResponseContent) SetSubjectDn(subjectDn *string) {
	r.SubjectDn = subjectDn
	r.require(rotateConnectionsKeysResponseContentFieldSubjectDn)
}

func (r *RotateConnectionsKeysResponseContent) UnmarshalJSON(data []byte) error {
	type embed RotateConnectionsKeysResponseContent
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*r = RotateConnectionsKeysResponseContent(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *r)
	if err != nil {
		return err
	}
	r.ExtraProperties = extraProperties
	r.rawJSON = json.RawMessage(data)
	return nil
}

func (r *RotateConnectionsKeysResponseContent) MarshalJSON() ([]byte, error) {
	type embed RotateConnectionsKeysResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, r.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, r.ExtraProperties)
}

func (r *RotateConnectionsKeysResponseContent) String() string {
	if len(r.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(r.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(r); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", r)
}

var (
	rotateSigningKeysResponseContentFieldCert = big.NewInt(1 << 0)
	rotateSigningKeysResponseContentFieldKid  = big.NewInt(1 << 1)
)

type RotateSigningKeysResponseContent struct {
	// Next key certificate
	Cert string `json:"cert" url:"cert"`
	// Next key id
	Kid string `json:"kid" url:"kid"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	ExtraProperties map[string]interface{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (r *RotateSigningKeysResponseContent) GetCert() string {
	if r == nil {
		return ""
	}
	return r.Cert
}

func (r *RotateSigningKeysResponseContent) GetKid() string {
	if r == nil {
		return ""
	}
	return r.Kid
}

func (r *RotateSigningKeysResponseContent) GetExtraProperties() map[string]interface{} {
	return r.ExtraProperties
}

func (r *RotateSigningKeysResponseContent) require(field *big.Int) {
	if r.explicitFields == nil {
		r.explicitFields = big.NewInt(0)
	}
	r.explicitFields.Or(r.explicitFields, field)
}

// SetCert sets the Cert field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RotateSigningKeysResponseContent) SetCert(cert string) {
	r.Cert = cert
	r.require(rotateSigningKeysResponseContentFieldCert)
}

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (r *RotateSigningKeysResponseContent) SetKid(kid string) {
	r.Kid = kid
	r.require(rotateSigningKeysResponseContentFieldKid)
}

func (r *RotateSigningKeysResponseContent) UnmarshalJSON(data []byte) error {
	type embed RotateSigningKeysResponseContent
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*r = RotateSigningKeysResponseContent(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *r)
	if err != nil {
		return err
	}
	r.ExtraProperties = extraProperties
	r.rawJSON = json.RawMessage(data)
	return nil
}

func (r *RotateSigningKeysResponseContent) MarshalJSON() ([]byte, error) {
	type embed RotateSigningKeysResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*r),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, r.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, r.ExtraProperties)
}

func (r *RotateSigningKeysResponseContent) String() string {
	if len(r.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(r.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(r); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", r)
}

var (
	sCIMMappingItemFieldAuth0 = big.NewInt(1 << 0)
	sCIMMappingItemFieldSCIM  = big.NewInt(1 << 1)
)

type SCIMMappingItem struct {
	// The field location in the auth0 schema
	Auth0 *string `json:"auth0,omitempty" url:"auth0,omitempty"`
	// The field location in the SCIM schema
	SCIM *string `json:"scim,omitempty" url:"scim,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (s *SCIMMappingItem) GetAuth0() string {
	if s == nil || s.Auth0 == nil {
		return ""
	}
	return *s.Auth0
}

func (s *SCIMMappingItem) GetSCIM() string {
	if s == nil || s.SCIM == nil {
		return ""
	}
	return *s.SCIM
}

func (s *SCIMMappingItem) GetExtraProperties() map[string]interface{} {
	return s.ExtraProperties
}

func (s *SCIMMappingItem) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetAuth0 sets the Auth0 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SCIMMappingItem) SetAuth0(auth0 *string) {
	s.Auth0 = auth0
	s.require(sCIMMappingItemFieldAuth0)
}

// SetSCIM sets the SCIM field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SCIMMappingItem) SetSCIM(scim *string) {
	s.SCIM = scim
	s.require(sCIMMappingItemFieldSCIM)
}

func (s *SCIMMappingItem) UnmarshalJSON(data []byte) error {
	type embed SCIMMappingItem
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*s = SCIMMappingItem(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.ExtraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SCIMMappingItem) MarshalJSON() ([]byte, error) {
	type embed SCIMMappingItem
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, s.ExtraProperties)
}

func (s *SCIMMappingItem) 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)
}

var (
	sCIMTokenItemFieldTokenID    = big.NewInt(1 << 0)
	sCIMTokenItemFieldScopes     = big.NewInt(1 << 1)
	sCIMTokenItemFieldCreatedAt  = big.NewInt(1 << 2)
	sCIMTokenItemFieldValidUntil = big.NewInt(1 << 3)
	sCIMTokenItemFieldLastUsedAt = big.NewInt(1 << 4)
)

type SCIMTokenItem struct {
	// The token's identifier
	TokenID *string `json:"token_id,omitempty" url:"token_id,omitempty"`
	// The scopes of the scim token
	Scopes []string `json:"scopes,omitempty" url:"scopes,omitempty"`
	// The token's created at timestamp
	CreatedAt *string `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The token's valid until timestamp
	ValidUntil *string `json:"valid_until,omitempty" url:"valid_until,omitempty"`
	// The token's last used at timestamp
	LastUsedAt *string `json:"last_used_at,omitempty" url:"last_used_at,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (s *SCIMTokenItem) GetTokenID() string {
	if s == nil || s.TokenID == nil {
		return ""
	}
	return *s.TokenID
}

func (s *SCIMTokenItem) GetScopes() []string {
	if s == nil || s.Scopes == nil {
		return nil
	}
	return s.Scopes
}

func (s *SCIMTokenItem) GetCreatedAt() string {
	if s == nil || s.CreatedAt == nil {
		return ""
	}
	return *s.CreatedAt
}

func (s *SCIMTokenItem) GetValidUntil() string {
	if s == nil || s.ValidUntil == nil {
		return ""
	}
	return *s.ValidUntil
}

func (s *SCIMTokenItem) GetLastUsedAt() string {
	if s == nil || s.LastUsedAt == nil {
		return ""
	}
	return *s.LastUsedAt
}

func (s *SCIMTokenItem) GetExtraProperties() map[string]interface{} {
	return s.ExtraProperties
}

func (s *SCIMTokenItem) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetTokenID sets the TokenID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SCIMTokenItem) SetTokenID(tokenID *string) {
	s.TokenID = tokenID
	s.require(sCIMTokenItemFieldTokenID)
}

// SetScopes sets the Scopes field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SCIMTokenItem) SetScopes(scopes []string) {
	s.Scopes = scopes
	s.require(sCIMTokenItemFieldScopes)
}

// 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 *SCIMTokenItem) SetCreatedAt(createdAt *string) {
	s.CreatedAt = createdAt
	s.require(sCIMTokenItemFieldCreatedAt)
}

// SetValidUntil sets the ValidUntil field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SCIMTokenItem) SetValidUntil(validUntil *string) {
	s.ValidUntil = validUntil
	s.require(sCIMTokenItemFieldValidUntil)
}

// SetLastUsedAt sets the LastUsedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SCIMTokenItem) SetLastUsedAt(lastUsedAt *string) {
	s.LastUsedAt = lastUsedAt
	s.require(sCIMTokenItemFieldLastUsedAt)
}

func (s *SCIMTokenItem) UnmarshalJSON(data []byte) error {
	type embed SCIMTokenItem
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*s = SCIMTokenItem(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.ExtraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SCIMTokenItem) MarshalJSON() ([]byte, error) {
	type embed SCIMTokenItem
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, s.ExtraProperties)
}

func (s *SCIMTokenItem) 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)
}

// Name of the screen
type ScreenGroupNameEnum string

const (
	ScreenGroupNameEnumLogin                                     ScreenGroupNameEnum = "login"
	ScreenGroupNameEnumLoginID                                   ScreenGroupNameEnum = "login-id"
	ScreenGroupNameEnumLoginPassword                             ScreenGroupNameEnum = "login-password"
	ScreenGroupNameEnumLoginPasswordlessEmailCode                ScreenGroupNameEnum = "login-passwordless-email-code"
	ScreenGroupNameEnumLoginPasswordlessEmailLink                ScreenGroupNameEnum = "login-passwordless-email-link"
	ScreenGroupNameEnumLoginPasswordlessSmsOtp                   ScreenGroupNameEnum = "login-passwordless-sms-otp"
	ScreenGroupNameEnumLoginEmailVerification                    ScreenGroupNameEnum = "login-email-verification"
	ScreenGroupNameEnumSignup                                    ScreenGroupNameEnum = "signup"
	ScreenGroupNameEnumSignupID                                  ScreenGroupNameEnum = "signup-id"
	ScreenGroupNameEnumSignupPassword                            ScreenGroupNameEnum = "signup-password"
	ScreenGroupNameEnumPhoneIdentifierEnrollment                 ScreenGroupNameEnum = "phone-identifier-enrollment"
	ScreenGroupNameEnumPhoneIdentifierChallenge                  ScreenGroupNameEnum = "phone-identifier-challenge"
	ScreenGroupNameEnumEmailIdentifierChallenge                  ScreenGroupNameEnum = "email-identifier-challenge"
	ScreenGroupNameEnumResetPasswordRequest                      ScreenGroupNameEnum = "reset-password-request"
	ScreenGroupNameEnumResetPasswordEmail                        ScreenGroupNameEnum = "reset-password-email"
	ScreenGroupNameEnumResetPassword                             ScreenGroupNameEnum = "reset-password"
	ScreenGroupNameEnumResetPasswordSuccess                      ScreenGroupNameEnum = "reset-password-success"
	ScreenGroupNameEnumResetPasswordError                        ScreenGroupNameEnum = "reset-password-error"
	ScreenGroupNameEnumResetPasswordMfaEmailChallenge            ScreenGroupNameEnum = "reset-password-mfa-email-challenge"
	ScreenGroupNameEnumResetPasswordMfaOtpChallenge              ScreenGroupNameEnum = "reset-password-mfa-otp-challenge"
	ScreenGroupNameEnumResetPasswordMfaPhoneChallenge            ScreenGroupNameEnum = "reset-password-mfa-phone-challenge"
	ScreenGroupNameEnumResetPasswordMfaPushChallengePush         ScreenGroupNameEnum = "reset-password-mfa-push-challenge-push"
	ScreenGroupNameEnumResetPasswordMfaRecoveryCodeChallenge     ScreenGroupNameEnum = "reset-password-mfa-recovery-code-challenge"
	ScreenGroupNameEnumResetPasswordMfaSmsChallenge              ScreenGroupNameEnum = "reset-password-mfa-sms-challenge"
	ScreenGroupNameEnumResetPasswordMfaVoiceChallenge            ScreenGroupNameEnum = "reset-password-mfa-voice-challenge"
	ScreenGroupNameEnumResetPasswordMfaWebauthnPlatformChallenge ScreenGroupNameEnum = "reset-password-mfa-webauthn-platform-challenge"
	ScreenGroupNameEnumResetPasswordMfaWebauthnRoamingChallenge  ScreenGroupNameEnum = "reset-password-mfa-webauthn-roaming-challenge"
	ScreenGroupNameEnumCustomForm                                ScreenGroupNameEnum = "custom-form"
	ScreenGroupNameEnumConsent                                   ScreenGroupNameEnum = "consent"
	ScreenGroupNameEnumCustomizedConsent                         ScreenGroupNameEnum = "customized-consent"
	ScreenGroupNameEnumLogout                                    ScreenGroupNameEnum = "logout"
	ScreenGroupNameEnumLogoutComplete                            ScreenGroupNameEnum = "logout-complete"
	ScreenGroupNameEnumLogoutAborted                             ScreenGroupNameEnum = "logout-aborted"
	ScreenGroupNameEnumMfaPushWelcome                            ScreenGroupNameEnum = "mfa-push-welcome"
	ScreenGroupNameEnumMfaPushEnrollmentQr                       ScreenGroupNameEnum = "mfa-push-enrollment-qr"
	ScreenGroupNameEnumMfaPushEnrollmentCode                     ScreenGroupNameEnum = "mfa-push-enrollment-code"
	ScreenGroupNameEnumMfaPushSuccess                            ScreenGroupNameEnum = "mfa-push-success"
	ScreenGroupNameEnumMfaPushChallengePush                      ScreenGroupNameEnum = "mfa-push-challenge-push"
	ScreenGroupNameEnumMfaPushList                               ScreenGroupNameEnum = "mfa-push-list"
	ScreenGroupNameEnumMfaOtpEnrollmentQr                        ScreenGroupNameEnum = "mfa-otp-enrollment-qr"
	ScreenGroupNameEnumMfaOtpEnrollmentCode                      ScreenGroupNameEnum = "mfa-otp-enrollment-code"
	ScreenGroupNameEnumMfaOtpChallenge                           ScreenGroupNameEnum = "mfa-otp-challenge"
	ScreenGroupNameEnumMfaVoiceEnrollment                        ScreenGroupNameEnum = "mfa-voice-enrollment"
	ScreenGroupNameEnumMfaVoiceChallenge                         ScreenGroupNameEnum = "mfa-voice-challenge"
	ScreenGroupNameEnumMfaPhoneChallenge                         ScreenGroupNameEnum = "mfa-phone-challenge"
	ScreenGroupNameEnumMfaPhoneEnrollment                        ScreenGroupNameEnum = "mfa-phone-enrollment"
	ScreenGroupNameEnumMfaWebauthnPlatformEnrollment             ScreenGroupNameEnum = "mfa-webauthn-platform-enrollment"
	ScreenGroupNameEnumMfaWebauthnRoamingEnrollment              ScreenGroupNameEnum = "mfa-webauthn-roaming-enrollment"
	ScreenGroupNameEnumMfaWebauthnPlatformChallenge              ScreenGroupNameEnum = "mfa-webauthn-platform-challenge"
	ScreenGroupNameEnumMfaWebauthnRoamingChallenge               ScreenGroupNameEnum = "mfa-webauthn-roaming-challenge"
	ScreenGroupNameEnumMfaWebauthnChangeKeyNickname              ScreenGroupNameEnum = "mfa-webauthn-change-key-nickname"
	ScreenGroupNameEnumMfaWebauthnEnrollmentSuccess              ScreenGroupNameEnum = "mfa-webauthn-enrollment-success"
	ScreenGroupNameEnumMfaWebauthnError                          ScreenGroupNameEnum = "mfa-webauthn-error"
	ScreenGroupNameEnumMfaWebauthnNotAvailableError              ScreenGroupNameEnum = "mfa-webauthn-not-available-error"
	ScreenGroupNameEnumMfaCountryCodes                           ScreenGroupNameEnum = "mfa-country-codes"
	ScreenGroupNameEnumMfaSmsEnrollment                          ScreenGroupNameEnum = "mfa-sms-enrollment"
	ScreenGroupNameEnumMfaSmsChallenge                           ScreenGroupNameEnum = "mfa-sms-challenge"
	ScreenGroupNameEnumMfaSmsList                                ScreenGroupNameEnum = "mfa-sms-list"
	ScreenGroupNameEnumMfaEmailChallenge                         ScreenGroupNameEnum = "mfa-email-challenge"
	ScreenGroupNameEnumMfaEmailList                              ScreenGroupNameEnum = "mfa-email-list"
	ScreenGroupNameEnumMfaRecoveryCodeEnrollment                 ScreenGroupNameEnum = "mfa-recovery-code-enrollment"
	ScreenGroupNameEnumMfaRecoveryCodeChallengeNewCode           ScreenGroupNameEnum = "mfa-recovery-code-challenge-new-code"
	ScreenGroupNameEnumMfaRecoveryCodeChallenge                  ScreenGroupNameEnum = "mfa-recovery-code-challenge"
	ScreenGroupNameEnumMfaDetectBrowserCapabilities              ScreenGroupNameEnum = "mfa-detect-browser-capabilities"
	ScreenGroupNameEnumMfaEnrollResult                           ScreenGroupNameEnum = "mfa-enroll-result"
	ScreenGroupNameEnumMfaLoginOptions                           ScreenGroupNameEnum = "mfa-login-options"
	ScreenGroupNameEnumMfaBeginEnrollOptions                     ScreenGroupNameEnum = "mfa-begin-enroll-options"
	ScreenGroupNameEnumStatus                                    ScreenGroupNameEnum = "status"
	ScreenGroupNameEnumDeviceCodeActivation                      ScreenGroupNameEnum = "device-code-activation"
	ScreenGroupNameEnumDeviceCodeActivationAllowed               ScreenGroupNameEnum = "device-code-activation-allowed"
	ScreenGroupNameEnumDeviceCodeActivationDenied                ScreenGroupNameEnum = "device-code-activation-denied"
	ScreenGroupNameEnumDeviceCodeConfirmation                    ScreenGroupNameEnum = "device-code-confirmation"
	ScreenGroupNameEnumEmailVerificationResult                   ScreenGroupNameEnum = "email-verification-result"
	ScreenGroupNameEnumEmailOtpChallenge                         ScreenGroupNameEnum = "email-otp-challenge"
	ScreenGroupNameEnumOrganizationSelection                     ScreenGroupNameEnum = "organization-selection"
	ScreenGroupNameEnumOrganizationPicker                        ScreenGroupNameEnum = "organization-picker"
	ScreenGroupNameEnumPreLoginOrganizationPicker                ScreenGroupNameEnum = "pre-login-organization-picker"
	ScreenGroupNameEnumAcceptInvitation                          ScreenGroupNameEnum = "accept-invitation"
	ScreenGroupNameEnumRedeemTicket                              ScreenGroupNameEnum = "redeem-ticket"
	ScreenGroupNameEnumPasskeyEnrollment                         ScreenGroupNameEnum = "passkey-enrollment"
	ScreenGroupNameEnumPasskeyEnrollmentLocal                    ScreenGroupNameEnum = "passkey-enrollment-local"
	ScreenGroupNameEnumInterstitialCaptcha                       ScreenGroupNameEnum = "interstitial-captcha"
	ScreenGroupNameEnumBruteForceProtectionUnblock               ScreenGroupNameEnum = "brute-force-protection-unblock"
	ScreenGroupNameEnumBruteForceProtectionUnblockSuccess        ScreenGroupNameEnum = "brute-force-protection-unblock-success"
	ScreenGroupNameEnumBruteForceProtectionUnblockFailure        ScreenGroupNameEnum = "brute-force-protection-unblock-failure"
	ScreenGroupNameEnumAsyncApprovalWrongUser                    ScreenGroupNameEnum = "async-approval-wrong-user"
	ScreenGroupNameEnumAsyncApprovalAccepted                     ScreenGroupNameEnum = "async-approval-accepted"
	ScreenGroupNameEnumAsyncApprovalDenied                       ScreenGroupNameEnum = "async-approval-denied"
)

func NewScreenGroupNameEnumFromString(s string) (ScreenGroupNameEnum, error) {
	switch s {
	case "login":
		return ScreenGroupNameEnumLogin, nil
	case "login-id":
		return ScreenGroupNameEnumLoginID, nil
	case "login-password":
		return ScreenGroupNameEnumLoginPassword, nil
	case "login-passwordless-email-code":
		return ScreenGroupNameEnumLoginPasswordlessEmailCode, nil
	case "login-passwordless-email-link":
		return ScreenGroupNameEnumLoginPasswordlessEmailLink, nil
	case "login-passwordless-sms-otp":
		return ScreenGroupNameEnumLoginPasswordlessSmsOtp, nil
	case "login-email-verification":
		return ScreenGroupNameEnumLoginEmailVerification, nil
	case "signup":
		return ScreenGroupNameEnumSignup, nil
	case "signup-id":
		return ScreenGroupNameEnumSignupID, nil
	case "signup-password":
		return ScreenGroupNameEnumSignupPassword, nil
	case "phone-identifier-enrollment":
		return ScreenGroupNameEnumPhoneIdentifierEnrollment, nil
	case "phone-identifier-challenge":
		return ScreenGroupNameEnumPhoneIdentifierChallenge, nil
	case "email-identifier-challenge":
		return ScreenGroupNameEnumEmailIdentifierChallenge, nil
	case "reset-password-request":
		return ScreenGroupNameEnumResetPasswordRequest, nil
	case "reset-password-email":
		return ScreenGroupNameEnumResetPasswordEmail, nil
	case "reset-password":
		return ScreenGroupNameEnumResetPassword, nil
	case "reset-password-success":
		return ScreenGroupNameEnumResetPasswordSuccess, nil
	case "reset-password-error":
		return ScreenGroupNameEnumResetPasswordError, nil
	case "reset-password-mfa-email-challenge":
		return ScreenGroupNameEnumResetPasswordMfaEmailChallenge, nil
	case "reset-password-mfa-otp-challenge":
		return ScreenGroupNameEnumResetPasswordMfaOtpChallenge, nil
	case "reset-password-mfa-phone-challenge":
		return ScreenGroupNameEnumResetPasswordMfaPhoneChallenge, nil
	case "reset-password-mfa-push-challenge-push":
		return ScreenGroupNameEnumResetPasswordMfaPushChallengePush, nil
	case "reset-password-mfa-recovery-code-challenge":
		return ScreenGroupNameEnumResetPasswordMfaRecoveryCodeChallenge, nil
	case "reset-password-mfa-sms-challenge":
		return ScreenGroupNameEnumResetPasswordMfaSmsChallenge, nil
	case "reset-password-mfa-voice-challenge":
		return ScreenGroupNameEnumResetPasswordMfaVoiceChallenge, nil
	case "reset-password-mfa-webauthn-platform-challenge":
		return ScreenGroupNameEnumResetPasswordMfaWebauthnPlatformChallenge, nil
	case "reset-password-mfa-webauthn-roaming-challenge":
		return ScreenGroupNameEnumResetPasswordMfaWebauthnRoamingChallenge, nil
	case "custom-form":
		return ScreenGroupNameEnumCustomForm, nil
	case "consent":
		return ScreenGroupNameEnumConsent, nil
	case "customized-consent":
		return ScreenGroupNameEnumCustomizedConsent, nil
	case "logout":
		return ScreenGroupNameEnumLogout, nil
	case "logout-complete":
		return ScreenGroupNameEnumLogoutComplete, nil
	case "logout-aborted":
		return ScreenGroupNameEnumLogoutAborted, nil
	case "mfa-push-welcome":
		return ScreenGroupNameEnumMfaPushWelcome, nil
	case "mfa-push-enrollment-qr":
		return ScreenGroupNameEnumMfaPushEnrollmentQr, nil
	case "mfa-push-enrollment-code":
		return ScreenGroupNameEnumMfaPushEnrollmentCode, nil
	case "mfa-push-success":
		return ScreenGroupNameEnumMfaPushSuccess, nil
	case "mfa-push-challenge-push":
		return ScreenGroupNameEnumMfaPushChallengePush, nil
	case "mfa-push-list":
		return ScreenGroupNameEnumMfaPushList, nil
	case "mfa-otp-enrollment-qr":
		return ScreenGroupNameEnumMfaOtpEnrollmentQr, nil
	case "mfa-otp-enrollment-code":
		return ScreenGroupNameEnumMfaOtpEnrollmentCode, nil
	case "mfa-otp-challenge":
		return ScreenGroupNameEnumMfaOtpChallenge, nil
	case "mfa-voice-enrollment":
		return ScreenGroupNameEnumMfaVoiceEnrollment, nil
	case "mfa-voice-challenge":
		return ScreenGroupNameEnumMfaVoiceChallenge, nil
	case "mfa-phone-challenge":
		return ScreenGroupNameEnumMfaPhoneChallenge, nil
	case "mfa-phone-enrollment":
		return ScreenGroupNameEnumMfaPhoneEnrollment, nil
	case "mfa-webauthn-platform-enrollment":
		return ScreenGroupNameEnumMfaWebauthnPlatformEnrollment, nil
	case "mfa-webauthn-roaming-enrollment":
		return ScreenGroupNameEnumMfaWebauthnRoamingEnrollment, nil
	case "mfa-webauthn-platform-challenge":
		return ScreenGroupNameEnumMfaWebauthnPlatformChallenge, nil
	case "mfa-webauthn-roaming-challenge":
		return ScreenGroupNameEnumMfaWebauthnRoamingChallenge, nil
	case "mfa-webauthn-change-key-nickname":
		return ScreenGroupNameEnumMfaWebauthnChangeKeyNickname, nil
	case "mfa-webauthn-enrollment-success":
		return ScreenGroupNameEnumMfaWebauthnEnrollmentSuccess, nil
	case "mfa-webauthn-error":
		return ScreenGroupNameEnumMfaWebauthnError, nil
	case "mfa-webauthn-not-available-error":
		return ScreenGroupNameEnumMfaWebauthnNotAvailableError, nil
	case "mfa-country-codes":
		return ScreenGroupNameEnumMfaCountryCodes, nil
	case "mfa-sms-enrollment":
		return ScreenGroupNameEnumMfaSmsEnrollment, nil
	case "mfa-sms-challenge":
		return ScreenGroupNameEnumMfaSmsChallenge, nil
	case "mfa-sms-list":
		return ScreenGroupNameEnumMfaSmsList, nil
	case "mfa-email-challenge":
		return ScreenGroupNameEnumMfaEmailChallenge, nil
	case "mfa-email-list":
		return ScreenGroupNameEnumMfaEmailList, nil
	case "mfa-recovery-code-enrollment":
		return ScreenGroupNameEnumMfaRecoveryCodeEnrollment, nil
	case "mfa-recovery-code-challenge-new-code":
		return ScreenGroupNameEnumMfaRecoveryCodeChallengeNewCode, nil
	case "mfa-recovery-code-challenge":
		return ScreenGroupNameEnumMfaRecoveryCodeChallenge, nil
	case "mfa-detect-browser-capabilities":
		return ScreenGroupNameEnumMfaDetectBrowserCapabilities, nil
	case "mfa-enroll-result":
		return ScreenGroupNameEnumMfaEnrollResult, nil
	case "mfa-login-options":
		return ScreenGroupNameEnumMfaLoginOptions, nil
	case "mfa-begin-enroll-options":
		return ScreenGroupNameEnumMfaBeginEnrollOptions, nil
	case "status":
		return ScreenGroupNameEnumStatus, nil
	case "device-code-activation":
		return ScreenGroupNameEnumDeviceCodeActivation, nil
	case "device-code-activation-allowed":
		return ScreenGroupNameEnumDeviceCodeActivationAllowed, nil
	case "device-code-activation-denied":
		return ScreenGroupNameEnumDeviceCodeActivationDenied, nil
	case "device-code-confirmation":
		return ScreenGroupNameEnumDeviceCodeConfirmation, nil
	case "email-verification-result":
		return ScreenGroupNameEnumEmailVerificationResult, nil
	case "email-otp-challenge":
		return ScreenGroupNameEnumEmailOtpChallenge, nil
	case "organization-selection":
		return ScreenGroupNameEnumOrganizationSelection, nil
	case "organization-picker":
		return ScreenGroupNameEnumOrganizationPicker, nil
	case "pre-login-organization-picker":
		return ScreenGroupNameEnumPreLoginOrganizationPicker, nil
	case "accept-invitation":
		return ScreenGroupNameEnumAcceptInvitation, nil
	case "redeem-ticket":
		return ScreenGroupNameEnumRedeemTicket, nil
	case "passkey-enrollment":
		return ScreenGroupNameEnumPasskeyEnrollment, nil
	case "passkey-enrollment-local":
		return ScreenGroupNameEnumPasskeyEnrollmentLocal, nil
	case "interstitial-captcha":
		return ScreenGroupNameEnumInterstitialCaptcha, nil
	case "brute-force-protection-unblock":
		return ScreenGroupNameEnumBruteForceProtectionUnblock, nil
	case "brute-force-protection-unblock-success":
		return ScreenGroupNameEnumBruteForceProtectionUnblockSuccess, nil
	case "brute-force-protection-unblock-failure":
		return ScreenGroupNameEnumBruteForceProtectionUnblockFailure, nil
	case "async-approval-wrong-user":
		return ScreenGroupNameEnumAsyncApprovalWrongUser, nil
	case "async-approval-accepted":
		return ScreenGroupNameEnumAsyncApprovalAccepted, nil
	case "async-approval-denied":
		return ScreenGroupNameEnumAsyncApprovalDenied, nil
	}
	var t ScreenGroupNameEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (s ScreenGroupNameEnum) Ptr() *ScreenGroupNameEnum {
	return &s
}

// The language of the custom text.
type SelfServiceProfileCustomTextLanguageEnum = string

// The page where the custom text is shown.
type SelfServiceProfileCustomTextPageEnum = string

// If provided, this will create a new connection for the SSO flow with the given configuration
var (
	selfServiceProfileSSOTicketConnectionConfigFieldName               = big.NewInt(1 << 0)
	selfServiceProfileSSOTicketConnectionConfigFieldDisplayName        = big.NewInt(1 << 1)
	selfServiceProfileSSOTicketConnectionConfigFieldIsDomainConnection = big.NewInt(1 << 2)
	selfServiceProfileSSOTicketConnectionConfigFieldShowAsButton       = big.NewInt(1 << 3)
	selfServiceProfileSSOTicketConnectionConfigFieldMetadata           = big.NewInt(1 << 4)
	selfServiceProfileSSOTicketConnectionConfigFieldOptions            = big.NewInt(1 << 5)
)

type SelfServiceProfileSSOTicketConnectionConfig struct {
	// The name of the connection that will be created as a part of the SSO flow.
	Name string `json:"name" url:"name"`
	// Connection name used in the new universal login experience
	DisplayName *string `json:"display_name,omitempty" url:"display_name,omitempty"`
	// <code>true</code> promotes to a domain-level connection so that third-party applications can use it. <code>false</code> does not promote the connection, so only first-party applications with the connection enabled can use it. (Defaults to <code>false</code>.)
	IsDomainConnection *bool `json:"is_domain_connection,omitempty" url:"is_domain_connection,omitempty"`
	// Enables showing a button for the connection in the login page (new experience only). If false, it will be usable only by HRD. (Defaults to <code>false</code>.)
	ShowAsButton *bool                                         `json:"show_as_button,omitempty" url:"show_as_button,omitempty"`
	Metadata     *ConnectionsMetadata                          `json:"metadata,omitempty" url:"metadata,omitempty"`
	Options      *SelfServiceProfileSSOTicketConnectionOptions `json:"options,omitempty" url:"options,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 *SelfServiceProfileSSOTicketConnectionConfig) GetName() string {
	if s == nil {
		return ""
	}
	return s.Name
}

func (s *SelfServiceProfileSSOTicketConnectionConfig) GetDisplayName() string {
	if s == nil || s.DisplayName == nil {
		return ""
	}
	return *s.DisplayName
}

func (s *SelfServiceProfileSSOTicketConnectionConfig) GetIsDomainConnection() bool {
	if s == nil || s.IsDomainConnection == nil {
		return false
	}
	return *s.IsDomainConnection
}

func (s *SelfServiceProfileSSOTicketConnectionConfig) GetShowAsButton() bool {
	if s == nil || s.ShowAsButton == nil {
		return false
	}
	return *s.ShowAsButton
}

func (s *SelfServiceProfileSSOTicketConnectionConfig) GetMetadata() ConnectionsMetadata {
	if s == nil || s.Metadata == nil {
		return nil
	}
	return *s.Metadata
}

func (s *SelfServiceProfileSSOTicketConnectionConfig) GetOptions() SelfServiceProfileSSOTicketConnectionOptions {
	if s == nil || s.Options == nil {
		return SelfServiceProfileSSOTicketConnectionOptions{}
	}
	return *s.Options
}

func (s *SelfServiceProfileSSOTicketConnectionConfig) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SelfServiceProfileSSOTicketConnectionConfig) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// 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 *SelfServiceProfileSSOTicketConnectionConfig) SetName(name string) {
	s.Name = name
	s.require(selfServiceProfileSSOTicketConnectionConfigFieldName)
}

// SetDisplayName sets the DisplayName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketConnectionConfig) SetDisplayName(displayName *string) {
	s.DisplayName = displayName
	s.require(selfServiceProfileSSOTicketConnectionConfigFieldDisplayName)
}

// SetIsDomainConnection sets the IsDomainConnection field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketConnectionConfig) SetIsDomainConnection(isDomainConnection *bool) {
	s.IsDomainConnection = isDomainConnection
	s.require(selfServiceProfileSSOTicketConnectionConfigFieldIsDomainConnection)
}

// SetShowAsButton sets the ShowAsButton field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketConnectionConfig) SetShowAsButton(showAsButton *bool) {
	s.ShowAsButton = showAsButton
	s.require(selfServiceProfileSSOTicketConnectionConfigFieldShowAsButton)
}

// 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 *SelfServiceProfileSSOTicketConnectionConfig) SetMetadata(metadata *ConnectionsMetadata) {
	s.Metadata = metadata
	s.require(selfServiceProfileSSOTicketConnectionConfigFieldMetadata)
}

// SetOptions sets the Options field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketConnectionConfig) SetOptions(options *SelfServiceProfileSSOTicketConnectionOptions) {
	s.Options = options
	s.require(selfServiceProfileSSOTicketConnectionConfigFieldOptions)
}

func (s *SelfServiceProfileSSOTicketConnectionConfig) UnmarshalJSON(data []byte) error {
	type unmarshaler SelfServiceProfileSSOTicketConnectionConfig
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SelfServiceProfileSSOTicketConnectionConfig(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SelfServiceProfileSSOTicketConnectionConfig) MarshalJSON() ([]byte, error) {
	type embed SelfServiceProfileSSOTicketConnectionConfig
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SelfServiceProfileSSOTicketConnectionConfig) 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)
}

// The connection's options (depend on the connection strategy)
var (
	selfServiceProfileSSOTicketConnectionOptionsFieldIconURL       = big.NewInt(1 << 0)
	selfServiceProfileSSOTicketConnectionOptionsFieldDomainAliases = big.NewInt(1 << 1)
	selfServiceProfileSSOTicketConnectionOptionsFieldIdpinitiated  = big.NewInt(1 << 2)
)

type SelfServiceProfileSSOTicketConnectionOptions struct {
	// URL for the icon. Must use HTTPS.
	IconURL *string `json:"icon_url,omitempty" url:"icon_url,omitempty"`
	// List of domain_aliases that can be authenticated in the Identity Provider
	DomainAliases []string                                        `json:"domain_aliases,omitempty" url:"domain_aliases,omitempty"`
	Idpinitiated  *SelfServiceProfileSSOTicketIdpInitiatedOptions `json:"idpinitiated,omitempty" url:"idpinitiated,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 *SelfServiceProfileSSOTicketConnectionOptions) GetIconURL() string {
	if s == nil || s.IconURL == nil {
		return ""
	}
	return *s.IconURL
}

func (s *SelfServiceProfileSSOTicketConnectionOptions) GetDomainAliases() []string {
	if s == nil || s.DomainAliases == nil {
		return nil
	}
	return s.DomainAliases
}

func (s *SelfServiceProfileSSOTicketConnectionOptions) GetIdpinitiated() SelfServiceProfileSSOTicketIdpInitiatedOptions {
	if s == nil || s.Idpinitiated == nil {
		return SelfServiceProfileSSOTicketIdpInitiatedOptions{}
	}
	return *s.Idpinitiated
}

func (s *SelfServiceProfileSSOTicketConnectionOptions) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SelfServiceProfileSSOTicketConnectionOptions) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetIconURL sets the IconURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketConnectionOptions) SetIconURL(iconURL *string) {
	s.IconURL = iconURL
	s.require(selfServiceProfileSSOTicketConnectionOptionsFieldIconURL)
}

// SetDomainAliases sets the DomainAliases field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketConnectionOptions) SetDomainAliases(domainAliases []string) {
	s.DomainAliases = domainAliases
	s.require(selfServiceProfileSSOTicketConnectionOptionsFieldDomainAliases)
}

// SetIdpinitiated sets the Idpinitiated field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketConnectionOptions) SetIdpinitiated(idpinitiated *SelfServiceProfileSSOTicketIdpInitiatedOptions) {
	s.Idpinitiated = idpinitiated
	s.require(selfServiceProfileSSOTicketConnectionOptionsFieldIdpinitiated)
}

func (s *SelfServiceProfileSSOTicketConnectionOptions) UnmarshalJSON(data []byte) error {
	type unmarshaler SelfServiceProfileSSOTicketConnectionOptions
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SelfServiceProfileSSOTicketConnectionOptions(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SelfServiceProfileSSOTicketConnectionOptions) MarshalJSON() ([]byte, error) {
	type embed SelfServiceProfileSSOTicketConnectionOptions
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SelfServiceProfileSSOTicketConnectionOptions) 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)
}

// Configuration for the setup of the connection’s domain_aliases in the self-service SSO flow.
var (
	selfServiceProfileSSOTicketDomainAliasesConfigFieldDomainVerification = big.NewInt(1 << 0)
)

type SelfServiceProfileSSOTicketDomainAliasesConfig struct {
	DomainVerification SelfServiceProfileSSOTicketDomainVerificationEnum `json:"domain_verification" url:"domain_verification"`

	// 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 *SelfServiceProfileSSOTicketDomainAliasesConfig) GetDomainVerification() SelfServiceProfileSSOTicketDomainVerificationEnum {
	if s == nil {
		return ""
	}
	return s.DomainVerification
}

func (s *SelfServiceProfileSSOTicketDomainAliasesConfig) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SelfServiceProfileSSOTicketDomainAliasesConfig) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetDomainVerification sets the DomainVerification field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketDomainAliasesConfig) SetDomainVerification(domainVerification SelfServiceProfileSSOTicketDomainVerificationEnum) {
	s.DomainVerification = domainVerification
	s.require(selfServiceProfileSSOTicketDomainAliasesConfigFieldDomainVerification)
}

func (s *SelfServiceProfileSSOTicketDomainAliasesConfig) UnmarshalJSON(data []byte) error {
	type unmarshaler SelfServiceProfileSSOTicketDomainAliasesConfig
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SelfServiceProfileSSOTicketDomainAliasesConfig(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SelfServiceProfileSSOTicketDomainAliasesConfig) MarshalJSON() ([]byte, error) {
	type embed SelfServiceProfileSSOTicketDomainAliasesConfig
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SelfServiceProfileSSOTicketDomainAliasesConfig) 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)
}

// Whether the end user should complete the domain verification step. Possible values are 'none' (the step is not shown to the user), 'optional' (the user may add a domain alias in the domain verification step) or 'required' (the user must add a domain alias in order to enable the connection). Defaults to 'none'.
type SelfServiceProfileSSOTicketDomainVerificationEnum string

const (
	SelfServiceProfileSSOTicketDomainVerificationEnumNone     SelfServiceProfileSSOTicketDomainVerificationEnum = "none"
	SelfServiceProfileSSOTicketDomainVerificationEnumOptional SelfServiceProfileSSOTicketDomainVerificationEnum = "optional"
	SelfServiceProfileSSOTicketDomainVerificationEnumRequired SelfServiceProfileSSOTicketDomainVerificationEnum = "required"
)

func NewSelfServiceProfileSSOTicketDomainVerificationEnumFromString(s string) (SelfServiceProfileSSOTicketDomainVerificationEnum, error) {
	switch s {
	case "none":
		return SelfServiceProfileSSOTicketDomainVerificationEnumNone, nil
	case "optional":
		return SelfServiceProfileSSOTicketDomainVerificationEnumOptional, nil
	case "required":
		return SelfServiceProfileSSOTicketDomainVerificationEnumRequired, nil
	}
	var t SelfServiceProfileSSOTicketDomainVerificationEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (s SelfServiceProfileSSOTicketDomainVerificationEnum) Ptr() *SelfServiceProfileSSOTicketDomainVerificationEnum {
	return &s
}

var (
	selfServiceProfileSSOTicketEnabledOrganizationFieldOrganizationID          = big.NewInt(1 << 0)
	selfServiceProfileSSOTicketEnabledOrganizationFieldAssignMembershipOnLogin = big.NewInt(1 << 1)
	selfServiceProfileSSOTicketEnabledOrganizationFieldShowAsButton            = big.NewInt(1 << 2)
)

type SelfServiceProfileSSOTicketEnabledOrganization struct {
	// Organization identifier.
	OrganizationID string `json:"organization_id" url:"organization_id"`
	// When true, all users that log in with this connection will be automatically granted membership in the organization. When false, users must be granted membership in the organization before logging in with this connection.
	AssignMembershipOnLogin *bool `json:"assign_membership_on_login,omitempty" url:"assign_membership_on_login,omitempty"`
	// Determines whether a connection should be displayed on this organization’s login prompt. Only applicable for enterprise connections. Default: true.
	ShowAsButton *bool `json:"show_as_button,omitempty" url:"show_as_button,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 *SelfServiceProfileSSOTicketEnabledOrganization) GetOrganizationID() string {
	if s == nil {
		return ""
	}
	return s.OrganizationID
}

func (s *SelfServiceProfileSSOTicketEnabledOrganization) GetAssignMembershipOnLogin() bool {
	if s == nil || s.AssignMembershipOnLogin == nil {
		return false
	}
	return *s.AssignMembershipOnLogin
}

func (s *SelfServiceProfileSSOTicketEnabledOrganization) GetShowAsButton() bool {
	if s == nil || s.ShowAsButton == nil {
		return false
	}
	return *s.ShowAsButton
}

func (s *SelfServiceProfileSSOTicketEnabledOrganization) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SelfServiceProfileSSOTicketEnabledOrganization) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetOrganizationID sets the OrganizationID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketEnabledOrganization) SetOrganizationID(organizationID string) {
	s.OrganizationID = organizationID
	s.require(selfServiceProfileSSOTicketEnabledOrganizationFieldOrganizationID)
}

// SetAssignMembershipOnLogin sets the AssignMembershipOnLogin field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketEnabledOrganization) SetAssignMembershipOnLogin(assignMembershipOnLogin *bool) {
	s.AssignMembershipOnLogin = assignMembershipOnLogin
	s.require(selfServiceProfileSSOTicketEnabledOrganizationFieldAssignMembershipOnLogin)
}

// SetShowAsButton sets the ShowAsButton field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketEnabledOrganization) SetShowAsButton(showAsButton *bool) {
	s.ShowAsButton = showAsButton
	s.require(selfServiceProfileSSOTicketEnabledOrganizationFieldShowAsButton)
}

func (s *SelfServiceProfileSSOTicketEnabledOrganization) UnmarshalJSON(data []byte) error {
	type unmarshaler SelfServiceProfileSSOTicketEnabledOrganization
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SelfServiceProfileSSOTicketEnabledOrganization(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SelfServiceProfileSSOTicketEnabledOrganization) MarshalJSON() ([]byte, error) {
	type embed SelfServiceProfileSSOTicketEnabledOrganization
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SelfServiceProfileSSOTicketEnabledOrganization) 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)
}

// The protocol used to connect to the the default application
type SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnum string

const (
	SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnumSamlp  SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnum = "samlp"
	SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnumWsfed  SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnum = "wsfed"
	SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnumOauth2 SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnum = "oauth2"
)

func NewSelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnumFromString(s string) (SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnum, error) {
	switch s {
	case "samlp":
		return SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnumSamlp, nil
	case "wsfed":
		return SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnumWsfed, nil
	case "oauth2":
		return SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnumOauth2, nil
	}
	var t SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (s SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnum) Ptr() *SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnum {
	return &s
}

// Allows IdP-initiated login
var (
	selfServiceProfileSSOTicketIdpInitiatedOptionsFieldEnabled              = big.NewInt(1 << 0)
	selfServiceProfileSSOTicketIdpInitiatedOptionsFieldClientID             = big.NewInt(1 << 1)
	selfServiceProfileSSOTicketIdpInitiatedOptionsFieldClientProtocol       = big.NewInt(1 << 2)
	selfServiceProfileSSOTicketIdpInitiatedOptionsFieldClientAuthorizequery = big.NewInt(1 << 3)
)

type SelfServiceProfileSSOTicketIdpInitiatedOptions struct {
	// Enables IdP-initiated login for this connection
	Enabled *bool `json:"enabled,omitempty" url:"enabled,omitempty"`
	// Default application <code>client_id</code> user is redirected to after validated SAML response
	ClientID       *string                                                    `json:"client_id,omitempty" url:"client_id,omitempty"`
	ClientProtocol *SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnum `json:"client_protocol,omitempty" url:"client_protocol,omitempty"`
	// Query string options to customize the behaviour for OpenID Connect when <code>idpinitiated.client_protocol</code> is <code>oauth2</code>. Allowed parameters: <code>redirect_uri</code>, <code>scope</code>, <code>response_type</code>. For example, <code>redirect_uri=https://jwt.io&scope=openid email&response_type=token</code>
	ClientAuthorizequery *string `json:"client_authorizequery,omitempty" url:"client_authorizequery,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 *SelfServiceProfileSSOTicketIdpInitiatedOptions) GetEnabled() bool {
	if s == nil || s.Enabled == nil {
		return false
	}
	return *s.Enabled
}

func (s *SelfServiceProfileSSOTicketIdpInitiatedOptions) GetClientID() string {
	if s == nil || s.ClientID == nil {
		return ""
	}
	return *s.ClientID
}

func (s *SelfServiceProfileSSOTicketIdpInitiatedOptions) GetClientProtocol() SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnum {
	if s == nil || s.ClientProtocol == nil {
		return ""
	}
	return *s.ClientProtocol
}

func (s *SelfServiceProfileSSOTicketIdpInitiatedOptions) GetClientAuthorizequery() string {
	if s == nil || s.ClientAuthorizequery == nil {
		return ""
	}
	return *s.ClientAuthorizequery
}

func (s *SelfServiceProfileSSOTicketIdpInitiatedOptions) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SelfServiceProfileSSOTicketIdpInitiatedOptions) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketIdpInitiatedOptions) SetEnabled(enabled *bool) {
	s.Enabled = enabled
	s.require(selfServiceProfileSSOTicketIdpInitiatedOptionsFieldEnabled)
}

// SetClientID sets the ClientID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketIdpInitiatedOptions) SetClientID(clientID *string) {
	s.ClientID = clientID
	s.require(selfServiceProfileSSOTicketIdpInitiatedOptionsFieldClientID)
}

// SetClientProtocol sets the ClientProtocol field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketIdpInitiatedOptions) SetClientProtocol(clientProtocol *SelfServiceProfileSSOTicketIdpInitiatedClientProtocolEnum) {
	s.ClientProtocol = clientProtocol
	s.require(selfServiceProfileSSOTicketIdpInitiatedOptionsFieldClientProtocol)
}

// SetClientAuthorizequery sets the ClientAuthorizequery field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketIdpInitiatedOptions) SetClientAuthorizequery(clientAuthorizequery *string) {
	s.ClientAuthorizequery = clientAuthorizequery
	s.require(selfServiceProfileSSOTicketIdpInitiatedOptionsFieldClientAuthorizequery)
}

func (s *SelfServiceProfileSSOTicketIdpInitiatedOptions) UnmarshalJSON(data []byte) error {
	type unmarshaler SelfServiceProfileSSOTicketIdpInitiatedOptions
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SelfServiceProfileSSOTicketIdpInitiatedOptions(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SelfServiceProfileSSOTicketIdpInitiatedOptions) MarshalJSON() ([]byte, error) {
	type embed SelfServiceProfileSSOTicketIdpInitiatedOptions
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SelfServiceProfileSSOTicketIdpInitiatedOptions) 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)
}

// Configuration for the setup of Provisioning in the self-service flow.
var (
	selfServiceProfileSSOTicketProvisioningConfigFieldScopes        = big.NewInt(1 << 0)
	selfServiceProfileSSOTicketProvisioningConfigFieldTokenLifetime = big.NewInt(1 << 1)
)

type SelfServiceProfileSSOTicketProvisioningConfig struct {
	// The scopes of the SCIM tokens generated during the self-service flow.
	Scopes []SelfServiceProfileSSOTicketProvisioningScopeEnum `json:"scopes" url:"scopes"`
	// Lifetime of the tokens in seconds. Must be greater than 900. If not provided, the tokens don't expire.
	TokenLifetime *int `json:"token_lifetime,omitempty" url:"token_lifetime,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 *SelfServiceProfileSSOTicketProvisioningConfig) GetScopes() []SelfServiceProfileSSOTicketProvisioningScopeEnum {
	if s == nil {
		return nil
	}
	return s.Scopes
}

func (s *SelfServiceProfileSSOTicketProvisioningConfig) GetTokenLifetime() int {
	if s == nil || s.TokenLifetime == nil {
		return 0
	}
	return *s.TokenLifetime
}

func (s *SelfServiceProfileSSOTicketProvisioningConfig) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SelfServiceProfileSSOTicketProvisioningConfig) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetScopes sets the Scopes field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketProvisioningConfig) SetScopes(scopes []SelfServiceProfileSSOTicketProvisioningScopeEnum) {
	s.Scopes = scopes
	s.require(selfServiceProfileSSOTicketProvisioningConfigFieldScopes)
}

// SetTokenLifetime sets the TokenLifetime field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SelfServiceProfileSSOTicketProvisioningConfig) SetTokenLifetime(tokenLifetime *int) {
	s.TokenLifetime = tokenLifetime
	s.require(selfServiceProfileSSOTicketProvisioningConfigFieldTokenLifetime)
}

func (s *SelfServiceProfileSSOTicketProvisioningConfig) UnmarshalJSON(data []byte) error {
	type unmarshaler SelfServiceProfileSSOTicketProvisioningConfig
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SelfServiceProfileSSOTicketProvisioningConfig(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SelfServiceProfileSSOTicketProvisioningConfig) MarshalJSON() ([]byte, error) {
	type embed SelfServiceProfileSSOTicketProvisioningConfig
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SelfServiceProfileSSOTicketProvisioningConfig) 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 SelfServiceProfileSSOTicketProvisioningScopeEnum string

const (
	SelfServiceProfileSSOTicketProvisioningScopeEnumGetUsers    SelfServiceProfileSSOTicketProvisioningScopeEnum = "get:users"
	SelfServiceProfileSSOTicketProvisioningScopeEnumPostUsers   SelfServiceProfileSSOTicketProvisioningScopeEnum = "post:users"
	SelfServiceProfileSSOTicketProvisioningScopeEnumPutUsers    SelfServiceProfileSSOTicketProvisioningScopeEnum = "put:users"
	SelfServiceProfileSSOTicketProvisioningScopeEnumPatchUsers  SelfServiceProfileSSOTicketProvisioningScopeEnum = "patch:users"
	SelfServiceProfileSSOTicketProvisioningScopeEnumDeleteUsers SelfServiceProfileSSOTicketProvisioningScopeEnum = "delete:users"
)

func NewSelfServiceProfileSSOTicketProvisioningScopeEnumFromString(s string) (SelfServiceProfileSSOTicketProvisioningScopeEnum, error) {
	switch s {
	case "get:users":
		return SelfServiceProfileSSOTicketProvisioningScopeEnumGetUsers, nil
	case "post:users":
		return SelfServiceProfileSSOTicketProvisioningScopeEnumPostUsers, nil
	case "put:users":
		return SelfServiceProfileSSOTicketProvisioningScopeEnumPutUsers, nil
	case "patch:users":
		return SelfServiceProfileSSOTicketProvisioningScopeEnumPatchUsers, nil
	case "delete:users":
		return SelfServiceProfileSSOTicketProvisioningScopeEnumDeleteUsers, nil
	}
	var t SelfServiceProfileSSOTicketProvisioningScopeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (s SelfServiceProfileSSOTicketProvisioningScopeEnum) Ptr() *SelfServiceProfileSSOTicketProvisioningScopeEnum {
	return &s
}

// Authentication signal details
var (
	sessionAuthenticationSignalFieldName      = big.NewInt(1 << 0)
	sessionAuthenticationSignalFieldTimestamp = big.NewInt(1 << 1)
	sessionAuthenticationSignalFieldType      = big.NewInt(1 << 2)
)

type SessionAuthenticationSignal struct {
	// One of: "federated", "passkey", "pwd", "sms", "email", "mfa", "mock" or a custom method denoted by a URL
	Name      *string      `json:"name,omitempty" url:"name,omitempty"`
	Timestamp *SessionDate `json:"timestamp,omitempty" url:"timestamp,omitempty"`
	// A specific MFA factor. Only present when "name" is set to "mfa"
	Type *string `json:"^type$,omitempty" url:"^type$,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (s *SessionAuthenticationSignal) GetName() string {
	if s == nil || s.Name == nil {
		return ""
	}
	return *s.Name
}

func (s *SessionAuthenticationSignal) GetTimestamp() SessionDate {
	if s == nil || s.Timestamp == nil {
		return SessionDate{}
	}
	return *s.Timestamp
}

func (s *SessionAuthenticationSignal) GetType() string {
	if s == nil || s.Type == nil {
		return ""
	}
	return *s.Type
}

func (s *SessionAuthenticationSignal) GetExtraProperties() map[string]interface{} {
	return s.ExtraProperties
}

func (s *SessionAuthenticationSignal) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// 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 *SessionAuthenticationSignal) SetName(name *string) {
	s.Name = name
	s.require(sessionAuthenticationSignalFieldName)
}

// 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 *SessionAuthenticationSignal) SetTimestamp(timestamp *SessionDate) {
	s.Timestamp = timestamp
	s.require(sessionAuthenticationSignalFieldTimestamp)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionAuthenticationSignal) SetType(type_ *string) {
	s.Type = type_
	s.require(sessionAuthenticationSignalFieldType)
}

func (s *SessionAuthenticationSignal) UnmarshalJSON(data []byte) error {
	type embed SessionAuthenticationSignal
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*s = SessionAuthenticationSignal(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.ExtraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SessionAuthenticationSignal) MarshalJSON() ([]byte, error) {
	type embed SessionAuthenticationSignal
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, s.ExtraProperties)
}

func (s *SessionAuthenticationSignal) 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)
}

// Details about authentication signals obtained during the login flow
var (
	sessionAuthenticationSignalsFieldMethods = big.NewInt(1 << 0)
)

type SessionAuthenticationSignals struct {
	// Contains the authentication methods a user has completed during their session
	Methods []*SessionAuthenticationSignal `json:"methods,omitempty" url:"methods,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (s *SessionAuthenticationSignals) GetMethods() []*SessionAuthenticationSignal {
	if s == nil || s.Methods == nil {
		return nil
	}
	return s.Methods
}

func (s *SessionAuthenticationSignals) GetExtraProperties() map[string]interface{} {
	return s.ExtraProperties
}

func (s *SessionAuthenticationSignals) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetMethods sets the Methods field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionAuthenticationSignals) SetMethods(methods []*SessionAuthenticationSignal) {
	s.Methods = methods
	s.require(sessionAuthenticationSignalsFieldMethods)
}

func (s *SessionAuthenticationSignals) UnmarshalJSON(data []byte) error {
	type embed SessionAuthenticationSignals
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*s = SessionAuthenticationSignals(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.ExtraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SessionAuthenticationSignals) MarshalJSON() ([]byte, error) {
	type embed SessionAuthenticationSignals
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, s.ExtraProperties)
}

func (s *SessionAuthenticationSignals) 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)
}

// Client details
var (
	sessionClientMetadataFieldClientID = big.NewInt(1 << 0)
)

type SessionClientMetadata struct {
	// ID of client for the session
	ClientID *string `json:"client_id,omitempty" url:"client_id,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (s *SessionClientMetadata) GetClientID() string {
	if s == nil || s.ClientID == nil {
		return ""
	}
	return *s.ClientID
}

func (s *SessionClientMetadata) GetExtraProperties() map[string]interface{} {
	return s.ExtraProperties
}

func (s *SessionClientMetadata) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetClientID sets the ClientID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionClientMetadata) SetClientID(clientID *string) {
	s.ClientID = clientID
	s.require(sessionClientMetadataFieldClientID)
}

func (s *SessionClientMetadata) UnmarshalJSON(data []byte) error {
	type embed SessionClientMetadata
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*s = SessionClientMetadata(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.ExtraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SessionClientMetadata) MarshalJSON() ([]byte, error) {
	type embed SessionClientMetadata
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, s.ExtraProperties)
}

func (s *SessionClientMetadata) 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)
}

// [Private Early Access] Session cookie configuration.
var (
	sessionCookieMetadataFieldMode = big.NewInt(1 << 0)
)

type SessionCookieMetadata struct {
	Mode *SessionCookieMetadataModeEnum `json:"mode,omitempty" url:"mode,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (s *SessionCookieMetadata) GetMode() SessionCookieMetadataModeEnum {
	if s == nil || s.Mode == nil {
		return ""
	}
	return *s.Mode
}

func (s *SessionCookieMetadata) GetExtraProperties() map[string]interface{} {
	return s.ExtraProperties
}

func (s *SessionCookieMetadata) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetMode sets the Mode field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionCookieMetadata) SetMode(mode *SessionCookieMetadataModeEnum) {
	s.Mode = mode
	s.require(sessionCookieMetadataFieldMode)
}

func (s *SessionCookieMetadata) UnmarshalJSON(data []byte) error {
	type embed SessionCookieMetadata
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*s = SessionCookieMetadata(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.ExtraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SessionCookieMetadata) MarshalJSON() ([]byte, error) {
	type embed SessionCookieMetadata
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, s.ExtraProperties)
}

func (s *SessionCookieMetadata) 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)
}

// [Private Early Access] The persistence mode of the session cookie. When set to "non-persistent" (ephemeral), the cookie will be deleted when the browser is closed. When set to "persistent", the cookie will be stored until it expires or is deleted by the user.
type SessionCookieMetadataModeEnum string

const (
	SessionCookieMetadataModeEnumNonPersistent SessionCookieMetadataModeEnum = "non-persistent"
	SessionCookieMetadataModeEnumPersistent    SessionCookieMetadataModeEnum = "persistent"
)

func NewSessionCookieMetadataModeEnumFromString(s string) (SessionCookieMetadataModeEnum, error) {
	switch s {
	case "non-persistent":
		return SessionCookieMetadataModeEnumNonPersistent, nil
	case "persistent":
		return SessionCookieMetadataModeEnumPersistent, nil
	}
	var t SessionCookieMetadataModeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (s SessionCookieMetadataModeEnum) Ptr() *SessionCookieMetadataModeEnum {
	return &s
}

// Behavior of the session cookie
type SessionCookieModeEnum string

const (
	SessionCookieModeEnumPersistent    SessionCookieModeEnum = "persistent"
	SessionCookieModeEnumNonPersistent SessionCookieModeEnum = "non-persistent"
)

func NewSessionCookieModeEnumFromString(s string) (SessionCookieModeEnum, error) {
	switch s {
	case "persistent":
		return SessionCookieModeEnumPersistent, nil
	case "non-persistent":
		return SessionCookieModeEnumNonPersistent, nil
	}
	var t SessionCookieModeEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (s SessionCookieModeEnum) Ptr() *SessionCookieModeEnum {
	return &s
}

// Session cookie configuration
var (
	sessionCookieSchemaFieldMode = big.NewInt(1 << 0)
)

type SessionCookieSchema struct {
	Mode SessionCookieModeEnum `json:"mode" url:"mode"`

	// 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 *SessionCookieSchema) GetMode() SessionCookieModeEnum {
	if s == nil {
		return ""
	}
	return s.Mode
}

func (s *SessionCookieSchema) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SessionCookieSchema) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetMode sets the Mode field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionCookieSchema) SetMode(mode SessionCookieModeEnum) {
	s.Mode = mode
	s.require(sessionCookieSchemaFieldMode)
}

func (s *SessionCookieSchema) UnmarshalJSON(data []byte) error {
	type unmarshaler SessionCookieSchema
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SessionCookieSchema(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SessionCookieSchema) MarshalJSON() ([]byte, error) {
	type embed SessionCookieSchema
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SessionCookieSchema) 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 SessionDate struct {
	// The date and time when the session was created
	DateTime time.Time
	// The date and time when the session was created
	StringUnknownMap map[string]interface{}

	typ string
}

func (s *SessionDate) GetDateTime() time.Time {
	if s == nil {
		return time.Time{}
	}
	return s.DateTime
}

func (s *SessionDate) GetStringUnknownMap() map[string]interface{} {
	if s == nil {
		return nil
	}
	return s.StringUnknownMap
}

func (s *SessionDate) UnmarshalJSON(data []byte) error {
	var valueDateTime *internal.DateTime
	if err := json.Unmarshal(data, &valueDateTime); err == nil {
		s.typ = "DateTime"
		s.DateTime = valueDateTime.Time()
		return nil
	}
	var valueStringUnknownMap map[string]interface{}
	if err := json.Unmarshal(data, &valueStringUnknownMap); err == nil {
		s.typ = "StringUnknownMap"
		s.StringUnknownMap = valueStringUnknownMap
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, s)
}

func (s SessionDate) MarshalJSON() ([]byte, error) {
	if s.typ == "DateTime" || !s.DateTime.IsZero() {
		return json.Marshal(internal.NewDateTime(s.DateTime))
	}
	if s.typ == "StringUnknownMap" || s.StringUnknownMap != nil {
		return json.Marshal(s.StringUnknownMap)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", s)
}

type SessionDateVisitor interface {
	VisitDateTime(time.Time) error
	VisitStringUnknownMap(map[string]interface{}) error
}

func (s *SessionDate) Accept(visitor SessionDateVisitor) error {
	if s.typ == "DateTime" || !s.DateTime.IsZero() {
		return visitor.VisitDateTime(s.DateTime)
	}
	if s.typ == "StringUnknownMap" || s.StringUnknownMap != nil {
		return visitor.VisitStringUnknownMap(s.StringUnknownMap)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", s)
}

// Metadata related to the device used in the session
var (
	sessionDeviceMetadataFieldInitialUserAgent = big.NewInt(1 << 0)
	sessionDeviceMetadataFieldInitialIP        = big.NewInt(1 << 1)
	sessionDeviceMetadataFieldInitialAsn       = big.NewInt(1 << 2)
	sessionDeviceMetadataFieldLastUserAgent    = big.NewInt(1 << 3)
	sessionDeviceMetadataFieldLastIP           = big.NewInt(1 << 4)
	sessionDeviceMetadataFieldLastAsn          = big.NewInt(1 << 5)
)

type SessionDeviceMetadata struct {
	// First user agent of the device from which this user logged in
	InitialUserAgent *string    `json:"initial_user_agent,omitempty" url:"initial_user_agent,omitempty"`
	InitialIP        *SessionIP `json:"initial_ip,omitempty" url:"initial_ip,omitempty"`
	// First autonomous system number associated with this session
	InitialAsn *string `json:"initial_asn,omitempty" url:"initial_asn,omitempty"`
	// Last user agent of the device from which this user logged in
	LastUserAgent *string    `json:"last_user_agent,omitempty" url:"last_user_agent,omitempty"`
	LastIP        *SessionIP `json:"last_ip,omitempty" url:"last_ip,omitempty"`
	// Last autonomous system number from which this user logged in
	LastAsn *string `json:"last_asn,omitempty" url:"last_asn,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (s *SessionDeviceMetadata) GetInitialUserAgent() string {
	if s == nil || s.InitialUserAgent == nil {
		return ""
	}
	return *s.InitialUserAgent
}

func (s *SessionDeviceMetadata) GetInitialIP() SessionIP {
	if s == nil || s.InitialIP == nil {
		return nil
	}
	return *s.InitialIP
}

func (s *SessionDeviceMetadata) GetInitialAsn() string {
	if s == nil || s.InitialAsn == nil {
		return ""
	}
	return *s.InitialAsn
}

func (s *SessionDeviceMetadata) GetLastUserAgent() string {
	if s == nil || s.LastUserAgent == nil {
		return ""
	}
	return *s.LastUserAgent
}

func (s *SessionDeviceMetadata) GetLastIP() SessionIP {
	if s == nil || s.LastIP == nil {
		return nil
	}
	return *s.LastIP
}

func (s *SessionDeviceMetadata) GetLastAsn() string {
	if s == nil || s.LastAsn == nil {
		return ""
	}
	return *s.LastAsn
}

func (s *SessionDeviceMetadata) GetExtraProperties() map[string]interface{} {
	return s.ExtraProperties
}

func (s *SessionDeviceMetadata) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetInitialUserAgent sets the InitialUserAgent field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionDeviceMetadata) SetInitialUserAgent(initialUserAgent *string) {
	s.InitialUserAgent = initialUserAgent
	s.require(sessionDeviceMetadataFieldInitialUserAgent)
}

// SetInitialIP sets the InitialIP field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionDeviceMetadata) SetInitialIP(initialIP *SessionIP) {
	s.InitialIP = initialIP
	s.require(sessionDeviceMetadataFieldInitialIP)
}

// SetInitialAsn sets the InitialAsn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionDeviceMetadata) SetInitialAsn(initialAsn *string) {
	s.InitialAsn = initialAsn
	s.require(sessionDeviceMetadataFieldInitialAsn)
}

// SetLastUserAgent sets the LastUserAgent field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionDeviceMetadata) SetLastUserAgent(lastUserAgent *string) {
	s.LastUserAgent = lastUserAgent
	s.require(sessionDeviceMetadataFieldLastUserAgent)
}

// SetLastIP sets the LastIP field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionDeviceMetadata) SetLastIP(lastIP *SessionIP) {
	s.LastIP = lastIP
	s.require(sessionDeviceMetadataFieldLastIP)
}

// SetLastAsn sets the LastAsn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionDeviceMetadata) SetLastAsn(lastAsn *string) {
	s.LastAsn = lastAsn
	s.require(sessionDeviceMetadataFieldLastAsn)
}

func (s *SessionDeviceMetadata) UnmarshalJSON(data []byte) error {
	type embed SessionDeviceMetadata
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*s = SessionDeviceMetadata(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.ExtraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SessionDeviceMetadata) MarshalJSON() ([]byte, error) {
	type embed SessionDeviceMetadata
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, s.ExtraProperties)
}

func (s *SessionDeviceMetadata) 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)
}

// First IP address associated with this session
type SessionIP = *string

// Metadata associated with the session, in the form of an object with string values (max 255 chars). Maximum of 25 metadata properties allowed.
type SessionMetadata = map[string]interface{}

var (
	sessionResponseContentFieldID               = big.NewInt(1 << 0)
	sessionResponseContentFieldUserID           = big.NewInt(1 << 1)
	sessionResponseContentFieldCreatedAt        = big.NewInt(1 << 2)
	sessionResponseContentFieldUpdatedAt        = big.NewInt(1 << 3)
	sessionResponseContentFieldAuthenticatedAt  = big.NewInt(1 << 4)
	sessionResponseContentFieldIdleExpiresAt    = big.NewInt(1 << 5)
	sessionResponseContentFieldExpiresAt        = big.NewInt(1 << 6)
	sessionResponseContentFieldLastInteractedAt = big.NewInt(1 << 7)
	sessionResponseContentFieldDevice           = big.NewInt(1 << 8)
	sessionResponseContentFieldClients          = big.NewInt(1 << 9)
	sessionResponseContentFieldAuthentication   = big.NewInt(1 << 10)
	sessionResponseContentFieldCookie           = big.NewInt(1 << 11)
	sessionResponseContentFieldSessionMetadata  = big.NewInt(1 << 12)
)

type SessionResponseContent struct {
	// The ID of the session
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// ID of the user which can be used when interacting with other APIs.
	UserID           *string                `json:"user_id,omitempty" url:"user_id,omitempty"`
	CreatedAt        *SessionDate           `json:"created_at,omitempty" url:"created_at,omitempty"`
	UpdatedAt        *SessionDate           `json:"updated_at,omitempty" url:"updated_at,omitempty"`
	AuthenticatedAt  *SessionDate           `json:"authenticated_at,omitempty" url:"authenticated_at,omitempty"`
	IdleExpiresAt    *SessionDate           `json:"idle_expires_at,omitempty" url:"idle_expires_at,omitempty"`
	ExpiresAt        *SessionDate           `json:"expires_at,omitempty" url:"expires_at,omitempty"`
	LastInteractedAt *SessionDate           `json:"last_interacted_at,omitempty" url:"last_interacted_at,omitempty"`
	Device           *SessionDeviceMetadata `json:"device,omitempty" url:"device,omitempty"`
	// List of client details for the session
	Clients         []*SessionClientMetadata      `json:"clients,omitempty" url:"clients,omitempty"`
	Authentication  *SessionAuthenticationSignals `json:"authentication,omitempty" url:"authentication,omitempty"`
	Cookie          *SessionCookieMetadata        `json:"cookie,omitempty" url:"cookie,omitempty"`
	SessionMetadata *SessionMetadata              `json:"session_metadata,omitempty" url:"session_metadata,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (s *SessionResponseContent) GetID() string {
	if s == nil || s.ID == nil {
		return ""
	}
	return *s.ID
}

func (s *SessionResponseContent) GetUserID() string {
	if s == nil || s.UserID == nil {
		return ""
	}
	return *s.UserID
}

func (s *SessionResponseContent) GetCreatedAt() SessionDate {
	if s == nil || s.CreatedAt == nil {
		return SessionDate{}
	}
	return *s.CreatedAt
}

func (s *SessionResponseContent) GetUpdatedAt() SessionDate {
	if s == nil || s.UpdatedAt == nil {
		return SessionDate{}
	}
	return *s.UpdatedAt
}

func (s *SessionResponseContent) GetAuthenticatedAt() SessionDate {
	if s == nil || s.AuthenticatedAt == nil {
		return SessionDate{}
	}
	return *s.AuthenticatedAt
}

func (s *SessionResponseContent) GetIdleExpiresAt() SessionDate {
	if s == nil || s.IdleExpiresAt == nil {
		return SessionDate{}
	}
	return *s.IdleExpiresAt
}

func (s *SessionResponseContent) GetExpiresAt() SessionDate {
	if s == nil || s.ExpiresAt == nil {
		return SessionDate{}
	}
	return *s.ExpiresAt
}

func (s *SessionResponseContent) GetLastInteractedAt() SessionDate {
	if s == nil || s.LastInteractedAt == nil {
		return SessionDate{}
	}
	return *s.LastInteractedAt
}

func (s *SessionResponseContent) GetDevice() SessionDeviceMetadata {
	if s == nil || s.Device == nil {
		return SessionDeviceMetadata{}
	}
	return *s.Device
}

func (s *SessionResponseContent) GetClients() []*SessionClientMetadata {
	if s == nil || s.Clients == nil {
		return nil
	}
	return s.Clients
}

func (s *SessionResponseContent) GetAuthentication() SessionAuthenticationSignals {
	if s == nil || s.Authentication == nil {
		return SessionAuthenticationSignals{}
	}
	return *s.Authentication
}

func (s *SessionResponseContent) GetCookie() SessionCookieMetadata {
	if s == nil || s.Cookie == nil {
		return SessionCookieMetadata{}
	}
	return *s.Cookie
}

func (s *SessionResponseContent) GetSessionMetadata() SessionMetadata {
	if s == nil || s.SessionMetadata == nil {
		return nil
	}
	return *s.SessionMetadata
}

func (s *SessionResponseContent) GetExtraProperties() map[string]interface{} {
	return s.ExtraProperties
}

func (s *SessionResponseContent) 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 *SessionResponseContent) SetID(id *string) {
	s.ID = id
	s.require(sessionResponseContentFieldID)
}

// 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 *SessionResponseContent) SetUserID(userID *string) {
	s.UserID = userID
	s.require(sessionResponseContentFieldUserID)
}

// 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 *SessionResponseContent) SetCreatedAt(createdAt *SessionDate) {
	s.CreatedAt = createdAt
	s.require(sessionResponseContentFieldCreatedAt)
}

// 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 *SessionResponseContent) SetUpdatedAt(updatedAt *SessionDate) {
	s.UpdatedAt = updatedAt
	s.require(sessionResponseContentFieldUpdatedAt)
}

// SetAuthenticatedAt sets the AuthenticatedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionResponseContent) SetAuthenticatedAt(authenticatedAt *SessionDate) {
	s.AuthenticatedAt = authenticatedAt
	s.require(sessionResponseContentFieldAuthenticatedAt)
}

// SetIdleExpiresAt sets the IdleExpiresAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionResponseContent) SetIdleExpiresAt(idleExpiresAt *SessionDate) {
	s.IdleExpiresAt = idleExpiresAt
	s.require(sessionResponseContentFieldIdleExpiresAt)
}

// SetExpiresAt sets the ExpiresAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionResponseContent) SetExpiresAt(expiresAt *SessionDate) {
	s.ExpiresAt = expiresAt
	s.require(sessionResponseContentFieldExpiresAt)
}

// SetLastInteractedAt sets the LastInteractedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionResponseContent) SetLastInteractedAt(lastInteractedAt *SessionDate) {
	s.LastInteractedAt = lastInteractedAt
	s.require(sessionResponseContentFieldLastInteractedAt)
}

// SetDevice sets the Device field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionResponseContent) SetDevice(device *SessionDeviceMetadata) {
	s.Device = device
	s.require(sessionResponseContentFieldDevice)
}

// SetClients sets the Clients field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionResponseContent) SetClients(clients []*SessionClientMetadata) {
	s.Clients = clients
	s.require(sessionResponseContentFieldClients)
}

// SetAuthentication sets the Authentication field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionResponseContent) SetAuthentication(authentication *SessionAuthenticationSignals) {
	s.Authentication = authentication
	s.require(sessionResponseContentFieldAuthentication)
}

// SetCookie sets the Cookie field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionResponseContent) SetCookie(cookie *SessionCookieMetadata) {
	s.Cookie = cookie
	s.require(sessionResponseContentFieldCookie)
}

// SetSessionMetadata sets the SessionMetadata field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SessionResponseContent) SetSessionMetadata(sessionMetadata *SessionMetadata) {
	s.SessionMetadata = sessionMetadata
	s.require(sessionResponseContentFieldSessionMetadata)
}

func (s *SessionResponseContent) UnmarshalJSON(data []byte) error {
	type embed SessionResponseContent
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*s = SessionResponseContent(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.ExtraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SessionResponseContent) MarshalJSON() ([]byte, error) {
	type embed SessionResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, s.ExtraProperties)
}

func (s *SessionResponseContent) 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)
}

// JWKS representing an array of custom public signing keys.
var (
	setCustomSigningKeysResponseContentFieldKeys = big.NewInt(1 << 0)
)

type SetCustomSigningKeysResponseContent struct {
	// An array of custom public signing keys.
	Keys []*CustomSigningKeyJwk `json:"keys,omitempty" url:"keys,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 *SetCustomSigningKeysResponseContent) GetKeys() []*CustomSigningKeyJwk {
	if s == nil || s.Keys == nil {
		return nil
	}
	return s.Keys
}

func (s *SetCustomSigningKeysResponseContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetCustomSigningKeysResponseContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetKeys sets the Keys field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetCustomSigningKeysResponseContent) SetKeys(keys []*CustomSigningKeyJwk) {
	s.Keys = keys
	s.require(setCustomSigningKeysResponseContentFieldKeys)
}

func (s *SetCustomSigningKeysResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetCustomSigningKeysResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetCustomSigningKeysResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetCustomSigningKeysResponseContent) MarshalJSON() ([]byte, error) {
	type embed SetCustomSigningKeysResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetCustomSigningKeysResponseContent) 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)
}

var (
	setGuardianFactorDuoSettingsResponseContentFieldIkey = big.NewInt(1 << 0)
	setGuardianFactorDuoSettingsResponseContentFieldSkey = big.NewInt(1 << 1)
	setGuardianFactorDuoSettingsResponseContentFieldHost = big.NewInt(1 << 2)
)

type SetGuardianFactorDuoSettingsResponseContent struct {
	Ikey *string `json:"ikey,omitempty" url:"ikey,omitempty"`
	Skey *string `json:"skey,omitempty" url:"skey,omitempty"`
	Host *string `json:"host,omitempty" url:"host,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 *SetGuardianFactorDuoSettingsResponseContent) GetIkey() string {
	if s == nil || s.Ikey == nil {
		return ""
	}
	return *s.Ikey
}

func (s *SetGuardianFactorDuoSettingsResponseContent) GetSkey() string {
	if s == nil || s.Skey == nil {
		return ""
	}
	return *s.Skey
}

func (s *SetGuardianFactorDuoSettingsResponseContent) GetHost() string {
	if s == nil || s.Host == nil {
		return ""
	}
	return *s.Host
}

func (s *SetGuardianFactorDuoSettingsResponseContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorDuoSettingsResponseContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetIkey sets the Ikey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorDuoSettingsResponseContent) SetIkey(ikey *string) {
	s.Ikey = ikey
	s.require(setGuardianFactorDuoSettingsResponseContentFieldIkey)
}

// SetSkey sets the Skey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorDuoSettingsResponseContent) SetSkey(skey *string) {
	s.Skey = skey
	s.require(setGuardianFactorDuoSettingsResponseContentFieldSkey)
}

// SetHost sets the Host field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorDuoSettingsResponseContent) SetHost(host *string) {
	s.Host = host
	s.require(setGuardianFactorDuoSettingsResponseContentFieldHost)
}

func (s *SetGuardianFactorDuoSettingsResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorDuoSettingsResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorDuoSettingsResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorDuoSettingsResponseContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorDuoSettingsResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorDuoSettingsResponseContent) 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)
}

var (
	setGuardianFactorPhoneMessageTypesResponseContentFieldMessageTypes = big.NewInt(1 << 0)
)

type SetGuardianFactorPhoneMessageTypesResponseContent struct {
	// The list of phone factors to enable on the tenant. Can include `sms` and `voice`.
	MessageTypes []GuardianFactorPhoneFactorMessageTypeEnum `json:"message_types,omitempty" url:"message_types,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 *SetGuardianFactorPhoneMessageTypesResponseContent) GetMessageTypes() []GuardianFactorPhoneFactorMessageTypeEnum {
	if s == nil || s.MessageTypes == nil {
		return nil
	}
	return s.MessageTypes
}

func (s *SetGuardianFactorPhoneMessageTypesResponseContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorPhoneMessageTypesResponseContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetMessageTypes sets the MessageTypes field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorPhoneMessageTypesResponseContent) SetMessageTypes(messageTypes []GuardianFactorPhoneFactorMessageTypeEnum) {
	s.MessageTypes = messageTypes
	s.require(setGuardianFactorPhoneMessageTypesResponseContentFieldMessageTypes)
}

func (s *SetGuardianFactorPhoneMessageTypesResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorPhoneMessageTypesResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorPhoneMessageTypesResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorPhoneMessageTypesResponseContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorPhoneMessageTypesResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorPhoneMessageTypesResponseContent) 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)
}

var (
	setGuardianFactorPhoneTemplatesResponseContentFieldEnrollmentMessage   = big.NewInt(1 << 0)
	setGuardianFactorPhoneTemplatesResponseContentFieldVerificationMessage = big.NewInt(1 << 1)
)

type SetGuardianFactorPhoneTemplatesResponseContent struct {
	// Message sent to the user when they are invited to enroll with a phone number.
	EnrollmentMessage string `json:"enrollment_message" url:"enrollment_message"`
	// Message sent to the user when they are prompted to verify their account.
	VerificationMessage string `json:"verification_message" url:"verification_message"`

	// 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 *SetGuardianFactorPhoneTemplatesResponseContent) GetEnrollmentMessage() string {
	if s == nil {
		return ""
	}
	return s.EnrollmentMessage
}

func (s *SetGuardianFactorPhoneTemplatesResponseContent) GetVerificationMessage() string {
	if s == nil {
		return ""
	}
	return s.VerificationMessage
}

func (s *SetGuardianFactorPhoneTemplatesResponseContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorPhoneTemplatesResponseContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetEnrollmentMessage sets the EnrollmentMessage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorPhoneTemplatesResponseContent) SetEnrollmentMessage(enrollmentMessage string) {
	s.EnrollmentMessage = enrollmentMessage
	s.require(setGuardianFactorPhoneTemplatesResponseContentFieldEnrollmentMessage)
}

// SetVerificationMessage sets the VerificationMessage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorPhoneTemplatesResponseContent) SetVerificationMessage(verificationMessage string) {
	s.VerificationMessage = verificationMessage
	s.require(setGuardianFactorPhoneTemplatesResponseContentFieldVerificationMessage)
}

func (s *SetGuardianFactorPhoneTemplatesResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorPhoneTemplatesResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorPhoneTemplatesResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorPhoneTemplatesResponseContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorPhoneTemplatesResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorPhoneTemplatesResponseContent) 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)
}

var (
	setGuardianFactorResponseContentFieldEnabled = big.NewInt(1 << 0)
)

type SetGuardianFactorResponseContent struct {
	// Whether this factor is enabled (true) or disabled (false).
	Enabled bool `json:"enabled" url:"enabled"`

	// 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 *SetGuardianFactorResponseContent) GetEnabled() bool {
	if s == nil {
		return false
	}
	return s.Enabled
}

func (s *SetGuardianFactorResponseContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorResponseContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorResponseContent) SetEnabled(enabled bool) {
	s.Enabled = enabled
	s.require(setGuardianFactorResponseContentFieldEnabled)
}

func (s *SetGuardianFactorResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorResponseContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorResponseContent) 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)
}

var (
	setGuardianFactorSmsTemplatesResponseContentFieldEnrollmentMessage   = big.NewInt(1 << 0)
	setGuardianFactorSmsTemplatesResponseContentFieldVerificationMessage = big.NewInt(1 << 1)
)

type SetGuardianFactorSmsTemplatesResponseContent struct {
	// Message sent to the user when they are invited to enroll with a phone number.
	EnrollmentMessage string `json:"enrollment_message" url:"enrollment_message"`
	// Message sent to the user when they are prompted to verify their account.
	VerificationMessage string `json:"verification_message" url:"verification_message"`

	// 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 *SetGuardianFactorSmsTemplatesResponseContent) GetEnrollmentMessage() string {
	if s == nil {
		return ""
	}
	return s.EnrollmentMessage
}

func (s *SetGuardianFactorSmsTemplatesResponseContent) GetVerificationMessage() string {
	if s == nil {
		return ""
	}
	return s.VerificationMessage
}

func (s *SetGuardianFactorSmsTemplatesResponseContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorSmsTemplatesResponseContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetEnrollmentMessage sets the EnrollmentMessage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorSmsTemplatesResponseContent) SetEnrollmentMessage(enrollmentMessage string) {
	s.EnrollmentMessage = enrollmentMessage
	s.require(setGuardianFactorSmsTemplatesResponseContentFieldEnrollmentMessage)
}

// SetVerificationMessage sets the VerificationMessage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorSmsTemplatesResponseContent) SetVerificationMessage(verificationMessage string) {
	s.VerificationMessage = verificationMessage
	s.require(setGuardianFactorSmsTemplatesResponseContentFieldVerificationMessage)
}

func (s *SetGuardianFactorSmsTemplatesResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorSmsTemplatesResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorSmsTemplatesResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorSmsTemplatesResponseContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorSmsTemplatesResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorSmsTemplatesResponseContent) 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)
}

var (
	setGuardianFactorsProviderPhoneResponseContentFieldProvider = big.NewInt(1 << 0)
)

type SetGuardianFactorsProviderPhoneResponseContent struct {
	Provider *GuardianFactorsProviderSmsProviderEnum `json:"provider,omitempty" url:"provider,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 *SetGuardianFactorsProviderPhoneResponseContent) GetProvider() GuardianFactorsProviderSmsProviderEnum {
	if s == nil || s.Provider == nil {
		return ""
	}
	return *s.Provider
}

func (s *SetGuardianFactorsProviderPhoneResponseContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorsProviderPhoneResponseContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetProvider sets the Provider field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPhoneResponseContent) SetProvider(provider *GuardianFactorsProviderSmsProviderEnum) {
	s.Provider = provider
	s.require(setGuardianFactorsProviderPhoneResponseContentFieldProvider)
}

func (s *SetGuardianFactorsProviderPhoneResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorsProviderPhoneResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorsProviderPhoneResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorsProviderPhoneResponseContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorsProviderPhoneResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorsProviderPhoneResponseContent) 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)
}

var (
	setGuardianFactorsProviderPhoneTwilioResponseContentFieldFrom                = big.NewInt(1 << 0)
	setGuardianFactorsProviderPhoneTwilioResponseContentFieldMessagingServiceSid = big.NewInt(1 << 1)
	setGuardianFactorsProviderPhoneTwilioResponseContentFieldAuthToken           = big.NewInt(1 << 2)
	setGuardianFactorsProviderPhoneTwilioResponseContentFieldSid                 = big.NewInt(1 << 3)
)

type SetGuardianFactorsProviderPhoneTwilioResponseContent struct {
	// From number
	From *string `json:"from,omitempty" url:"from,omitempty"`
	// Copilot SID
	MessagingServiceSid *string `json:"messaging_service_sid,omitempty" url:"messaging_service_sid,omitempty"`
	// Twilio Authentication token
	AuthToken *string `json:"auth_token,omitempty" url:"auth_token,omitempty"`
	// Twilio SID
	Sid *string `json:"sid,omitempty" url:"sid,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 *SetGuardianFactorsProviderPhoneTwilioResponseContent) GetFrom() string {
	if s == nil || s.From == nil {
		return ""
	}
	return *s.From
}

func (s *SetGuardianFactorsProviderPhoneTwilioResponseContent) GetMessagingServiceSid() string {
	if s == nil || s.MessagingServiceSid == nil {
		return ""
	}
	return *s.MessagingServiceSid
}

func (s *SetGuardianFactorsProviderPhoneTwilioResponseContent) GetAuthToken() string {
	if s == nil || s.AuthToken == nil {
		return ""
	}
	return *s.AuthToken
}

func (s *SetGuardianFactorsProviderPhoneTwilioResponseContent) GetSid() string {
	if s == nil || s.Sid == nil {
		return ""
	}
	return *s.Sid
}

func (s *SetGuardianFactorsProviderPhoneTwilioResponseContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorsProviderPhoneTwilioResponseContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetFrom sets the From field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPhoneTwilioResponseContent) SetFrom(from *string) {
	s.From = from
	s.require(setGuardianFactorsProviderPhoneTwilioResponseContentFieldFrom)
}

// SetMessagingServiceSid sets the MessagingServiceSid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPhoneTwilioResponseContent) SetMessagingServiceSid(messagingServiceSid *string) {
	s.MessagingServiceSid = messagingServiceSid
	s.require(setGuardianFactorsProviderPhoneTwilioResponseContentFieldMessagingServiceSid)
}

// SetAuthToken sets the AuthToken field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPhoneTwilioResponseContent) SetAuthToken(authToken *string) {
	s.AuthToken = authToken
	s.require(setGuardianFactorsProviderPhoneTwilioResponseContentFieldAuthToken)
}

// SetSid sets the Sid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPhoneTwilioResponseContent) SetSid(sid *string) {
	s.Sid = sid
	s.require(setGuardianFactorsProviderPhoneTwilioResponseContentFieldSid)
}

func (s *SetGuardianFactorsProviderPhoneTwilioResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorsProviderPhoneTwilioResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorsProviderPhoneTwilioResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorsProviderPhoneTwilioResponseContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorsProviderPhoneTwilioResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorsProviderPhoneTwilioResponseContent) 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)
}

var (
	setGuardianFactorsProviderPushNotificationApnsRequestContentFieldSandbox  = big.NewInt(1 << 0)
	setGuardianFactorsProviderPushNotificationApnsRequestContentFieldBundleID = big.NewInt(1 << 1)
	setGuardianFactorsProviderPushNotificationApnsRequestContentFieldP12      = big.NewInt(1 << 2)
)

type SetGuardianFactorsProviderPushNotificationApnsRequestContent struct {
	Sandbox  *bool   `json:"sandbox,omitempty" url:"sandbox,omitempty"`
	BundleID *string `json:"bundle_id,omitempty" url:"bundle_id,omitempty"`
	P12      *string `json:"p12,omitempty" url:"p12,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 *SetGuardianFactorsProviderPushNotificationApnsRequestContent) GetSandbox() bool {
	if s == nil || s.Sandbox == nil {
		return false
	}
	return *s.Sandbox
}

func (s *SetGuardianFactorsProviderPushNotificationApnsRequestContent) GetBundleID() string {
	if s == nil || s.BundleID == nil {
		return ""
	}
	return *s.BundleID
}

func (s *SetGuardianFactorsProviderPushNotificationApnsRequestContent) GetP12() string {
	if s == nil || s.P12 == nil {
		return ""
	}
	return *s.P12
}

func (s *SetGuardianFactorsProviderPushNotificationApnsRequestContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorsProviderPushNotificationApnsRequestContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetSandbox sets the Sandbox field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPushNotificationApnsRequestContent) SetSandbox(sandbox *bool) {
	s.Sandbox = sandbox
	s.require(setGuardianFactorsProviderPushNotificationApnsRequestContentFieldSandbox)
}

// SetBundleID sets the BundleID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPushNotificationApnsRequestContent) SetBundleID(bundleID *string) {
	s.BundleID = bundleID
	s.require(setGuardianFactorsProviderPushNotificationApnsRequestContentFieldBundleID)
}

// SetP12 sets the P12 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPushNotificationApnsRequestContent) SetP12(p12 *string) {
	s.P12 = p12
	s.require(setGuardianFactorsProviderPushNotificationApnsRequestContentFieldP12)
}

func (s *SetGuardianFactorsProviderPushNotificationApnsRequestContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorsProviderPushNotificationApnsRequestContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorsProviderPushNotificationApnsRequestContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorsProviderPushNotificationApnsRequestContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorsProviderPushNotificationApnsRequestContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorsProviderPushNotificationApnsRequestContent) 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)
}

var (
	setGuardianFactorsProviderPushNotificationApnsResponseContentFieldSandbox  = big.NewInt(1 << 0)
	setGuardianFactorsProviderPushNotificationApnsResponseContentFieldBundleID = big.NewInt(1 << 1)
)

type SetGuardianFactorsProviderPushNotificationApnsResponseContent struct {
	Sandbox  *bool   `json:"sandbox,omitempty" url:"sandbox,omitempty"`
	BundleID *string `json:"bundle_id,omitempty" url:"bundle_id,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 *SetGuardianFactorsProviderPushNotificationApnsResponseContent) GetSandbox() bool {
	if s == nil || s.Sandbox == nil {
		return false
	}
	return *s.Sandbox
}

func (s *SetGuardianFactorsProviderPushNotificationApnsResponseContent) GetBundleID() string {
	if s == nil || s.BundleID == nil {
		return ""
	}
	return *s.BundleID
}

func (s *SetGuardianFactorsProviderPushNotificationApnsResponseContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorsProviderPushNotificationApnsResponseContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetSandbox sets the Sandbox field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPushNotificationApnsResponseContent) SetSandbox(sandbox *bool) {
	s.Sandbox = sandbox
	s.require(setGuardianFactorsProviderPushNotificationApnsResponseContentFieldSandbox)
}

// SetBundleID sets the BundleID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPushNotificationApnsResponseContent) SetBundleID(bundleID *string) {
	s.BundleID = bundleID
	s.require(setGuardianFactorsProviderPushNotificationApnsResponseContentFieldBundleID)
}

func (s *SetGuardianFactorsProviderPushNotificationApnsResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorsProviderPushNotificationApnsResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorsProviderPushNotificationApnsResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorsProviderPushNotificationApnsResponseContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorsProviderPushNotificationApnsResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorsProviderPushNotificationApnsResponseContent) 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)
}

var (
	setGuardianFactorsProviderPushNotificationFcmRequestContentFieldServerKey = big.NewInt(1 << 0)
)

type SetGuardianFactorsProviderPushNotificationFcmRequestContent struct {
	ServerKey *string `json:"server_key,omitempty" url:"server_key,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 *SetGuardianFactorsProviderPushNotificationFcmRequestContent) GetServerKey() string {
	if s == nil || s.ServerKey == nil {
		return ""
	}
	return *s.ServerKey
}

func (s *SetGuardianFactorsProviderPushNotificationFcmRequestContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorsProviderPushNotificationFcmRequestContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetServerKey sets the ServerKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPushNotificationFcmRequestContent) SetServerKey(serverKey *string) {
	s.ServerKey = serverKey
	s.require(setGuardianFactorsProviderPushNotificationFcmRequestContentFieldServerKey)
}

func (s *SetGuardianFactorsProviderPushNotificationFcmRequestContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorsProviderPushNotificationFcmRequestContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorsProviderPushNotificationFcmRequestContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorsProviderPushNotificationFcmRequestContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorsProviderPushNotificationFcmRequestContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorsProviderPushNotificationFcmRequestContent) 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 SetGuardianFactorsProviderPushNotificationFcmResponseContent = map[string]interface{}

var (
	setGuardianFactorsProviderPushNotificationFcmv1RequestContentFieldServerCredentials = big.NewInt(1 << 0)
)

type SetGuardianFactorsProviderPushNotificationFcmv1RequestContent struct {
	ServerCredentials *string `json:"server_credentials,omitempty" url:"server_credentials,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 *SetGuardianFactorsProviderPushNotificationFcmv1RequestContent) GetServerCredentials() string {
	if s == nil || s.ServerCredentials == nil {
		return ""
	}
	return *s.ServerCredentials
}

func (s *SetGuardianFactorsProviderPushNotificationFcmv1RequestContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorsProviderPushNotificationFcmv1RequestContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetServerCredentials sets the ServerCredentials field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPushNotificationFcmv1RequestContent) SetServerCredentials(serverCredentials *string) {
	s.ServerCredentials = serverCredentials
	s.require(setGuardianFactorsProviderPushNotificationFcmv1RequestContentFieldServerCredentials)
}

func (s *SetGuardianFactorsProviderPushNotificationFcmv1RequestContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorsProviderPushNotificationFcmv1RequestContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorsProviderPushNotificationFcmv1RequestContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorsProviderPushNotificationFcmv1RequestContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorsProviderPushNotificationFcmv1RequestContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorsProviderPushNotificationFcmv1RequestContent) 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 SetGuardianFactorsProviderPushNotificationFcmv1ResponseContent = map[string]interface{}

var (
	setGuardianFactorsProviderPushNotificationResponseContentFieldProvider = big.NewInt(1 << 0)
)

type SetGuardianFactorsProviderPushNotificationResponseContent struct {
	Provider *GuardianFactorsProviderPushNotificationProviderDataEnum `json:"provider,omitempty" url:"provider,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 *SetGuardianFactorsProviderPushNotificationResponseContent) GetProvider() GuardianFactorsProviderPushNotificationProviderDataEnum {
	if s == nil || s.Provider == nil {
		return ""
	}
	return *s.Provider
}

func (s *SetGuardianFactorsProviderPushNotificationResponseContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorsProviderPushNotificationResponseContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetProvider sets the Provider field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPushNotificationResponseContent) SetProvider(provider *GuardianFactorsProviderPushNotificationProviderDataEnum) {
	s.Provider = provider
	s.require(setGuardianFactorsProviderPushNotificationResponseContentFieldProvider)
}

func (s *SetGuardianFactorsProviderPushNotificationResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorsProviderPushNotificationResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorsProviderPushNotificationResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorsProviderPushNotificationResponseContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorsProviderPushNotificationResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorsProviderPushNotificationResponseContent) 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)
}

var (
	setGuardianFactorsProviderPushNotificationSnsResponseContentFieldAwsAccessKeyID                = big.NewInt(1 << 0)
	setGuardianFactorsProviderPushNotificationSnsResponseContentFieldAwsSecretAccessKey            = big.NewInt(1 << 1)
	setGuardianFactorsProviderPushNotificationSnsResponseContentFieldAwsRegion                     = big.NewInt(1 << 2)
	setGuardianFactorsProviderPushNotificationSnsResponseContentFieldSnsApnsPlatformApplicationArn = big.NewInt(1 << 3)
	setGuardianFactorsProviderPushNotificationSnsResponseContentFieldSnsGcmPlatformApplicationArn  = big.NewInt(1 << 4)
)

type SetGuardianFactorsProviderPushNotificationSnsResponseContent struct {
	AwsAccessKeyID                *string `json:"aws_access_key_id,omitempty" url:"aws_access_key_id,omitempty"`
	AwsSecretAccessKey            *string `json:"aws_secret_access_key,omitempty" url:"aws_secret_access_key,omitempty"`
	AwsRegion                     *string `json:"aws_region,omitempty" url:"aws_region,omitempty"`
	SnsApnsPlatformApplicationArn *string `json:"sns_apns_platform_application_arn,omitempty" url:"sns_apns_platform_application_arn,omitempty"`
	SnsGcmPlatformApplicationArn  *string `json:"sns_gcm_platform_application_arn,omitempty" url:"sns_gcm_platform_application_arn,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 *SetGuardianFactorsProviderPushNotificationSnsResponseContent) GetAwsAccessKeyID() string {
	if s == nil || s.AwsAccessKeyID == nil {
		return ""
	}
	return *s.AwsAccessKeyID
}

func (s *SetGuardianFactorsProviderPushNotificationSnsResponseContent) GetAwsSecretAccessKey() string {
	if s == nil || s.AwsSecretAccessKey == nil {
		return ""
	}
	return *s.AwsSecretAccessKey
}

func (s *SetGuardianFactorsProviderPushNotificationSnsResponseContent) GetAwsRegion() string {
	if s == nil || s.AwsRegion == nil {
		return ""
	}
	return *s.AwsRegion
}

func (s *SetGuardianFactorsProviderPushNotificationSnsResponseContent) GetSnsApnsPlatformApplicationArn() string {
	if s == nil || s.SnsApnsPlatformApplicationArn == nil {
		return ""
	}
	return *s.SnsApnsPlatformApplicationArn
}

func (s *SetGuardianFactorsProviderPushNotificationSnsResponseContent) GetSnsGcmPlatformApplicationArn() string {
	if s == nil || s.SnsGcmPlatformApplicationArn == nil {
		return ""
	}
	return *s.SnsGcmPlatformApplicationArn
}

func (s *SetGuardianFactorsProviderPushNotificationSnsResponseContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorsProviderPushNotificationSnsResponseContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetAwsAccessKeyID sets the AwsAccessKeyID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPushNotificationSnsResponseContent) SetAwsAccessKeyID(awsAccessKeyID *string) {
	s.AwsAccessKeyID = awsAccessKeyID
	s.require(setGuardianFactorsProviderPushNotificationSnsResponseContentFieldAwsAccessKeyID)
}

// SetAwsSecretAccessKey sets the AwsSecretAccessKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPushNotificationSnsResponseContent) SetAwsSecretAccessKey(awsSecretAccessKey *string) {
	s.AwsSecretAccessKey = awsSecretAccessKey
	s.require(setGuardianFactorsProviderPushNotificationSnsResponseContentFieldAwsSecretAccessKey)
}

// SetAwsRegion sets the AwsRegion field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPushNotificationSnsResponseContent) SetAwsRegion(awsRegion *string) {
	s.AwsRegion = awsRegion
	s.require(setGuardianFactorsProviderPushNotificationSnsResponseContentFieldAwsRegion)
}

// SetSnsApnsPlatformApplicationArn sets the SnsApnsPlatformApplicationArn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPushNotificationSnsResponseContent) SetSnsApnsPlatformApplicationArn(snsApnsPlatformApplicationArn *string) {
	s.SnsApnsPlatformApplicationArn = snsApnsPlatformApplicationArn
	s.require(setGuardianFactorsProviderPushNotificationSnsResponseContentFieldSnsApnsPlatformApplicationArn)
}

// SetSnsGcmPlatformApplicationArn sets the SnsGcmPlatformApplicationArn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderPushNotificationSnsResponseContent) SetSnsGcmPlatformApplicationArn(snsGcmPlatformApplicationArn *string) {
	s.SnsGcmPlatformApplicationArn = snsGcmPlatformApplicationArn
	s.require(setGuardianFactorsProviderPushNotificationSnsResponseContentFieldSnsGcmPlatformApplicationArn)
}

func (s *SetGuardianFactorsProviderPushNotificationSnsResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorsProviderPushNotificationSnsResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorsProviderPushNotificationSnsResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorsProviderPushNotificationSnsResponseContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorsProviderPushNotificationSnsResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorsProviderPushNotificationSnsResponseContent) 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)
}

var (
	setGuardianFactorsProviderSmsResponseContentFieldProvider = big.NewInt(1 << 0)
)

type SetGuardianFactorsProviderSmsResponseContent struct {
	Provider *GuardianFactorsProviderSmsProviderEnum `json:"provider,omitempty" url:"provider,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 *SetGuardianFactorsProviderSmsResponseContent) GetProvider() GuardianFactorsProviderSmsProviderEnum {
	if s == nil || s.Provider == nil {
		return ""
	}
	return *s.Provider
}

func (s *SetGuardianFactorsProviderSmsResponseContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorsProviderSmsResponseContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetProvider sets the Provider field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderSmsResponseContent) SetProvider(provider *GuardianFactorsProviderSmsProviderEnum) {
	s.Provider = provider
	s.require(setGuardianFactorsProviderSmsResponseContentFieldProvider)
}

func (s *SetGuardianFactorsProviderSmsResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorsProviderSmsResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorsProviderSmsResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorsProviderSmsResponseContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorsProviderSmsResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorsProviderSmsResponseContent) 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)
}

var (
	setGuardianFactorsProviderSmsTwilioResponseContentFieldFrom                = big.NewInt(1 << 0)
	setGuardianFactorsProviderSmsTwilioResponseContentFieldMessagingServiceSid = big.NewInt(1 << 1)
	setGuardianFactorsProviderSmsTwilioResponseContentFieldAuthToken           = big.NewInt(1 << 2)
	setGuardianFactorsProviderSmsTwilioResponseContentFieldSid                 = big.NewInt(1 << 3)
)

type SetGuardianFactorsProviderSmsTwilioResponseContent struct {
	// From number
	From *string `json:"from,omitempty" url:"from,omitempty"`
	// Copilot SID
	MessagingServiceSid *string `json:"messaging_service_sid,omitempty" url:"messaging_service_sid,omitempty"`
	// Twilio Authentication token
	AuthToken *string `json:"auth_token,omitempty" url:"auth_token,omitempty"`
	// Twilio SID
	Sid *string `json:"sid,omitempty" url:"sid,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 *SetGuardianFactorsProviderSmsTwilioResponseContent) GetFrom() string {
	if s == nil || s.From == nil {
		return ""
	}
	return *s.From
}

func (s *SetGuardianFactorsProviderSmsTwilioResponseContent) GetMessagingServiceSid() string {
	if s == nil || s.MessagingServiceSid == nil {
		return ""
	}
	return *s.MessagingServiceSid
}

func (s *SetGuardianFactorsProviderSmsTwilioResponseContent) GetAuthToken() string {
	if s == nil || s.AuthToken == nil {
		return ""
	}
	return *s.AuthToken
}

func (s *SetGuardianFactorsProviderSmsTwilioResponseContent) GetSid() string {
	if s == nil || s.Sid == nil {
		return ""
	}
	return *s.Sid
}

func (s *SetGuardianFactorsProviderSmsTwilioResponseContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetGuardianFactorsProviderSmsTwilioResponseContent) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetFrom sets the From field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderSmsTwilioResponseContent) SetFrom(from *string) {
	s.From = from
	s.require(setGuardianFactorsProviderSmsTwilioResponseContentFieldFrom)
}

// SetMessagingServiceSid sets the MessagingServiceSid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderSmsTwilioResponseContent) SetMessagingServiceSid(messagingServiceSid *string) {
	s.MessagingServiceSid = messagingServiceSid
	s.require(setGuardianFactorsProviderSmsTwilioResponseContentFieldMessagingServiceSid)
}

// SetAuthToken sets the AuthToken field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderSmsTwilioResponseContent) SetAuthToken(authToken *string) {
	s.AuthToken = authToken
	s.require(setGuardianFactorsProviderSmsTwilioResponseContentFieldAuthToken)
}

// SetSid sets the Sid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetGuardianFactorsProviderSmsTwilioResponseContent) SetSid(sid *string) {
	s.Sid = sid
	s.require(setGuardianFactorsProviderSmsTwilioResponseContentFieldSid)
}

func (s *SetGuardianFactorsProviderSmsTwilioResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler SetGuardianFactorsProviderSmsTwilioResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetGuardianFactorsProviderSmsTwilioResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetGuardianFactorsProviderSmsTwilioResponseContent) MarshalJSON() ([]byte, error) {
	type embed SetGuardianFactorsProviderSmsTwilioResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetGuardianFactorsProviderSmsTwilioResponseContent) 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 SetGuardianPoliciesRequestContent = []MfaPolicyEnum

type SetGuardianPoliciesResponseContent = []MfaPolicyEnum

// An object containing template partials for a group of screens.
type SetPartialsRequestContent = map[string]interface{}

// The list of text keys and values to customize the self-service SSO page. Values can be plain text or rich HTML content limited to basic styling tags and hyperlinks.
type SetSelfServiceProfileCustomTextRequestContent = map[string]string

// The resulting list of custom text keys and values.
type SetSelfServiceProfileCustomTextResponseContent = map[string]string

// The successfully created authentication method.
var (
	setUserAuthenticationMethodResponseContentFieldID                            = big.NewInt(1 << 0)
	setUserAuthenticationMethodResponseContentFieldType                          = big.NewInt(1 << 1)
	setUserAuthenticationMethodResponseContentFieldName                          = big.NewInt(1 << 2)
	setUserAuthenticationMethodResponseContentFieldTotpSecret                    = big.NewInt(1 << 3)
	setUserAuthenticationMethodResponseContentFieldPhoneNumber                   = big.NewInt(1 << 4)
	setUserAuthenticationMethodResponseContentFieldEmail                         = big.NewInt(1 << 5)
	setUserAuthenticationMethodResponseContentFieldAuthenticationMethods         = big.NewInt(1 << 6)
	setUserAuthenticationMethodResponseContentFieldPreferredAuthenticationMethod = big.NewInt(1 << 7)
	setUserAuthenticationMethodResponseContentFieldKeyID                         = big.NewInt(1 << 8)
	setUserAuthenticationMethodResponseContentFieldPublicKey                     = big.NewInt(1 << 9)
	setUserAuthenticationMethodResponseContentFieldAaguid                        = big.NewInt(1 << 10)
	setUserAuthenticationMethodResponseContentFieldRelyingPartyIdentifier        = big.NewInt(1 << 11)
	setUserAuthenticationMethodResponseContentFieldCreatedAt                     = big.NewInt(1 << 12)
)

type SetUserAuthenticationMethodResponseContent struct {
	// The ID of the newly created authentication method (automatically generated by the application)
	ID   *string                             `json:"id,omitempty" url:"id,omitempty"`
	Type CreatedAuthenticationMethodTypeEnum `json:"type" url:"type"`
	// A human-readable label to identify the authentication method.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Base32 encoded secret for TOTP generation
	TotpSecret *string `json:"totp_secret,omitempty" url:"totp_secret,omitempty"`
	// Applies to phone authentication methods only. The destination phone number used to send verification codes via text and voice.
	PhoneNumber *string `json:"phone_number,omitempty" url:"phone_number,omitempty"`
	// Applies to email authentication methods only. The email address used to send verification messages.
	Email                         *string                               `json:"email,omitempty" url:"email,omitempty"`
	AuthenticationMethods         []*UserAuthenticationMethodProperties `json:"authentication_methods,omitempty" url:"authentication_methods,omitempty"`
	PreferredAuthenticationMethod *PreferredAuthenticationMethodEnum    `json:"preferred_authentication_method,omitempty" url:"preferred_authentication_method,omitempty"`
	// Applies to webauthn authenticators only. The id of the credential.
	KeyID *string `json:"key_id,omitempty" url:"key_id,omitempty"`
	// Applies to webauthn authenticators only. The public key.
	PublicKey *string `json:"public_key,omitempty" url:"public_key,omitempty"`
	// Applies to passkeys only. Authenticator Attestation Globally Unique Identifier.
	Aaguid *string `json:"aaguid,omitempty" url:"aaguid,omitempty"`
	// Applies to webauthn authenticators only. The relying party identifier.
	RelyingPartyIdentifier *string `json:"relying_party_identifier,omitempty" url:"relying_party_identifier,omitempty"`
	// Authentication method creation date
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,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 *SetUserAuthenticationMethodResponseContent) GetID() string {
	if s == nil || s.ID == nil {
		return ""
	}
	return *s.ID
}

func (s *SetUserAuthenticationMethodResponseContent) GetType() CreatedAuthenticationMethodTypeEnum {
	if s == nil {
		return ""
	}
	return s.Type
}

func (s *SetUserAuthenticationMethodResponseContent) GetName() string {
	if s == nil || s.Name == nil {
		return ""
	}
	return *s.Name
}

func (s *SetUserAuthenticationMethodResponseContent) GetTotpSecret() string {
	if s == nil || s.TotpSecret == nil {
		return ""
	}
	return *s.TotpSecret
}

func (s *SetUserAuthenticationMethodResponseContent) GetPhoneNumber() string {
	if s == nil || s.PhoneNumber == nil {
		return ""
	}
	return *s.PhoneNumber
}

func (s *SetUserAuthenticationMethodResponseContent) GetEmail() string {
	if s == nil || s.Email == nil {
		return ""
	}
	return *s.Email
}

func (s *SetUserAuthenticationMethodResponseContent) GetAuthenticationMethods() []*UserAuthenticationMethodProperties {
	if s == nil || s.AuthenticationMethods == nil {
		return nil
	}
	return s.AuthenticationMethods
}

func (s *SetUserAuthenticationMethodResponseContent) GetPreferredAuthenticationMethod() PreferredAuthenticationMethodEnum {
	if s == nil || s.PreferredAuthenticationMethod == nil {
		return ""
	}
	return *s.PreferredAuthenticationMethod
}

func (s *SetUserAuthenticationMethodResponseContent) GetKeyID() string {
	if s == nil || s.KeyID == nil {
		return ""
	}
	return *s.KeyID
}

func (s *SetUserAuthenticationMethodResponseContent) GetPublicKey() string {
	if s == nil || s.PublicKey == nil {
		return ""
	}
	return *s.PublicKey
}

func (s *SetUserAuthenticationMethodResponseContent) GetAaguid() string {
	if s == nil || s.Aaguid == nil {
		return ""
	}
	return *s.Aaguid
}

func (s *SetUserAuthenticationMethodResponseContent) GetRelyingPartyIdentifier() string {
	if s == nil || s.RelyingPartyIdentifier == nil {
		return ""
	}
	return *s.RelyingPartyIdentifier
}

func (s *SetUserAuthenticationMethodResponseContent) GetCreatedAt() time.Time {
	if s == nil || s.CreatedAt == nil {
		return time.Time{}
	}
	return *s.CreatedAt
}

func (s *SetUserAuthenticationMethodResponseContent) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetUserAuthenticationMethodResponseContent) 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 *SetUserAuthenticationMethodResponseContent) SetID(id *string) {
	s.ID = id
	s.require(setUserAuthenticationMethodResponseContentFieldID)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethodResponseContent) SetType(type_ CreatedAuthenticationMethodTypeEnum) {
	s.Type = type_
	s.require(setUserAuthenticationMethodResponseContentFieldType)
}

// 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 *SetUserAuthenticationMethodResponseContent) SetName(name *string) {
	s.Name = name
	s.require(setUserAuthenticationMethodResponseContentFieldName)
}

// SetTotpSecret sets the TotpSecret field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethodResponseContent) SetTotpSecret(totpSecret *string) {
	s.TotpSecret = totpSecret
	s.require(setUserAuthenticationMethodResponseContentFieldTotpSecret)
}

// SetPhoneNumber sets the PhoneNumber field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethodResponseContent) SetPhoneNumber(phoneNumber *string) {
	s.PhoneNumber = phoneNumber
	s.require(setUserAuthenticationMethodResponseContentFieldPhoneNumber)
}

// SetEmail sets the Email field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethodResponseContent) SetEmail(email *string) {
	s.Email = email
	s.require(setUserAuthenticationMethodResponseContentFieldEmail)
}

// SetAuthenticationMethods sets the AuthenticationMethods field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethodResponseContent) SetAuthenticationMethods(authenticationMethods []*UserAuthenticationMethodProperties) {
	s.AuthenticationMethods = authenticationMethods
	s.require(setUserAuthenticationMethodResponseContentFieldAuthenticationMethods)
}

// SetPreferredAuthenticationMethod sets the PreferredAuthenticationMethod field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethodResponseContent) SetPreferredAuthenticationMethod(preferredAuthenticationMethod *PreferredAuthenticationMethodEnum) {
	s.PreferredAuthenticationMethod = preferredAuthenticationMethod
	s.require(setUserAuthenticationMethodResponseContentFieldPreferredAuthenticationMethod)
}

// SetKeyID sets the KeyID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethodResponseContent) SetKeyID(keyID *string) {
	s.KeyID = keyID
	s.require(setUserAuthenticationMethodResponseContentFieldKeyID)
}

// SetPublicKey sets the PublicKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethodResponseContent) SetPublicKey(publicKey *string) {
	s.PublicKey = publicKey
	s.require(setUserAuthenticationMethodResponseContentFieldPublicKey)
}

// SetAaguid sets the Aaguid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethodResponseContent) SetAaguid(aaguid *string) {
	s.Aaguid = aaguid
	s.require(setUserAuthenticationMethodResponseContentFieldAaguid)
}

// SetRelyingPartyIdentifier sets the RelyingPartyIdentifier field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethodResponseContent) SetRelyingPartyIdentifier(relyingPartyIdentifier *string) {
	s.RelyingPartyIdentifier = relyingPartyIdentifier
	s.require(setUserAuthenticationMethodResponseContentFieldRelyingPartyIdentifier)
}

// 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 *SetUserAuthenticationMethodResponseContent) SetCreatedAt(createdAt *time.Time) {
	s.CreatedAt = createdAt
	s.require(setUserAuthenticationMethodResponseContentFieldCreatedAt)
}

func (s *SetUserAuthenticationMethodResponseContent) UnmarshalJSON(data []byte) error {
	type embed SetUserAuthenticationMethodResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
	}{
		embed: embed(*s),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*s = SetUserAuthenticationMethodResponseContent(unmarshaler.embed)
	s.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetUserAuthenticationMethodResponseContent) MarshalJSON() ([]byte, error) {
	type embed SetUserAuthenticationMethodResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
	}{
		embed:     embed(*s),
		CreatedAt: internal.NewOptionalDateTime(s.CreatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetUserAuthenticationMethodResponseContent) 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)
}

var (
	setUserAuthenticationMethodsFieldType                          = big.NewInt(1 << 0)
	setUserAuthenticationMethodsFieldPreferredAuthenticationMethod = big.NewInt(1 << 1)
	setUserAuthenticationMethodsFieldName                          = big.NewInt(1 << 2)
	setUserAuthenticationMethodsFieldPhoneNumber                   = big.NewInt(1 << 3)
	setUserAuthenticationMethodsFieldEmail                         = big.NewInt(1 << 4)
	setUserAuthenticationMethodsFieldTotpSecret                    = big.NewInt(1 << 5)
)

type SetUserAuthenticationMethods struct {
	Type                          AuthenticationTypeEnum             `json:"type" url:"type"`
	PreferredAuthenticationMethod *PreferredAuthenticationMethodEnum `json:"preferred_authentication_method,omitempty" url:"preferred_authentication_method,omitempty"`
	// AA human-readable label to identify the authentication method.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Applies to phone authentication methods only. The destination phone number used to send verification codes via text and voice.
	PhoneNumber *string `json:"phone_number,omitempty" url:"phone_number,omitempty"`
	// Applies to email authentication methods only. The email address used to send verification messages.
	Email *string `json:"email,omitempty" url:"email,omitempty"`
	// Applies to totp authentication methods only. The base32 encoded secret for TOTP generation.
	TotpSecret *string `json:"totp_secret,omitempty" url:"totp_secret,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 *SetUserAuthenticationMethods) GetType() AuthenticationTypeEnum {
	if s == nil {
		return ""
	}
	return s.Type
}

func (s *SetUserAuthenticationMethods) GetPreferredAuthenticationMethod() PreferredAuthenticationMethodEnum {
	if s == nil || s.PreferredAuthenticationMethod == nil {
		return ""
	}
	return *s.PreferredAuthenticationMethod
}

func (s *SetUserAuthenticationMethods) GetName() string {
	if s == nil || s.Name == nil {
		return ""
	}
	return *s.Name
}

func (s *SetUserAuthenticationMethods) GetPhoneNumber() string {
	if s == nil || s.PhoneNumber == nil {
		return ""
	}
	return *s.PhoneNumber
}

func (s *SetUserAuthenticationMethods) GetEmail() string {
	if s == nil || s.Email == nil {
		return ""
	}
	return *s.Email
}

func (s *SetUserAuthenticationMethods) GetTotpSecret() string {
	if s == nil || s.TotpSecret == nil {
		return ""
	}
	return *s.TotpSecret
}

func (s *SetUserAuthenticationMethods) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SetUserAuthenticationMethods) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethods) SetType(type_ AuthenticationTypeEnum) {
	s.Type = type_
	s.require(setUserAuthenticationMethodsFieldType)
}

// SetPreferredAuthenticationMethod sets the PreferredAuthenticationMethod field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethods) SetPreferredAuthenticationMethod(preferredAuthenticationMethod *PreferredAuthenticationMethodEnum) {
	s.PreferredAuthenticationMethod = preferredAuthenticationMethod
	s.require(setUserAuthenticationMethodsFieldPreferredAuthenticationMethod)
}

// 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 *SetUserAuthenticationMethods) SetName(name *string) {
	s.Name = name
	s.require(setUserAuthenticationMethodsFieldName)
}

// SetPhoneNumber sets the PhoneNumber field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethods) SetPhoneNumber(phoneNumber *string) {
	s.PhoneNumber = phoneNumber
	s.require(setUserAuthenticationMethodsFieldPhoneNumber)
}

// SetEmail sets the Email field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethods) SetEmail(email *string) {
	s.Email = email
	s.require(setUserAuthenticationMethodsFieldEmail)
}

// SetTotpSecret sets the TotpSecret field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SetUserAuthenticationMethods) SetTotpSecret(totpSecret *string) {
	s.TotpSecret = totpSecret
	s.require(setUserAuthenticationMethodsFieldTotpSecret)
}

func (s *SetUserAuthenticationMethods) UnmarshalJSON(data []byte) error {
	type unmarshaler SetUserAuthenticationMethods
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SetUserAuthenticationMethods(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SetUserAuthenticationMethods) MarshalJSON() ([]byte, error) {
	type embed SetUserAuthenticationMethods
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SetUserAuthenticationMethods) 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 SetUserAuthenticationMethodsRequestContent = []*SetUserAuthenticationMethods

// An object containing custom dictionaries for a group of screens.
type SetsCustomTextsByLanguageRequestContent = map[string]interface{}

// Algorithm used to sign JWTs. Can be `HS256` or `RS256`. `PS256` available via addon.
type SigningAlgorithmEnum string

const (
	SigningAlgorithmEnumHs256 SigningAlgorithmEnum = "HS256"
	SigningAlgorithmEnumRs256 SigningAlgorithmEnum = "RS256"
	SigningAlgorithmEnumRs512 SigningAlgorithmEnum = "RS512"
	SigningAlgorithmEnumPs256 SigningAlgorithmEnum = "PS256"
)

func NewSigningAlgorithmEnumFromString(s string) (SigningAlgorithmEnum, error) {
	switch s {
	case "HS256":
		return SigningAlgorithmEnumHs256, nil
	case "RS256":
		return SigningAlgorithmEnumRs256, nil
	case "RS512":
		return SigningAlgorithmEnumRs512, nil
	case "PS256":
		return SigningAlgorithmEnumPs256, nil
	}
	var t SigningAlgorithmEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (s SigningAlgorithmEnum) Ptr() *SigningAlgorithmEnum {
	return &s
}

var (
	signingKeysFieldKid          = big.NewInt(1 << 0)
	signingKeysFieldCert         = big.NewInt(1 << 1)
	signingKeysFieldPkcs7        = big.NewInt(1 << 2)
	signingKeysFieldCurrent      = big.NewInt(1 << 3)
	signingKeysFieldNext         = big.NewInt(1 << 4)
	signingKeysFieldPrevious     = big.NewInt(1 << 5)
	signingKeysFieldCurrentSince = big.NewInt(1 << 6)
	signingKeysFieldCurrentUntil = big.NewInt(1 << 7)
	signingKeysFieldFingerprint  = big.NewInt(1 << 8)
	signingKeysFieldThumbprint   = big.NewInt(1 << 9)
	signingKeysFieldRevoked      = big.NewInt(1 << 10)
	signingKeysFieldRevokedAt    = big.NewInt(1 << 11)
)

type SigningKeys struct {
	// The key id of the signing key
	Kid string `json:"kid" url:"kid"`
	// The public certificate of the signing key
	Cert string `json:"cert" url:"cert"`
	// The public certificate of the signing key in pkcs7 format
	Pkcs7 *string `json:"pkcs7,omitempty" url:"pkcs7,omitempty"`
	// True if the key is the the current key
	Current *bool `json:"current,omitempty" url:"current,omitempty"`
	// True if the key is the the next key
	Next *bool `json:"next,omitempty" url:"next,omitempty"`
	// True if the key is the the previous key
	Previous     *bool            `json:"previous,omitempty" url:"previous,omitempty"`
	CurrentSince *SigningKeysDate `json:"current_since,omitempty" url:"current_since,omitempty"`
	CurrentUntil *SigningKeysDate `json:"current_until,omitempty" url:"current_until,omitempty"`
	// The cert fingerprint
	Fingerprint string `json:"fingerprint" url:"fingerprint"`
	// The cert thumbprint
	Thumbprint string `json:"thumbprint" url:"thumbprint"`
	// True if the key is revoked
	Revoked   *bool            `json:"revoked,omitempty" url:"revoked,omitempty"`
	RevokedAt *SigningKeysDate `json:"revoked_at,omitempty" url:"revoked_at,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 *SigningKeys) GetKid() string {
	if s == nil {
		return ""
	}
	return s.Kid
}

func (s *SigningKeys) GetCert() string {
	if s == nil {
		return ""
	}
	return s.Cert
}

func (s *SigningKeys) GetPkcs7() string {
	if s == nil || s.Pkcs7 == nil {
		return ""
	}
	return *s.Pkcs7
}

func (s *SigningKeys) GetCurrent() bool {
	if s == nil || s.Current == nil {
		return false
	}
	return *s.Current
}

func (s *SigningKeys) GetNext() bool {
	if s == nil || s.Next == nil {
		return false
	}
	return *s.Next
}

func (s *SigningKeys) GetPrevious() bool {
	if s == nil || s.Previous == nil {
		return false
	}
	return *s.Previous
}

func (s *SigningKeys) GetCurrentSince() SigningKeysDate {
	if s == nil || s.CurrentSince == nil {
		return SigningKeysDate{}
	}
	return *s.CurrentSince
}

func (s *SigningKeys) GetCurrentUntil() SigningKeysDate {
	if s == nil || s.CurrentUntil == nil {
		return SigningKeysDate{}
	}
	return *s.CurrentUntil
}

func (s *SigningKeys) GetFingerprint() string {
	if s == nil {
		return ""
	}
	return s.Fingerprint
}

func (s *SigningKeys) GetThumbprint() string {
	if s == nil {
		return ""
	}
	return s.Thumbprint
}

func (s *SigningKeys) GetRevoked() bool {
	if s == nil || s.Revoked == nil {
		return false
	}
	return *s.Revoked
}

func (s *SigningKeys) GetRevokedAt() SigningKeysDate {
	if s == nil || s.RevokedAt == nil {
		return SigningKeysDate{}
	}
	return *s.RevokedAt
}

func (s *SigningKeys) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SigningKeys) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetKid sets the Kid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SigningKeys) SetKid(kid string) {
	s.Kid = kid
	s.require(signingKeysFieldKid)
}

// SetCert sets the Cert field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SigningKeys) SetCert(cert string) {
	s.Cert = cert
	s.require(signingKeysFieldCert)
}

// SetPkcs7 sets the Pkcs7 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SigningKeys) SetPkcs7(pkcs7 *string) {
	s.Pkcs7 = pkcs7
	s.require(signingKeysFieldPkcs7)
}

// SetCurrent sets the Current field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SigningKeys) SetCurrent(current *bool) {
	s.Current = current
	s.require(signingKeysFieldCurrent)
}

// SetNext sets the Next field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SigningKeys) SetNext(next *bool) {
	s.Next = next
	s.require(signingKeysFieldNext)
}

// SetPrevious sets the Previous field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SigningKeys) SetPrevious(previous *bool) {
	s.Previous = previous
	s.require(signingKeysFieldPrevious)
}

// SetCurrentSince sets the CurrentSince field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SigningKeys) SetCurrentSince(currentSince *SigningKeysDate) {
	s.CurrentSince = currentSince
	s.require(signingKeysFieldCurrentSince)
}

// SetCurrentUntil sets the CurrentUntil field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SigningKeys) SetCurrentUntil(currentUntil *SigningKeysDate) {
	s.CurrentUntil = currentUntil
	s.require(signingKeysFieldCurrentUntil)
}

// SetFingerprint sets the Fingerprint field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SigningKeys) SetFingerprint(fingerprint string) {
	s.Fingerprint = fingerprint
	s.require(signingKeysFieldFingerprint)
}

// SetThumbprint sets the Thumbprint field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SigningKeys) SetThumbprint(thumbprint string) {
	s.Thumbprint = thumbprint
	s.require(signingKeysFieldThumbprint)
}

// SetRevoked sets the Revoked field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SigningKeys) SetRevoked(revoked *bool) {
	s.Revoked = revoked
	s.require(signingKeysFieldRevoked)
}

// SetRevokedAt sets the RevokedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SigningKeys) SetRevokedAt(revokedAt *SigningKeysDate) {
	s.RevokedAt = revokedAt
	s.require(signingKeysFieldRevokedAt)
}

func (s *SigningKeys) UnmarshalJSON(data []byte) error {
	type unmarshaler SigningKeys
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SigningKeys(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SigningKeys) MarshalJSON() ([]byte, error) {
	type embed SigningKeys
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SigningKeys) 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 SigningKeysDate struct {
	// The date and time when the key became the current key
	String string
	// The date and time when the key became the current key
	StringUnknownMap map[string]interface{}

	typ string
}

func (s *SigningKeysDate) GetString() string {
	if s == nil {
		return ""
	}
	return s.String
}

func (s *SigningKeysDate) GetStringUnknownMap() map[string]interface{} {
	if s == nil {
		return nil
	}
	return s.StringUnknownMap
}

func (s *SigningKeysDate) UnmarshalJSON(data []byte) error {
	var valueString string
	if err := json.Unmarshal(data, &valueString); err == nil {
		s.typ = "String"
		s.String = valueString
		return nil
	}
	var valueStringUnknownMap map[string]interface{}
	if err := json.Unmarshal(data, &valueStringUnknownMap); err == nil {
		s.typ = "StringUnknownMap"
		s.StringUnknownMap = valueStringUnknownMap
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, s)
}

func (s SigningKeysDate) MarshalJSON() ([]byte, error) {
	if s.typ == "String" || s.String != "" {
		return json.Marshal(s.String)
	}
	if s.typ == "StringUnknownMap" || s.StringUnknownMap != nil {
		return json.Marshal(s.StringUnknownMap)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", s)
}

type SigningKeysDateVisitor interface {
	VisitString(string) error
	VisitStringUnknownMap(map[string]interface{}) error
}

func (s *SigningKeysDate) Accept(visitor SigningKeysDateVisitor) error {
	if s.typ == "String" || s.String != "" {
		return visitor.VisitString(s.String)
	}
	if s.typ == "StringUnknownMap" || s.StringUnknownMap != nil {
		return visitor.VisitStringUnknownMap(s.StringUnknownMap)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", s)
}

type SupportedLocales string

const (
	SupportedLocalesAm    SupportedLocales = "am"
	SupportedLocalesAr    SupportedLocales = "ar"
	SupportedLocalesArEg  SupportedLocales = "ar-EG"
	SupportedLocalesArSa  SupportedLocales = "ar-SA"
	SupportedLocalesAz    SupportedLocales = "az"
	SupportedLocalesBg    SupportedLocales = "bg"
	SupportedLocalesBn    SupportedLocales = "bn"
	SupportedLocalesBs    SupportedLocales = "bs"
	SupportedLocalesCaEs  SupportedLocales = "ca-ES"
	SupportedLocalesCnr   SupportedLocales = "cnr"
	SupportedLocalesCs    SupportedLocales = "cs"
	SupportedLocalesCy    SupportedLocales = "cy"
	SupportedLocalesDa    SupportedLocales = "da"
	SupportedLocalesDe    SupportedLocales = "de"
	SupportedLocalesEl    SupportedLocales = "el"
	SupportedLocalesEn    SupportedLocales = "en"
	SupportedLocalesEnCa  SupportedLocales = "en-CA"
	SupportedLocalesEs    SupportedLocales = "es"
	SupportedLocalesEs419 SupportedLocales = "es-419"
	SupportedLocalesEsAr  SupportedLocales = "es-AR"
	SupportedLocalesEsMx  SupportedLocales = "es-MX"
	SupportedLocalesEt    SupportedLocales = "et"
	SupportedLocalesEuEs  SupportedLocales = "eu-ES"
	SupportedLocalesFa    SupportedLocales = "fa"
	SupportedLocalesFi    SupportedLocales = "fi"
	SupportedLocalesFr    SupportedLocales = "fr"
	SupportedLocalesFrCa  SupportedLocales = "fr-CA"
	SupportedLocalesFrFr  SupportedLocales = "fr-FR"
	SupportedLocalesGlEs  SupportedLocales = "gl-ES"
	SupportedLocalesGu    SupportedLocales = "gu"
	SupportedLocalesHe    SupportedLocales = "he"
	SupportedLocalesHi    SupportedLocales = "hi"
	SupportedLocalesHr    SupportedLocales = "hr"
	SupportedLocalesHu    SupportedLocales = "hu"
	SupportedLocalesHy    SupportedLocales = "hy"
	SupportedLocalesID    SupportedLocales = "id"
	SupportedLocalesIs    SupportedLocales = "is"
	SupportedLocalesIt    SupportedLocales = "it"
	SupportedLocalesJa    SupportedLocales = "ja"
	SupportedLocalesKa    SupportedLocales = "ka"
	SupportedLocalesKk    SupportedLocales = "kk"
	SupportedLocalesKn    SupportedLocales = "kn"
	SupportedLocalesKo    SupportedLocales = "ko"
	SupportedLocalesLt    SupportedLocales = "lt"
	SupportedLocalesLv    SupportedLocales = "lv"
	SupportedLocalesMk    SupportedLocales = "mk"
	SupportedLocalesMl    SupportedLocales = "ml"
	SupportedLocalesMn    SupportedLocales = "mn"
	SupportedLocalesMr    SupportedLocales = "mr"
	SupportedLocalesMs    SupportedLocales = "ms"
	SupportedLocalesMy    SupportedLocales = "my"
	SupportedLocalesNb    SupportedLocales = "nb"
	SupportedLocalesNl    SupportedLocales = "nl"
	SupportedLocalesNn    SupportedLocales = "nn"
	SupportedLocalesNo    SupportedLocales = "no"
	SupportedLocalesPa    SupportedLocales = "pa"
	SupportedLocalesPl    SupportedLocales = "pl"
	SupportedLocalesPt    SupportedLocales = "pt"
	SupportedLocalesPtBr  SupportedLocales = "pt-BR"
	SupportedLocalesPtPt  SupportedLocales = "pt-PT"
	SupportedLocalesRo    SupportedLocales = "ro"
	SupportedLocalesRu    SupportedLocales = "ru"
	SupportedLocalesSk    SupportedLocales = "sk"
	SupportedLocalesSl    SupportedLocales = "sl"
	SupportedLocalesSo    SupportedLocales = "so"
	SupportedLocalesSq    SupportedLocales = "sq"
	SupportedLocalesSr    SupportedLocales = "sr"
	SupportedLocalesSv    SupportedLocales = "sv"
	SupportedLocalesSw    SupportedLocales = "sw"
	SupportedLocalesTa    SupportedLocales = "ta"
	SupportedLocalesTe    SupportedLocales = "te"
	SupportedLocalesTh    SupportedLocales = "th"
	SupportedLocalesTl    SupportedLocales = "tl"
	SupportedLocalesTr    SupportedLocales = "tr"
	SupportedLocalesUk    SupportedLocales = "uk"
	SupportedLocalesUr    SupportedLocales = "ur"
	SupportedLocalesVi    SupportedLocales = "vi"
	SupportedLocalesZgh   SupportedLocales = "zgh"
	SupportedLocalesZhCn  SupportedLocales = "zh-CN"
	SupportedLocalesZhHk  SupportedLocales = "zh-HK"
	SupportedLocalesZhTw  SupportedLocales = "zh-TW"
)

func NewSupportedLocalesFromString(s string) (SupportedLocales, error) {
	switch s {
	case "am":
		return SupportedLocalesAm, nil
	case "ar":
		return SupportedLocalesAr, nil
	case "ar-EG":
		return SupportedLocalesArEg, nil
	case "ar-SA":
		return SupportedLocalesArSa, nil
	case "az":
		return SupportedLocalesAz, nil
	case "bg":
		return SupportedLocalesBg, nil
	case "bn":
		return SupportedLocalesBn, nil
	case "bs":
		return SupportedLocalesBs, nil
	case "ca-ES":
		return SupportedLocalesCaEs, nil
	case "cnr":
		return SupportedLocalesCnr, nil
	case "cs":
		return SupportedLocalesCs, nil
	case "cy":
		return SupportedLocalesCy, nil
	case "da":
		return SupportedLocalesDa, nil
	case "de":
		return SupportedLocalesDe, nil
	case "el":
		return SupportedLocalesEl, nil
	case "en":
		return SupportedLocalesEn, nil
	case "en-CA":
		return SupportedLocalesEnCa, nil
	case "es":
		return SupportedLocalesEs, nil
	case "es-419":
		return SupportedLocalesEs419, nil
	case "es-AR":
		return SupportedLocalesEsAr, nil
	case "es-MX":
		return SupportedLocalesEsMx, nil
	case "et":
		return SupportedLocalesEt, nil
	case "eu-ES":
		return SupportedLocalesEuEs, nil
	case "fa":
		return SupportedLocalesFa, nil
	case "fi":
		return SupportedLocalesFi, nil
	case "fr":
		return SupportedLocalesFr, nil
	case "fr-CA":
		return SupportedLocalesFrCa, nil
	case "fr-FR":
		return SupportedLocalesFrFr, nil
	case "gl-ES":
		return SupportedLocalesGlEs, nil
	case "gu":
		return SupportedLocalesGu, nil
	case "he":
		return SupportedLocalesHe, nil
	case "hi":
		return SupportedLocalesHi, nil
	case "hr":
		return SupportedLocalesHr, nil
	case "hu":
		return SupportedLocalesHu, nil
	case "hy":
		return SupportedLocalesHy, nil
	case "id":
		return SupportedLocalesID, nil
	case "is":
		return SupportedLocalesIs, nil
	case "it":
		return SupportedLocalesIt, nil
	case "ja":
		return SupportedLocalesJa, nil
	case "ka":
		return SupportedLocalesKa, nil
	case "kk":
		return SupportedLocalesKk, nil
	case "kn":
		return SupportedLocalesKn, nil
	case "ko":
		return SupportedLocalesKo, nil
	case "lt":
		return SupportedLocalesLt, nil
	case "lv":
		return SupportedLocalesLv, nil
	case "mk":
		return SupportedLocalesMk, nil
	case "ml":
		return SupportedLocalesMl, nil
	case "mn":
		return SupportedLocalesMn, nil
	case "mr":
		return SupportedLocalesMr, nil
	case "ms":
		return SupportedLocalesMs, nil
	case "my":
		return SupportedLocalesMy, nil
	case "nb":
		return SupportedLocalesNb, nil
	case "nl":
		return SupportedLocalesNl, nil
	case "nn":
		return SupportedLocalesNn, nil
	case "no":
		return SupportedLocalesNo, nil
	case "pa":
		return SupportedLocalesPa, nil
	case "pl":
		return SupportedLocalesPl, nil
	case "pt":
		return SupportedLocalesPt, nil
	case "pt-BR":
		return SupportedLocalesPtBr, nil
	case "pt-PT":
		return SupportedLocalesPtPt, nil
	case "ro":
		return SupportedLocalesRo, nil
	case "ru":
		return SupportedLocalesRu, nil
	case "sk":
		return SupportedLocalesSk, nil
	case "sl":
		return SupportedLocalesSl, nil
	case "so":
		return SupportedLocalesSo, nil
	case "sq":
		return SupportedLocalesSq, nil
	case "sr":
		return SupportedLocalesSr, nil
	case "sv":
		return SupportedLocalesSv, nil
	case "sw":
		return SupportedLocalesSw, nil
	case "ta":
		return SupportedLocalesTa, nil
	case "te":
		return SupportedLocalesTe, nil
	case "th":
		return SupportedLocalesTh, nil
	case "tl":
		return SupportedLocalesTl, nil
	case "tr":
		return SupportedLocalesTr, nil
	case "uk":
		return SupportedLocalesUk, nil
	case "ur":
		return SupportedLocalesUr, nil
	case "vi":
		return SupportedLocalesVi, nil
	case "zgh":
		return SupportedLocalesZgh, nil
	case "zh-CN":
		return SupportedLocalesZhCn, nil
	case "zh-HK":
		return SupportedLocalesZhHk, nil
	case "zh-TW":
		return SupportedLocalesZhTw, nil
	}
	var t SupportedLocales
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (s SupportedLocales) Ptr() *SupportedLocales {
	return &s
}

// List of trusted IP addresses that will not have attack protection enforced against them.
type SuspiciousIPThrottlingAllowlist = []SuspiciousIPThrottlingAllowlistItem

type SuspiciousIPThrottlingAllowlistItem = string

// Configuration options that apply before every login attempt.
var (
	suspiciousIPThrottlingPreLoginStageFieldMaxAttempts = big.NewInt(1 << 0)
	suspiciousIPThrottlingPreLoginStageFieldRate        = big.NewInt(1 << 1)
)

type SuspiciousIPThrottlingPreLoginStage struct {
	// Total number of attempts allowed per day.
	MaxAttempts *int `json:"max_attempts,omitempty" url:"max_attempts,omitempty"`
	// Interval of time, given in milliseconds, at which new attempts are granted.
	Rate *int `json:"rate,omitempty" url:"rate,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 *SuspiciousIPThrottlingPreLoginStage) GetMaxAttempts() int {
	if s == nil || s.MaxAttempts == nil {
		return 0
	}
	return *s.MaxAttempts
}

func (s *SuspiciousIPThrottlingPreLoginStage) GetRate() int {
	if s == nil || s.Rate == nil {
		return 0
	}
	return *s.Rate
}

func (s *SuspiciousIPThrottlingPreLoginStage) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SuspiciousIPThrottlingPreLoginStage) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetMaxAttempts sets the MaxAttempts field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SuspiciousIPThrottlingPreLoginStage) SetMaxAttempts(maxAttempts *int) {
	s.MaxAttempts = maxAttempts
	s.require(suspiciousIPThrottlingPreLoginStageFieldMaxAttempts)
}

// SetRate sets the Rate field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SuspiciousIPThrottlingPreLoginStage) SetRate(rate *int) {
	s.Rate = rate
	s.require(suspiciousIPThrottlingPreLoginStageFieldRate)
}

func (s *SuspiciousIPThrottlingPreLoginStage) UnmarshalJSON(data []byte) error {
	type unmarshaler SuspiciousIPThrottlingPreLoginStage
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SuspiciousIPThrottlingPreLoginStage(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SuspiciousIPThrottlingPreLoginStage) MarshalJSON() ([]byte, error) {
	type embed SuspiciousIPThrottlingPreLoginStage
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SuspiciousIPThrottlingPreLoginStage) 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)
}

// Configuration options that apply before every user registration attempt.
var (
	suspiciousIPThrottlingPreUserRegistrationStageFieldMaxAttempts = big.NewInt(1 << 0)
	suspiciousIPThrottlingPreUserRegistrationStageFieldRate        = big.NewInt(1 << 1)
)

type SuspiciousIPThrottlingPreUserRegistrationStage struct {
	// Total number of attempts allowed.
	MaxAttempts *int `json:"max_attempts,omitempty" url:"max_attempts,omitempty"`
	// Interval of time, given in milliseconds, at which new attempts are granted.
	Rate *int `json:"rate,omitempty" url:"rate,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 *SuspiciousIPThrottlingPreUserRegistrationStage) GetMaxAttempts() int {
	if s == nil || s.MaxAttempts == nil {
		return 0
	}
	return *s.MaxAttempts
}

func (s *SuspiciousIPThrottlingPreUserRegistrationStage) GetRate() int {
	if s == nil || s.Rate == nil {
		return 0
	}
	return *s.Rate
}

func (s *SuspiciousIPThrottlingPreUserRegistrationStage) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SuspiciousIPThrottlingPreUserRegistrationStage) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetMaxAttempts sets the MaxAttempts field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SuspiciousIPThrottlingPreUserRegistrationStage) SetMaxAttempts(maxAttempts *int) {
	s.MaxAttempts = maxAttempts
	s.require(suspiciousIPThrottlingPreUserRegistrationStageFieldMaxAttempts)
}

// SetRate sets the Rate field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SuspiciousIPThrottlingPreUserRegistrationStage) SetRate(rate *int) {
	s.Rate = rate
	s.require(suspiciousIPThrottlingPreUserRegistrationStageFieldRate)
}

func (s *SuspiciousIPThrottlingPreUserRegistrationStage) UnmarshalJSON(data []byte) error {
	type unmarshaler SuspiciousIPThrottlingPreUserRegistrationStage
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SuspiciousIPThrottlingPreUserRegistrationStage(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SuspiciousIPThrottlingPreUserRegistrationStage) MarshalJSON() ([]byte, error) {
	type embed SuspiciousIPThrottlingPreUserRegistrationStage
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SuspiciousIPThrottlingPreUserRegistrationStage) 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 SuspiciousIPThrottlingShieldsEnum string

const (
	SuspiciousIPThrottlingShieldsEnumBlock             SuspiciousIPThrottlingShieldsEnum = "block"
	SuspiciousIPThrottlingShieldsEnumAdminNotification SuspiciousIPThrottlingShieldsEnum = "admin_notification"
)

func NewSuspiciousIPThrottlingShieldsEnumFromString(s string) (SuspiciousIPThrottlingShieldsEnum, error) {
	switch s {
	case "block":
		return SuspiciousIPThrottlingShieldsEnumBlock, nil
	case "admin_notification":
		return SuspiciousIPThrottlingShieldsEnumAdminNotification, nil
	}
	var t SuspiciousIPThrottlingShieldsEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (s SuspiciousIPThrottlingShieldsEnum) Ptr() *SuspiciousIPThrottlingShieldsEnum {
	return &s
}

// Holds per-stage configuration options (max_attempts and rate).
var (
	suspiciousIPThrottlingStageFieldPreLogin            = big.NewInt(1 << 0)
	suspiciousIPThrottlingStageFieldPreUserRegistration = big.NewInt(1 << 1)
)

type SuspiciousIPThrottlingStage struct {
	PreLogin            *SuspiciousIPThrottlingPreLoginStage            `json:"pre-login,omitempty" url:"pre-login,omitempty"`
	PreUserRegistration *SuspiciousIPThrottlingPreUserRegistrationStage `json:"pre-user-registration,omitempty" url:"pre-user-registration,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 *SuspiciousIPThrottlingStage) GetPreLogin() SuspiciousIPThrottlingPreLoginStage {
	if s == nil || s.PreLogin == nil {
		return SuspiciousIPThrottlingPreLoginStage{}
	}
	return *s.PreLogin
}

func (s *SuspiciousIPThrottlingStage) GetPreUserRegistration() SuspiciousIPThrottlingPreUserRegistrationStage {
	if s == nil || s.PreUserRegistration == nil {
		return SuspiciousIPThrottlingPreUserRegistrationStage{}
	}
	return *s.PreUserRegistration
}

func (s *SuspiciousIPThrottlingStage) GetExtraProperties() map[string]interface{} {
	return s.extraProperties
}

func (s *SuspiciousIPThrottlingStage) require(field *big.Int) {
	if s.explicitFields == nil {
		s.explicitFields = big.NewInt(0)
	}
	s.explicitFields.Or(s.explicitFields, field)
}

// SetPreLogin sets the PreLogin field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SuspiciousIPThrottlingStage) SetPreLogin(preLogin *SuspiciousIPThrottlingPreLoginStage) {
	s.PreLogin = preLogin
	s.require(suspiciousIPThrottlingStageFieldPreLogin)
}

// SetPreUserRegistration sets the PreUserRegistration field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (s *SuspiciousIPThrottlingStage) SetPreUserRegistration(preUserRegistration *SuspiciousIPThrottlingPreUserRegistrationStage) {
	s.PreUserRegistration = preUserRegistration
	s.require(suspiciousIPThrottlingStageFieldPreUserRegistration)
}

func (s *SuspiciousIPThrottlingStage) UnmarshalJSON(data []byte) error {
	type unmarshaler SuspiciousIPThrottlingStage
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*s = SuspiciousIPThrottlingStage(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *s)
	if err != nil {
		return err
	}
	s.extraProperties = extraProperties
	s.rawJSON = json.RawMessage(data)
	return nil
}

func (s *SuspiciousIPThrottlingStage) MarshalJSON() ([]byte, error) {
	type embed SuspiciousIPThrottlingStage
	var marshaler = struct {
		embed
	}{
		embed: embed(*s),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, s.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (s *SuspiciousIPThrottlingStage) 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)
}

// Settings related to OIDC RP-initiated Logout
var (
	tenantOidcLogoutSettingsFieldRpLogoutEndSessionEndpointDiscovery = big.NewInt(1 << 0)
)

type TenantOidcLogoutSettings struct {
	// Enable the end_session_endpoint URL in the .well-known discovery configuration
	RpLogoutEndSessionEndpointDiscovery *bool `json:"rp_logout_end_session_endpoint_discovery,omitempty" url:"rp_logout_end_session_endpoint_discovery,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 (t *TenantOidcLogoutSettings) GetRpLogoutEndSessionEndpointDiscovery() bool {
	if t == nil || t.RpLogoutEndSessionEndpointDiscovery == nil {
		return false
	}
	return *t.RpLogoutEndSessionEndpointDiscovery
}

func (t *TenantOidcLogoutSettings) GetExtraProperties() map[string]interface{} {
	return t.extraProperties
}

func (t *TenantOidcLogoutSettings) require(field *big.Int) {
	if t.explicitFields == nil {
		t.explicitFields = big.NewInt(0)
	}
	t.explicitFields.Or(t.explicitFields, field)
}

// SetRpLogoutEndSessionEndpointDiscovery sets the RpLogoutEndSessionEndpointDiscovery field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantOidcLogoutSettings) SetRpLogoutEndSessionEndpointDiscovery(rpLogoutEndSessionEndpointDiscovery *bool) {
	t.RpLogoutEndSessionEndpointDiscovery = rpLogoutEndSessionEndpointDiscovery
	t.require(tenantOidcLogoutSettingsFieldRpLogoutEndSessionEndpointDiscovery)
}

func (t *TenantOidcLogoutSettings) UnmarshalJSON(data []byte) error {
	type unmarshaler TenantOidcLogoutSettings
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*t = TenantOidcLogoutSettings(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *t)
	if err != nil {
		return err
	}
	t.extraProperties = extraProperties
	t.rawJSON = json.RawMessage(data)
	return nil
}

func (t *TenantOidcLogoutSettings) MarshalJSON() ([]byte, error) {
	type embed TenantOidcLogoutSettings
	var marshaler = struct {
		embed
	}{
		embed: embed(*t),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, t.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (t *TenantOidcLogoutSettings) String() string {
	if len(t.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(t.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(t); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", t)
}

// Device Flow configuration
var (
	tenantSettingsDeviceFlowFieldCharset = big.NewInt(1 << 0)
	tenantSettingsDeviceFlowFieldMask    = big.NewInt(1 << 1)
)

type TenantSettingsDeviceFlow struct {
	Charset *TenantSettingsDeviceFlowCharset `json:"charset,omitempty" url:"charset,omitempty"`
	// Mask used to format a generated User Code into a friendly, readable format.
	Mask *string `json:"mask,omitempty" url:"mask,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 (t *TenantSettingsDeviceFlow) GetCharset() TenantSettingsDeviceFlowCharset {
	if t == nil || t.Charset == nil {
		return ""
	}
	return *t.Charset
}

func (t *TenantSettingsDeviceFlow) GetMask() string {
	if t == nil || t.Mask == nil {
		return ""
	}
	return *t.Mask
}

func (t *TenantSettingsDeviceFlow) GetExtraProperties() map[string]interface{} {
	return t.extraProperties
}

func (t *TenantSettingsDeviceFlow) require(field *big.Int) {
	if t.explicitFields == nil {
		t.explicitFields = big.NewInt(0)
	}
	t.explicitFields.Or(t.explicitFields, field)
}

// SetCharset sets the Charset field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsDeviceFlow) SetCharset(charset *TenantSettingsDeviceFlowCharset) {
	t.Charset = charset
	t.require(tenantSettingsDeviceFlowFieldCharset)
}

// SetMask sets the Mask field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsDeviceFlow) SetMask(mask *string) {
	t.Mask = mask
	t.require(tenantSettingsDeviceFlowFieldMask)
}

func (t *TenantSettingsDeviceFlow) UnmarshalJSON(data []byte) error {
	type unmarshaler TenantSettingsDeviceFlow
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*t = TenantSettingsDeviceFlow(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *t)
	if err != nil {
		return err
	}
	t.extraProperties = extraProperties
	t.rawJSON = json.RawMessage(data)
	return nil
}

func (t *TenantSettingsDeviceFlow) MarshalJSON() ([]byte, error) {
	type embed TenantSettingsDeviceFlow
	var marshaler = struct {
		embed
	}{
		embed: embed(*t),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, t.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (t *TenantSettingsDeviceFlow) String() string {
	if len(t.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(t.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(t); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", t)
}

// Character set used to generate a User Code. Can be `base20` or `digits`.
type TenantSettingsDeviceFlowCharset string

const (
	TenantSettingsDeviceFlowCharsetBase20 TenantSettingsDeviceFlowCharset = "base20"
	TenantSettingsDeviceFlowCharsetDigits TenantSettingsDeviceFlowCharset = "digits"
)

func NewTenantSettingsDeviceFlowCharsetFromString(s string) (TenantSettingsDeviceFlowCharset, error) {
	switch s {
	case "base20":
		return TenantSettingsDeviceFlowCharsetBase20, nil
	case "digits":
		return TenantSettingsDeviceFlowCharsetDigits, nil
	}
	var t TenantSettingsDeviceFlowCharset
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (t TenantSettingsDeviceFlowCharset) Ptr() *TenantSettingsDeviceFlowCharset {
	return &t
}

// Error page customization.
var (
	tenantSettingsErrorPageFieldHTML        = big.NewInt(1 << 0)
	tenantSettingsErrorPageFieldShowLogLink = big.NewInt(1 << 1)
	tenantSettingsErrorPageFieldURL         = big.NewInt(1 << 2)
)

type TenantSettingsErrorPage struct {
	// Custom Error HTML (<a href='https://github.com/Shopify/liquid/wiki/Liquid-for-Designers'>Liquid syntax</a> is supported).
	HTML *string `json:"html,omitempty" url:"html,omitempty"`
	// Whether to show the link to log as part of the default error page (true, default) or not to show the link (false).
	ShowLogLink *bool `json:"show_log_link,omitempty" url:"show_log_link,omitempty"`
	// URL to redirect to when an error occurs instead of showing the default error page.
	URL *string `json:"url,omitempty" url:"url,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 (t *TenantSettingsErrorPage) GetHTML() string {
	if t == nil || t.HTML == nil {
		return ""
	}
	return *t.HTML
}

func (t *TenantSettingsErrorPage) GetShowLogLink() bool {
	if t == nil || t.ShowLogLink == nil {
		return false
	}
	return *t.ShowLogLink
}

func (t *TenantSettingsErrorPage) GetURL() string {
	if t == nil || t.URL == nil {
		return ""
	}
	return *t.URL
}

func (t *TenantSettingsErrorPage) GetExtraProperties() map[string]interface{} {
	return t.extraProperties
}

func (t *TenantSettingsErrorPage) require(field *big.Int) {
	if t.explicitFields == nil {
		t.explicitFields = big.NewInt(0)
	}
	t.explicitFields.Or(t.explicitFields, field)
}

// SetHTML sets the HTML field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsErrorPage) SetHTML(html *string) {
	t.HTML = html
	t.require(tenantSettingsErrorPageFieldHTML)
}

// SetShowLogLink sets the ShowLogLink field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsErrorPage) SetShowLogLink(showLogLink *bool) {
	t.ShowLogLink = showLogLink
	t.require(tenantSettingsErrorPageFieldShowLogLink)
}

// SetURL sets the URL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsErrorPage) SetURL(url *string) {
	t.URL = url
	t.require(tenantSettingsErrorPageFieldURL)
}

func (t *TenantSettingsErrorPage) UnmarshalJSON(data []byte) error {
	type unmarshaler TenantSettingsErrorPage
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*t = TenantSettingsErrorPage(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *t)
	if err != nil {
		return err
	}
	t.extraProperties = extraProperties
	t.rawJSON = json.RawMessage(data)
	return nil
}

func (t *TenantSettingsErrorPage) MarshalJSON() ([]byte, error) {
	type embed TenantSettingsErrorPage
	var marshaler = struct {
		embed
	}{
		embed: embed(*t),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, t.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (t *TenantSettingsErrorPage) String() string {
	if len(t.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(t.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(t); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", t)
}

// Flags used to change the behavior of this tenant.
var (
	tenantSettingsFlagsFieldChangePwdFlowV1                                = big.NewInt(1 << 0)
	tenantSettingsFlagsFieldEnableAPIsSection                              = big.NewInt(1 << 1)
	tenantSettingsFlagsFieldDisableImpersonation                           = big.NewInt(1 << 2)
	tenantSettingsFlagsFieldEnableClientConnections                        = big.NewInt(1 << 3)
	tenantSettingsFlagsFieldEnablePipeline2                                = big.NewInt(1 << 4)
	tenantSettingsFlagsFieldAllowLegacyDelegationGrantTypes                = big.NewInt(1 << 5)
	tenantSettingsFlagsFieldAllowLegacyRoGrantTypes                        = big.NewInt(1 << 6)
	tenantSettingsFlagsFieldAllowLegacyTokeninfoEndpoint                   = big.NewInt(1 << 7)
	tenantSettingsFlagsFieldEnableLegacyProfile                            = big.NewInt(1 << 8)
	tenantSettingsFlagsFieldEnableIdtokenAPI2                              = big.NewInt(1 << 9)
	tenantSettingsFlagsFieldEnablePublicSignupUserExistsError              = big.NewInt(1 << 10)
	tenantSettingsFlagsFieldEnableSSO                                      = big.NewInt(1 << 11)
	tenantSettingsFlagsFieldAllowChangingEnableSSO                         = big.NewInt(1 << 12)
	tenantSettingsFlagsFieldDisableClickjackProtectionHeaders              = big.NewInt(1 << 13)
	tenantSettingsFlagsFieldNoDiscloseEnterpriseConnections                = big.NewInt(1 << 14)
	tenantSettingsFlagsFieldEnforceClientAuthenticationOnPasswordlessStart = big.NewInt(1 << 15)
	tenantSettingsFlagsFieldEnableAdfsWaadEmailVerification                = big.NewInt(1 << 16)
	tenantSettingsFlagsFieldRevokeRefreshTokenGrant                        = big.NewInt(1 << 17)
	tenantSettingsFlagsFieldDashboardLogStreamsNext                        = big.NewInt(1 << 18)
	tenantSettingsFlagsFieldDashboardInsightsView                          = big.NewInt(1 << 19)
	tenantSettingsFlagsFieldDisableFieldsMapFix                            = big.NewInt(1 << 20)
	tenantSettingsFlagsFieldMfaShowFactorListOnEnrollment                  = big.NewInt(1 << 21)
	tenantSettingsFlagsFieldRemoveAlgFromJwks                              = big.NewInt(1 << 22)
	tenantSettingsFlagsFieldImprovedSignupBotDetectionInClassic            = big.NewInt(1 << 23)
	tenantSettingsFlagsFieldGenaiTrial                                     = big.NewInt(1 << 24)
	tenantSettingsFlagsFieldEnableDynamicClientRegistration                = big.NewInt(1 << 25)
	tenantSettingsFlagsFieldDisableManagementAPISmsObfuscation             = big.NewInt(1 << 26)
	tenantSettingsFlagsFieldTrustAzureAdfsEmailVerifiedConnectionProperty  = big.NewInt(1 << 27)
	tenantSettingsFlagsFieldCustomDomainsProvisioning                      = big.NewInt(1 << 28)
)

type TenantSettingsFlags struct {
	// Whether to use the older v1 change password flow (true, not recommended except for backward compatibility) or the newer safer flow (false, recommended).
	ChangePwdFlowV1 *bool `json:"change_pwd_flow_v1,omitempty" url:"change_pwd_flow_v1,omitempty"`
	// Whether the APIs section is enabled (true) or disabled (false).
	EnableAPIsSection *bool `json:"enable_apis_section,omitempty" url:"enable_apis_section,omitempty"`
	// Whether the impersonation functionality has been disabled (true) or not (false). Read-only.
	DisableImpersonation *bool `json:"disable_impersonation,omitempty" url:"disable_impersonation,omitempty"`
	// Whether all current connections should be enabled when a new client (application) is created (true, default) or not (false).
	EnableClientConnections *bool `json:"enable_client_connections,omitempty" url:"enable_client_connections,omitempty"`
	// Whether advanced API Authorization scenarios are enabled (true) or disabled (false).
	EnablePipeline2 *bool `json:"enable_pipeline2,omitempty" url:"enable_pipeline2,omitempty"`
	// If enabled, clients are able to add legacy delegation grants.
	AllowLegacyDelegationGrantTypes *bool `json:"allow_legacy_delegation_grant_types,omitempty" url:"allow_legacy_delegation_grant_types,omitempty"`
	// If enabled, clients are able to add legacy RO grants.
	AllowLegacyRoGrantTypes *bool `json:"allow_legacy_ro_grant_types,omitempty" url:"allow_legacy_ro_grant_types,omitempty"`
	// Whether the legacy `/tokeninfo` endpoint is enabled for your account (true) or unavailable (false).
	AllowLegacyTokeninfoEndpoint *bool `json:"allow_legacy_tokeninfo_endpoint,omitempty" url:"allow_legacy_tokeninfo_endpoint,omitempty"`
	// Whether ID tokens and the userinfo endpoint includes a complete user profile (true) or only OpenID Connect claims (false).
	EnableLegacyProfile *bool `json:"enable_legacy_profile,omitempty" url:"enable_legacy_profile,omitempty"`
	// Whether ID tokens can be used to authorize some types of requests to API v2 (true) not not (false).
	EnableIdtokenAPI2 *bool `json:"enable_idtoken_api2,omitempty" url:"enable_idtoken_api2,omitempty"`
	// Whether the public sign up process shows a user_exists error (true) or a generic error (false) if the user already exists.
	EnablePublicSignupUserExistsError *bool `json:"enable_public_signup_user_exists_error,omitempty" url:"enable_public_signup_user_exists_error,omitempty"`
	// Whether users are prompted to confirm log in before SSO redirection (false) or are not prompted (true).
	EnableSSO *bool `json:"enable_sso,omitempty" url:"enable_sso,omitempty"`
	// Whether the `enable_sso` setting can be changed (true) or not (false).
	AllowChangingEnableSSO *bool `json:"allow_changing_enable_sso,omitempty" url:"allow_changing_enable_sso,omitempty"`
	// Whether classic Universal Login prompts include additional security headers to prevent clickjacking (true) or no safeguard (false).
	DisableClickjackProtectionHeaders *bool `json:"disable_clickjack_protection_headers,omitempty" url:"disable_clickjack_protection_headers,omitempty"`
	// Do not Publish Enterprise Connections Information with IdP domains on the lock configuration file.
	NoDiscloseEnterpriseConnections *bool `json:"no_disclose_enterprise_connections,omitempty" url:"no_disclose_enterprise_connections,omitempty"`
	// Enforce client authentication for passwordless start.
	EnforceClientAuthenticationOnPasswordlessStart *bool `json:"enforce_client_authentication_on_passwordless_start,omitempty" url:"enforce_client_authentication_on_passwordless_start,omitempty"`
	// Enables the email verification flow during login for Azure AD and ADFS connections
	EnableAdfsWaadEmailVerification *bool `json:"enable_adfs_waad_email_verification,omitempty" url:"enable_adfs_waad_email_verification,omitempty"`
	// Delete underlying grant when a Refresh Token is revoked via the Authentication API.
	RevokeRefreshTokenGrant *bool `json:"revoke_refresh_token_grant,omitempty" url:"revoke_refresh_token_grant,omitempty"`
	// Enables beta access to log streaming changes
	DashboardLogStreamsNext *bool `json:"dashboard_log_streams_next,omitempty" url:"dashboard_log_streams_next,omitempty"`
	// Enables new insights activity page view
	DashboardInsightsView *bool `json:"dashboard_insights_view,omitempty" url:"dashboard_insights_view,omitempty"`
	// Disables SAML fields map fix for bad mappings with repeated attributes
	DisableFieldsMapFix *bool `json:"disable_fields_map_fix,omitempty" url:"disable_fields_map_fix,omitempty"`
	// Used to allow users to pick what factor to enroll of the available MFA factors.
	MfaShowFactorListOnEnrollment *bool `json:"mfa_show_factor_list_on_enrollment,omitempty" url:"mfa_show_factor_list_on_enrollment,omitempty"`
	// Removes alg property from jwks .well-known endpoint
	RemoveAlgFromJwks *bool `json:"remove_alg_from_jwks,omitempty" url:"remove_alg_from_jwks,omitempty"`
	// Improves bot detection during signup in classic universal login
	ImprovedSignupBotDetectionInClassic *bool `json:"improved_signup_bot_detection_in_classic,omitempty" url:"improved_signup_bot_detection_in_classic,omitempty"`
	// This tenant signed up for the Auth4GenAI trail
	GenaiTrial *bool `json:"genai_trial,omitempty" url:"genai_trial,omitempty"`
	// Whether third-party developers can <a href="https://auth0.com/docs/api-auth/dynamic-client-registration">dynamically register</a> applications for your APIs (true) or not (false). This flag enables dynamic client registration.
	EnableDynamicClientRegistration *bool `json:"enable_dynamic_client_registration,omitempty" url:"enable_dynamic_client_registration,omitempty"`
	// If true, SMS phone numbers will not be obfuscated in Management API GET calls.
	DisableManagementAPISmsObfuscation *bool `json:"disable_management_api_sms_obfuscation,omitempty" url:"disable_management_api_sms_obfuscation,omitempty"`
	// Changes email_verified behavior for Azure AD/ADFS connections when enabled. Sets email_verified to false otherwise.
	TrustAzureAdfsEmailVerifiedConnectionProperty *bool `json:"trust_azure_adfs_email_verified_connection_property,omitempty" url:"trust_azure_adfs_email_verified_connection_property,omitempty"`
	// If true, custom domains feature will be enabled for tenant.
	CustomDomainsProvisioning *bool `json:"custom_domains_provisioning,omitempty" url:"custom_domains_provisioning,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 (t *TenantSettingsFlags) GetChangePwdFlowV1() bool {
	if t == nil || t.ChangePwdFlowV1 == nil {
		return false
	}
	return *t.ChangePwdFlowV1
}

func (t *TenantSettingsFlags) GetEnableAPIsSection() bool {
	if t == nil || t.EnableAPIsSection == nil {
		return false
	}
	return *t.EnableAPIsSection
}

func (t *TenantSettingsFlags) GetDisableImpersonation() bool {
	if t == nil || t.DisableImpersonation == nil {
		return false
	}
	return *t.DisableImpersonation
}

func (t *TenantSettingsFlags) GetEnableClientConnections() bool {
	if t == nil || t.EnableClientConnections == nil {
		return false
	}
	return *t.EnableClientConnections
}

func (t *TenantSettingsFlags) GetEnablePipeline2() bool {
	if t == nil || t.EnablePipeline2 == nil {
		return false
	}
	return *t.EnablePipeline2
}

func (t *TenantSettingsFlags) GetAllowLegacyDelegationGrantTypes() bool {
	if t == nil || t.AllowLegacyDelegationGrantTypes == nil {
		return false
	}
	return *t.AllowLegacyDelegationGrantTypes
}

func (t *TenantSettingsFlags) GetAllowLegacyRoGrantTypes() bool {
	if t == nil || t.AllowLegacyRoGrantTypes == nil {
		return false
	}
	return *t.AllowLegacyRoGrantTypes
}

func (t *TenantSettingsFlags) GetAllowLegacyTokeninfoEndpoint() bool {
	if t == nil || t.AllowLegacyTokeninfoEndpoint == nil {
		return false
	}
	return *t.AllowLegacyTokeninfoEndpoint
}

func (t *TenantSettingsFlags) GetEnableLegacyProfile() bool {
	if t == nil || t.EnableLegacyProfile == nil {
		return false
	}
	return *t.EnableLegacyProfile
}

func (t *TenantSettingsFlags) GetEnableIdtokenAPI2() bool {
	if t == nil || t.EnableIdtokenAPI2 == nil {
		return false
	}
	return *t.EnableIdtokenAPI2
}

func (t *TenantSettingsFlags) GetEnablePublicSignupUserExistsError() bool {
	if t == nil || t.EnablePublicSignupUserExistsError == nil {
		return false
	}
	return *t.EnablePublicSignupUserExistsError
}

func (t *TenantSettingsFlags) GetEnableSSO() bool {
	if t == nil || t.EnableSSO == nil {
		return false
	}
	return *t.EnableSSO
}

func (t *TenantSettingsFlags) GetAllowChangingEnableSSO() bool {
	if t == nil || t.AllowChangingEnableSSO == nil {
		return false
	}
	return *t.AllowChangingEnableSSO
}

func (t *TenantSettingsFlags) GetDisableClickjackProtectionHeaders() bool {
	if t == nil || t.DisableClickjackProtectionHeaders == nil {
		return false
	}
	return *t.DisableClickjackProtectionHeaders
}

func (t *TenantSettingsFlags) GetNoDiscloseEnterpriseConnections() bool {
	if t == nil || t.NoDiscloseEnterpriseConnections == nil {
		return false
	}
	return *t.NoDiscloseEnterpriseConnections
}

func (t *TenantSettingsFlags) GetEnforceClientAuthenticationOnPasswordlessStart() bool {
	if t == nil || t.EnforceClientAuthenticationOnPasswordlessStart == nil {
		return false
	}
	return *t.EnforceClientAuthenticationOnPasswordlessStart
}

func (t *TenantSettingsFlags) GetEnableAdfsWaadEmailVerification() bool {
	if t == nil || t.EnableAdfsWaadEmailVerification == nil {
		return false
	}
	return *t.EnableAdfsWaadEmailVerification
}

func (t *TenantSettingsFlags) GetRevokeRefreshTokenGrant() bool {
	if t == nil || t.RevokeRefreshTokenGrant == nil {
		return false
	}
	return *t.RevokeRefreshTokenGrant
}

func (t *TenantSettingsFlags) GetDashboardLogStreamsNext() bool {
	if t == nil || t.DashboardLogStreamsNext == nil {
		return false
	}
	return *t.DashboardLogStreamsNext
}

func (t *TenantSettingsFlags) GetDashboardInsightsView() bool {
	if t == nil || t.DashboardInsightsView == nil {
		return false
	}
	return *t.DashboardInsightsView
}

func (t *TenantSettingsFlags) GetDisableFieldsMapFix() bool {
	if t == nil || t.DisableFieldsMapFix == nil {
		return false
	}
	return *t.DisableFieldsMapFix
}

func (t *TenantSettingsFlags) GetMfaShowFactorListOnEnrollment() bool {
	if t == nil || t.MfaShowFactorListOnEnrollment == nil {
		return false
	}
	return *t.MfaShowFactorListOnEnrollment
}

func (t *TenantSettingsFlags) GetRemoveAlgFromJwks() bool {
	if t == nil || t.RemoveAlgFromJwks == nil {
		return false
	}
	return *t.RemoveAlgFromJwks
}

func (t *TenantSettingsFlags) GetImprovedSignupBotDetectionInClassic() bool {
	if t == nil || t.ImprovedSignupBotDetectionInClassic == nil {
		return false
	}
	return *t.ImprovedSignupBotDetectionInClassic
}

func (t *TenantSettingsFlags) GetGenaiTrial() bool {
	if t == nil || t.GenaiTrial == nil {
		return false
	}
	return *t.GenaiTrial
}

func (t *TenantSettingsFlags) GetEnableDynamicClientRegistration() bool {
	if t == nil || t.EnableDynamicClientRegistration == nil {
		return false
	}
	return *t.EnableDynamicClientRegistration
}

func (t *TenantSettingsFlags) GetDisableManagementAPISmsObfuscation() bool {
	if t == nil || t.DisableManagementAPISmsObfuscation == nil {
		return false
	}
	return *t.DisableManagementAPISmsObfuscation
}

func (t *TenantSettingsFlags) GetTrustAzureAdfsEmailVerifiedConnectionProperty() bool {
	if t == nil || t.TrustAzureAdfsEmailVerifiedConnectionProperty == nil {
		return false
	}
	return *t.TrustAzureAdfsEmailVerifiedConnectionProperty
}

func (t *TenantSettingsFlags) GetCustomDomainsProvisioning() bool {
	if t == nil || t.CustomDomainsProvisioning == nil {
		return false
	}
	return *t.CustomDomainsProvisioning
}

func (t *TenantSettingsFlags) GetExtraProperties() map[string]interface{} {
	return t.extraProperties
}

func (t *TenantSettingsFlags) require(field *big.Int) {
	if t.explicitFields == nil {
		t.explicitFields = big.NewInt(0)
	}
	t.explicitFields.Or(t.explicitFields, field)
}

// SetChangePwdFlowV1 sets the ChangePwdFlowV1 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetChangePwdFlowV1(changePwdFlowV1 *bool) {
	t.ChangePwdFlowV1 = changePwdFlowV1
	t.require(tenantSettingsFlagsFieldChangePwdFlowV1)
}

// SetEnableAPIsSection sets the EnableAPIsSection field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetEnableAPIsSection(enableAPIsSection *bool) {
	t.EnableAPIsSection = enableAPIsSection
	t.require(tenantSettingsFlagsFieldEnableAPIsSection)
}

// SetDisableImpersonation sets the DisableImpersonation field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetDisableImpersonation(disableImpersonation *bool) {
	t.DisableImpersonation = disableImpersonation
	t.require(tenantSettingsFlagsFieldDisableImpersonation)
}

// SetEnableClientConnections sets the EnableClientConnections field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetEnableClientConnections(enableClientConnections *bool) {
	t.EnableClientConnections = enableClientConnections
	t.require(tenantSettingsFlagsFieldEnableClientConnections)
}

// SetEnablePipeline2 sets the EnablePipeline2 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetEnablePipeline2(enablePipeline2 *bool) {
	t.EnablePipeline2 = enablePipeline2
	t.require(tenantSettingsFlagsFieldEnablePipeline2)
}

// SetAllowLegacyDelegationGrantTypes sets the AllowLegacyDelegationGrantTypes field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetAllowLegacyDelegationGrantTypes(allowLegacyDelegationGrantTypes *bool) {
	t.AllowLegacyDelegationGrantTypes = allowLegacyDelegationGrantTypes
	t.require(tenantSettingsFlagsFieldAllowLegacyDelegationGrantTypes)
}

// SetAllowLegacyRoGrantTypes sets the AllowLegacyRoGrantTypes field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetAllowLegacyRoGrantTypes(allowLegacyRoGrantTypes *bool) {
	t.AllowLegacyRoGrantTypes = allowLegacyRoGrantTypes
	t.require(tenantSettingsFlagsFieldAllowLegacyRoGrantTypes)
}

// SetAllowLegacyTokeninfoEndpoint sets the AllowLegacyTokeninfoEndpoint field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetAllowLegacyTokeninfoEndpoint(allowLegacyTokeninfoEndpoint *bool) {
	t.AllowLegacyTokeninfoEndpoint = allowLegacyTokeninfoEndpoint
	t.require(tenantSettingsFlagsFieldAllowLegacyTokeninfoEndpoint)
}

// SetEnableLegacyProfile sets the EnableLegacyProfile field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetEnableLegacyProfile(enableLegacyProfile *bool) {
	t.EnableLegacyProfile = enableLegacyProfile
	t.require(tenantSettingsFlagsFieldEnableLegacyProfile)
}

// SetEnableIdtokenAPI2 sets the EnableIdtokenAPI2 field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetEnableIdtokenAPI2(enableIdtokenAPI2 *bool) {
	t.EnableIdtokenAPI2 = enableIdtokenAPI2
	t.require(tenantSettingsFlagsFieldEnableIdtokenAPI2)
}

// SetEnablePublicSignupUserExistsError sets the EnablePublicSignupUserExistsError field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetEnablePublicSignupUserExistsError(enablePublicSignupUserExistsError *bool) {
	t.EnablePublicSignupUserExistsError = enablePublicSignupUserExistsError
	t.require(tenantSettingsFlagsFieldEnablePublicSignupUserExistsError)
}

// SetEnableSSO sets the EnableSSO field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetEnableSSO(enableSSO *bool) {
	t.EnableSSO = enableSSO
	t.require(tenantSettingsFlagsFieldEnableSSO)
}

// SetAllowChangingEnableSSO sets the AllowChangingEnableSSO field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetAllowChangingEnableSSO(allowChangingEnableSSO *bool) {
	t.AllowChangingEnableSSO = allowChangingEnableSSO
	t.require(tenantSettingsFlagsFieldAllowChangingEnableSSO)
}

// SetDisableClickjackProtectionHeaders sets the DisableClickjackProtectionHeaders field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetDisableClickjackProtectionHeaders(disableClickjackProtectionHeaders *bool) {
	t.DisableClickjackProtectionHeaders = disableClickjackProtectionHeaders
	t.require(tenantSettingsFlagsFieldDisableClickjackProtectionHeaders)
}

// SetNoDiscloseEnterpriseConnections sets the NoDiscloseEnterpriseConnections field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetNoDiscloseEnterpriseConnections(noDiscloseEnterpriseConnections *bool) {
	t.NoDiscloseEnterpriseConnections = noDiscloseEnterpriseConnections
	t.require(tenantSettingsFlagsFieldNoDiscloseEnterpriseConnections)
}

// SetEnforceClientAuthenticationOnPasswordlessStart sets the EnforceClientAuthenticationOnPasswordlessStart field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetEnforceClientAuthenticationOnPasswordlessStart(enforceClientAuthenticationOnPasswordlessStart *bool) {
	t.EnforceClientAuthenticationOnPasswordlessStart = enforceClientAuthenticationOnPasswordlessStart
	t.require(tenantSettingsFlagsFieldEnforceClientAuthenticationOnPasswordlessStart)
}

// SetEnableAdfsWaadEmailVerification sets the EnableAdfsWaadEmailVerification field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetEnableAdfsWaadEmailVerification(enableAdfsWaadEmailVerification *bool) {
	t.EnableAdfsWaadEmailVerification = enableAdfsWaadEmailVerification
	t.require(tenantSettingsFlagsFieldEnableAdfsWaadEmailVerification)
}

// SetRevokeRefreshTokenGrant sets the RevokeRefreshTokenGrant field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetRevokeRefreshTokenGrant(revokeRefreshTokenGrant *bool) {
	t.RevokeRefreshTokenGrant = revokeRefreshTokenGrant
	t.require(tenantSettingsFlagsFieldRevokeRefreshTokenGrant)
}

// SetDashboardLogStreamsNext sets the DashboardLogStreamsNext field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetDashboardLogStreamsNext(dashboardLogStreamsNext *bool) {
	t.DashboardLogStreamsNext = dashboardLogStreamsNext
	t.require(tenantSettingsFlagsFieldDashboardLogStreamsNext)
}

// SetDashboardInsightsView sets the DashboardInsightsView field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetDashboardInsightsView(dashboardInsightsView *bool) {
	t.DashboardInsightsView = dashboardInsightsView
	t.require(tenantSettingsFlagsFieldDashboardInsightsView)
}

// SetDisableFieldsMapFix sets the DisableFieldsMapFix field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetDisableFieldsMapFix(disableFieldsMapFix *bool) {
	t.DisableFieldsMapFix = disableFieldsMapFix
	t.require(tenantSettingsFlagsFieldDisableFieldsMapFix)
}

// SetMfaShowFactorListOnEnrollment sets the MfaShowFactorListOnEnrollment field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetMfaShowFactorListOnEnrollment(mfaShowFactorListOnEnrollment *bool) {
	t.MfaShowFactorListOnEnrollment = mfaShowFactorListOnEnrollment
	t.require(tenantSettingsFlagsFieldMfaShowFactorListOnEnrollment)
}

// SetRemoveAlgFromJwks sets the RemoveAlgFromJwks field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetRemoveAlgFromJwks(removeAlgFromJwks *bool) {
	t.RemoveAlgFromJwks = removeAlgFromJwks
	t.require(tenantSettingsFlagsFieldRemoveAlgFromJwks)
}

// SetImprovedSignupBotDetectionInClassic sets the ImprovedSignupBotDetectionInClassic field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetImprovedSignupBotDetectionInClassic(improvedSignupBotDetectionInClassic *bool) {
	t.ImprovedSignupBotDetectionInClassic = improvedSignupBotDetectionInClassic
	t.require(tenantSettingsFlagsFieldImprovedSignupBotDetectionInClassic)
}

// SetGenaiTrial sets the GenaiTrial field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetGenaiTrial(genaiTrial *bool) {
	t.GenaiTrial = genaiTrial
	t.require(tenantSettingsFlagsFieldGenaiTrial)
}

// SetEnableDynamicClientRegistration sets the EnableDynamicClientRegistration field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetEnableDynamicClientRegistration(enableDynamicClientRegistration *bool) {
	t.EnableDynamicClientRegistration = enableDynamicClientRegistration
	t.require(tenantSettingsFlagsFieldEnableDynamicClientRegistration)
}

// SetDisableManagementAPISmsObfuscation sets the DisableManagementAPISmsObfuscation field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetDisableManagementAPISmsObfuscation(disableManagementAPISmsObfuscation *bool) {
	t.DisableManagementAPISmsObfuscation = disableManagementAPISmsObfuscation
	t.require(tenantSettingsFlagsFieldDisableManagementAPISmsObfuscation)
}

// SetTrustAzureAdfsEmailVerifiedConnectionProperty sets the TrustAzureAdfsEmailVerifiedConnectionProperty field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetTrustAzureAdfsEmailVerifiedConnectionProperty(trustAzureAdfsEmailVerifiedConnectionProperty *bool) {
	t.TrustAzureAdfsEmailVerifiedConnectionProperty = trustAzureAdfsEmailVerifiedConnectionProperty
	t.require(tenantSettingsFlagsFieldTrustAzureAdfsEmailVerifiedConnectionProperty)
}

// SetCustomDomainsProvisioning sets the CustomDomainsProvisioning field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsFlags) SetCustomDomainsProvisioning(customDomainsProvisioning *bool) {
	t.CustomDomainsProvisioning = customDomainsProvisioning
	t.require(tenantSettingsFlagsFieldCustomDomainsProvisioning)
}

func (t *TenantSettingsFlags) UnmarshalJSON(data []byte) error {
	type unmarshaler TenantSettingsFlags
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*t = TenantSettingsFlags(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *t)
	if err != nil {
		return err
	}
	t.extraProperties = extraProperties
	t.rawJSON = json.RawMessage(data)
	return nil
}

func (t *TenantSettingsFlags) MarshalJSON() ([]byte, error) {
	type embed TenantSettingsFlags
	var marshaler = struct {
		embed
	}{
		embed: embed(*t),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, t.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (t *TenantSettingsFlags) String() string {
	if len(t.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(t.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(t); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", t)
}

// Guardian page customization.
var (
	tenantSettingsGuardianPageFieldEnabled = big.NewInt(1 << 0)
	tenantSettingsGuardianPageFieldHTML    = big.NewInt(1 << 1)
)

type TenantSettingsGuardianPage struct {
	// Whether to use the custom Guardian HTML (true) or the default Auth0 page (false, default)
	Enabled *bool `json:"enabled,omitempty" url:"enabled,omitempty"`
	// Custom Guardian HTML (<a href='https://github.com/Shopify/liquid/wiki/Liquid-for-Designers'>Liquid syntax</a> is supported).
	HTML *string `json:"html,omitempty" url:"html,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 (t *TenantSettingsGuardianPage) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

func (t *TenantSettingsGuardianPage) GetHTML() string {
	if t == nil || t.HTML == nil {
		return ""
	}
	return *t.HTML
}

func (t *TenantSettingsGuardianPage) GetExtraProperties() map[string]interface{} {
	return t.extraProperties
}

func (t *TenantSettingsGuardianPage) require(field *big.Int) {
	if t.explicitFields == nil {
		t.explicitFields = big.NewInt(0)
	}
	t.explicitFields.Or(t.explicitFields, field)
}

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsGuardianPage) SetEnabled(enabled *bool) {
	t.Enabled = enabled
	t.require(tenantSettingsGuardianPageFieldEnabled)
}

// SetHTML sets the HTML field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsGuardianPage) SetHTML(html *string) {
	t.HTML = html
	t.require(tenantSettingsGuardianPageFieldHTML)
}

func (t *TenantSettingsGuardianPage) UnmarshalJSON(data []byte) error {
	type unmarshaler TenantSettingsGuardianPage
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*t = TenantSettingsGuardianPage(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *t)
	if err != nil {
		return err
	}
	t.extraProperties = extraProperties
	t.rawJSON = json.RawMessage(data)
	return nil
}

func (t *TenantSettingsGuardianPage) MarshalJSON() ([]byte, error) {
	type embed TenantSettingsGuardianPage
	var marshaler = struct {
		embed
	}{
		embed: embed(*t),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, t.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (t *TenantSettingsGuardianPage) String() string {
	if len(t.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(t.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(t); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", t)
}

// mTLS configuration.
var (
	tenantSettingsMtlsFieldEnableEndpointAliases = big.NewInt(1 << 0)
)

type TenantSettingsMtls struct {
	// If true, enables mTLS endpoint aliases
	EnableEndpointAliases *bool `json:"enable_endpoint_aliases,omitempty" url:"enable_endpoint_aliases,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 (t *TenantSettingsMtls) GetEnableEndpointAliases() bool {
	if t == nil || t.EnableEndpointAliases == nil {
		return false
	}
	return *t.EnableEndpointAliases
}

func (t *TenantSettingsMtls) GetExtraProperties() map[string]interface{} {
	return t.extraProperties
}

func (t *TenantSettingsMtls) require(field *big.Int) {
	if t.explicitFields == nil {
		t.explicitFields = big.NewInt(0)
	}
	t.explicitFields.Or(t.explicitFields, field)
}

// SetEnableEndpointAliases sets the EnableEndpointAliases field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsMtls) SetEnableEndpointAliases(enableEndpointAliases *bool) {
	t.EnableEndpointAliases = enableEndpointAliases
	t.require(tenantSettingsMtlsFieldEnableEndpointAliases)
}

func (t *TenantSettingsMtls) UnmarshalJSON(data []byte) error {
	type unmarshaler TenantSettingsMtls
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*t = TenantSettingsMtls(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *t)
	if err != nil {
		return err
	}
	t.extraProperties = extraProperties
	t.rawJSON = json.RawMessage(data)
	return nil
}

func (t *TenantSettingsMtls) MarshalJSON() ([]byte, error) {
	type embed TenantSettingsMtls
	var marshaler = struct {
		embed
	}{
		embed: embed(*t),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, t.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (t *TenantSettingsMtls) String() string {
	if len(t.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(t.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(t); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", t)
}

// Change Password page customization.
var (
	tenantSettingsPasswordPageFieldEnabled = big.NewInt(1 << 0)
	tenantSettingsPasswordPageFieldHTML    = big.NewInt(1 << 1)
)

type TenantSettingsPasswordPage struct {
	// Whether to use the custom change password HTML (true) or the default Auth0 page (false). Default is to use the Auth0 page.
	Enabled *bool `json:"enabled,omitempty" url:"enabled,omitempty"`
	// Custom change password HTML (<a href='https://github.com/Shopify/liquid/wiki/Liquid-for-Designers'>Liquid syntax</a> supported).
	HTML *string `json:"html,omitempty" url:"html,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 (t *TenantSettingsPasswordPage) GetEnabled() bool {
	if t == nil || t.Enabled == nil {
		return false
	}
	return *t.Enabled
}

func (t *TenantSettingsPasswordPage) GetHTML() string {
	if t == nil || t.HTML == nil {
		return ""
	}
	return *t.HTML
}

func (t *TenantSettingsPasswordPage) GetExtraProperties() map[string]interface{} {
	return t.extraProperties
}

func (t *TenantSettingsPasswordPage) require(field *big.Int) {
	if t.explicitFields == nil {
		t.explicitFields = big.NewInt(0)
	}
	t.explicitFields.Or(t.explicitFields, field)
}

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsPasswordPage) SetEnabled(enabled *bool) {
	t.Enabled = enabled
	t.require(tenantSettingsPasswordPageFieldEnabled)
}

// SetHTML sets the HTML field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsPasswordPage) SetHTML(html *string) {
	t.HTML = html
	t.require(tenantSettingsPasswordPageFieldHTML)
}

func (t *TenantSettingsPasswordPage) UnmarshalJSON(data []byte) error {
	type unmarshaler TenantSettingsPasswordPage
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*t = TenantSettingsPasswordPage(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *t)
	if err != nil {
		return err
	}
	t.extraProperties = extraProperties
	t.rawJSON = json.RawMessage(data)
	return nil
}

func (t *TenantSettingsPasswordPage) MarshalJSON() ([]byte, error) {
	type embed TenantSettingsPasswordPage
	var marshaler = struct {
		embed
	}{
		embed: embed(*t),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, t.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (t *TenantSettingsPasswordPage) String() string {
	if len(t.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(t.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(t); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", t)
}

// Sessions related settings for tenant
var (
	tenantSettingsSessionsFieldOidcLogoutPromptEnabled = big.NewInt(1 << 0)
)

type TenantSettingsSessions struct {
	// Whether to bypass prompting logic (false) when performing OIDC Logout
	OidcLogoutPromptEnabled *bool `json:"oidc_logout_prompt_enabled,omitempty" url:"oidc_logout_prompt_enabled,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 (t *TenantSettingsSessions) GetOidcLogoutPromptEnabled() bool {
	if t == nil || t.OidcLogoutPromptEnabled == nil {
		return false
	}
	return *t.OidcLogoutPromptEnabled
}

func (t *TenantSettingsSessions) GetExtraProperties() map[string]interface{} {
	return t.extraProperties
}

func (t *TenantSettingsSessions) require(field *big.Int) {
	if t.explicitFields == nil {
		t.explicitFields = big.NewInt(0)
	}
	t.explicitFields.Or(t.explicitFields, field)
}

// SetOidcLogoutPromptEnabled sets the OidcLogoutPromptEnabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TenantSettingsSessions) SetOidcLogoutPromptEnabled(oidcLogoutPromptEnabled *bool) {
	t.OidcLogoutPromptEnabled = oidcLogoutPromptEnabled
	t.require(tenantSettingsSessionsFieldOidcLogoutPromptEnabled)
}

func (t *TenantSettingsSessions) UnmarshalJSON(data []byte) error {
	type unmarshaler TenantSettingsSessions
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*t = TenantSettingsSessions(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *t)
	if err != nil {
		return err
	}
	t.extraProperties = extraProperties
	t.rawJSON = json.RawMessage(data)
	return nil
}

func (t *TenantSettingsSessions) MarshalJSON() ([]byte, error) {
	type embed TenantSettingsSessions
	var marshaler = struct {
		embed
	}{
		embed: embed(*t),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, t.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (t *TenantSettingsSessions) String() string {
	if len(t.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(t.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(t); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", t)
}

var (
	tokenQuotaFieldClientCredentials = big.NewInt(1 << 0)
)

type TokenQuota struct {
	ClientCredentials *TokenQuotaClientCredentials `json:"client_credentials" url:"client_credentials"`

	// 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 (t *TokenQuota) GetClientCredentials() *TokenQuotaClientCredentials {
	if t == nil {
		return nil
	}
	return t.ClientCredentials
}

func (t *TokenQuota) GetExtraProperties() map[string]interface{} {
	return t.extraProperties
}

func (t *TokenQuota) require(field *big.Int) {
	if t.explicitFields == nil {
		t.explicitFields = big.NewInt(0)
	}
	t.explicitFields.Or(t.explicitFields, field)
}

// SetClientCredentials sets the ClientCredentials field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TokenQuota) SetClientCredentials(clientCredentials *TokenQuotaClientCredentials) {
	t.ClientCredentials = clientCredentials
	t.require(tokenQuotaFieldClientCredentials)
}

func (t *TokenQuota) UnmarshalJSON(data []byte) error {
	type unmarshaler TokenQuota
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*t = TokenQuota(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *t)
	if err != nil {
		return err
	}
	t.extraProperties = extraProperties
	t.rawJSON = json.RawMessage(data)
	return nil
}

func (t *TokenQuota) MarshalJSON() ([]byte, error) {
	type embed TokenQuota
	var marshaler = struct {
		embed
	}{
		embed: embed(*t),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, t.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (t *TokenQuota) String() string {
	if len(t.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(t.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(t); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", t)
}

// The token quota configuration
var (
	tokenQuotaClientCredentialsFieldEnforce = big.NewInt(1 << 0)
	tokenQuotaClientCredentialsFieldPerDay  = big.NewInt(1 << 1)
	tokenQuotaClientCredentialsFieldPerHour = big.NewInt(1 << 2)
)

type TokenQuotaClientCredentials struct {
	// If enabled, the quota will be enforced and requests in excess of the quota will fail. If disabled, the quota will not be enforced, but notifications for requests exceeding the quota will be available in logs.
	Enforce *bool `json:"enforce,omitempty" url:"enforce,omitempty"`
	// Maximum number of issued tokens per day
	PerDay *int `json:"per_day,omitempty" url:"per_day,omitempty"`
	// Maximum number of issued tokens per hour
	PerHour *int `json:"per_hour,omitempty" url:"per_hour,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 (t *TokenQuotaClientCredentials) GetEnforce() bool {
	if t == nil || t.Enforce == nil {
		return false
	}
	return *t.Enforce
}

func (t *TokenQuotaClientCredentials) GetPerDay() int {
	if t == nil || t.PerDay == nil {
		return 0
	}
	return *t.PerDay
}

func (t *TokenQuotaClientCredentials) GetPerHour() int {
	if t == nil || t.PerHour == nil {
		return 0
	}
	return *t.PerHour
}

func (t *TokenQuotaClientCredentials) GetExtraProperties() map[string]interface{} {
	return t.extraProperties
}

func (t *TokenQuotaClientCredentials) require(field *big.Int) {
	if t.explicitFields == nil {
		t.explicitFields = big.NewInt(0)
	}
	t.explicitFields.Or(t.explicitFields, field)
}

// SetEnforce sets the Enforce field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TokenQuotaClientCredentials) SetEnforce(enforce *bool) {
	t.Enforce = enforce
	t.require(tokenQuotaClientCredentialsFieldEnforce)
}

// SetPerDay sets the PerDay field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TokenQuotaClientCredentials) SetPerDay(perDay *int) {
	t.PerDay = perDay
	t.require(tokenQuotaClientCredentialsFieldPerDay)
}

// SetPerHour sets the PerHour field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TokenQuotaClientCredentials) SetPerHour(perHour *int) {
	t.PerHour = perHour
	t.require(tokenQuotaClientCredentialsFieldPerHour)
}

func (t *TokenQuotaClientCredentials) UnmarshalJSON(data []byte) error {
	type unmarshaler TokenQuotaClientCredentials
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*t = TokenQuotaClientCredentials(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *t)
	if err != nil {
		return err
	}
	t.extraProperties = extraProperties
	t.rawJSON = json.RawMessage(data)
	return nil
}

func (t *TokenQuotaClientCredentials) MarshalJSON() ([]byte, error) {
	type embed TokenQuotaClientCredentials
	var marshaler = struct {
		embed
	}{
		embed: embed(*t),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, t.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (t *TokenQuotaClientCredentials) String() string {
	if len(t.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(t.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(t); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", t)
}

var (
	tokenQuotaConfigurationFieldClientCredentials = big.NewInt(1 << 0)
)

type TokenQuotaConfiguration struct {
	ClientCredentials *TokenQuotaClientCredentials `json:"client_credentials" url:"client_credentials"`

	// Private bitmask of fields set to an explicit value and therefore not to be omitted
	explicitFields *big.Int `json:"-" url:"-"`

	ExtraProperties map[string]interface{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (t *TokenQuotaConfiguration) GetClientCredentials() *TokenQuotaClientCredentials {
	if t == nil {
		return nil
	}
	return t.ClientCredentials
}

func (t *TokenQuotaConfiguration) GetExtraProperties() map[string]interface{} {
	return t.ExtraProperties
}

func (t *TokenQuotaConfiguration) require(field *big.Int) {
	if t.explicitFields == nil {
		t.explicitFields = big.NewInt(0)
	}
	t.explicitFields.Or(t.explicitFields, field)
}

// SetClientCredentials sets the ClientCredentials field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TokenQuotaConfiguration) SetClientCredentials(clientCredentials *TokenQuotaClientCredentials) {
	t.ClientCredentials = clientCredentials
	t.require(tokenQuotaConfigurationFieldClientCredentials)
}

func (t *TokenQuotaConfiguration) UnmarshalJSON(data []byte) error {
	type embed TokenQuotaConfiguration
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*t),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*t = TokenQuotaConfiguration(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *t)
	if err != nil {
		return err
	}
	t.ExtraProperties = extraProperties
	t.rawJSON = json.RawMessage(data)
	return nil
}

func (t *TokenQuotaConfiguration) MarshalJSON() ([]byte, error) {
	type embed TokenQuotaConfiguration
	var marshaler = struct {
		embed
	}{
		embed: embed(*t),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, t.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, t.ExtraProperties)
}

func (t *TokenQuotaConfiguration) String() string {
	if len(t.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(t.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(t); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", t)
}

var (
	twilioProviderConfigurationFieldDefaultFrom     = big.NewInt(1 << 0)
	twilioProviderConfigurationFieldMssid           = big.NewInt(1 << 1)
	twilioProviderConfigurationFieldSid             = big.NewInt(1 << 2)
	twilioProviderConfigurationFieldDeliveryMethods = big.NewInt(1 << 3)
)

type TwilioProviderConfiguration struct {
	DefaultFrom     *string                            `json:"default_from,omitempty" url:"default_from,omitempty"`
	Mssid           *string                            `json:"mssid,omitempty" url:"mssid,omitempty"`
	Sid             string                             `json:"sid" url:"sid"`
	DeliveryMethods []TwilioProviderDeliveryMethodEnum `json:"delivery_methods" url:"delivery_methods"`

	// 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 (t *TwilioProviderConfiguration) GetDefaultFrom() string {
	if t == nil || t.DefaultFrom == nil {
		return ""
	}
	return *t.DefaultFrom
}

func (t *TwilioProviderConfiguration) GetMssid() string {
	if t == nil || t.Mssid == nil {
		return ""
	}
	return *t.Mssid
}

func (t *TwilioProviderConfiguration) GetSid() string {
	if t == nil {
		return ""
	}
	return t.Sid
}

func (t *TwilioProviderConfiguration) GetDeliveryMethods() []TwilioProviderDeliveryMethodEnum {
	if t == nil {
		return nil
	}
	return t.DeliveryMethods
}

func (t *TwilioProviderConfiguration) GetExtraProperties() map[string]interface{} {
	return t.extraProperties
}

func (t *TwilioProviderConfiguration) require(field *big.Int) {
	if t.explicitFields == nil {
		t.explicitFields = big.NewInt(0)
	}
	t.explicitFields.Or(t.explicitFields, field)
}

// SetDefaultFrom sets the DefaultFrom field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TwilioProviderConfiguration) SetDefaultFrom(defaultFrom *string) {
	t.DefaultFrom = defaultFrom
	t.require(twilioProviderConfigurationFieldDefaultFrom)
}

// SetMssid sets the Mssid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TwilioProviderConfiguration) SetMssid(mssid *string) {
	t.Mssid = mssid
	t.require(twilioProviderConfigurationFieldMssid)
}

// SetSid sets the Sid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TwilioProviderConfiguration) SetSid(sid string) {
	t.Sid = sid
	t.require(twilioProviderConfigurationFieldSid)
}

// SetDeliveryMethods sets the DeliveryMethods field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TwilioProviderConfiguration) SetDeliveryMethods(deliveryMethods []TwilioProviderDeliveryMethodEnum) {
	t.DeliveryMethods = deliveryMethods
	t.require(twilioProviderConfigurationFieldDeliveryMethods)
}

func (t *TwilioProviderConfiguration) UnmarshalJSON(data []byte) error {
	type unmarshaler TwilioProviderConfiguration
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*t = TwilioProviderConfiguration(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *t)
	if err != nil {
		return err
	}
	t.extraProperties = extraProperties
	t.rawJSON = json.RawMessage(data)
	return nil
}

func (t *TwilioProviderConfiguration) MarshalJSON() ([]byte, error) {
	type embed TwilioProviderConfiguration
	var marshaler = struct {
		embed
	}{
		embed: embed(*t),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, t.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (t *TwilioProviderConfiguration) String() string {
	if len(t.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(t.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(t); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", t)
}

var (
	twilioProviderCredentialsFieldAuthToken = big.NewInt(1 << 0)
)

type TwilioProviderCredentials struct {
	AuthToken string `json:"auth_token" url:"auth_token"`

	// 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 (t *TwilioProviderCredentials) GetAuthToken() string {
	if t == nil {
		return ""
	}
	return t.AuthToken
}

func (t *TwilioProviderCredentials) GetExtraProperties() map[string]interface{} {
	return t.extraProperties
}

func (t *TwilioProviderCredentials) require(field *big.Int) {
	if t.explicitFields == nil {
		t.explicitFields = big.NewInt(0)
	}
	t.explicitFields.Or(t.explicitFields, field)
}

// SetAuthToken sets the AuthToken field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TwilioProviderCredentials) SetAuthToken(authToken string) {
	t.AuthToken = authToken
	t.require(twilioProviderCredentialsFieldAuthToken)
}

func (t *TwilioProviderCredentials) UnmarshalJSON(data []byte) error {
	type unmarshaler TwilioProviderCredentials
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*t = TwilioProviderCredentials(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *t)
	if err != nil {
		return err
	}
	t.extraProperties = extraProperties
	t.rawJSON = json.RawMessage(data)
	return nil
}

func (t *TwilioProviderCredentials) MarshalJSON() ([]byte, error) {
	type embed TwilioProviderCredentials
	var marshaler = struct {
		embed
	}{
		embed: embed(*t),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, t.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (t *TwilioProviderCredentials) String() string {
	if len(t.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(t.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(t); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", t)
}

type TwilioProviderDeliveryMethodEnum string

const (
	TwilioProviderDeliveryMethodEnumText  TwilioProviderDeliveryMethodEnum = "text"
	TwilioProviderDeliveryMethodEnumVoice TwilioProviderDeliveryMethodEnum = "voice"
)

func NewTwilioProviderDeliveryMethodEnumFromString(s string) (TwilioProviderDeliveryMethodEnum, error) {
	switch s {
	case "text":
		return TwilioProviderDeliveryMethodEnumText, nil
	case "voice":
		return TwilioProviderDeliveryMethodEnumVoice, nil
	}
	var t TwilioProviderDeliveryMethodEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (t TwilioProviderDeliveryMethodEnum) Ptr() *TwilioProviderDeliveryMethodEnum {
	return &t
}

var (
	updateActionBindingsResponseContentFieldBindings = big.NewInt(1 << 0)
)

type UpdateActionBindingsResponseContent struct {
	Bindings []*ActionBinding `json:"bindings,omitempty" url:"bindings,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 (u *UpdateActionBindingsResponseContent) GetBindings() []*ActionBinding {
	if u == nil || u.Bindings == nil {
		return nil
	}
	return u.Bindings
}

func (u *UpdateActionBindingsResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateActionBindingsResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetBindings sets the Bindings field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateActionBindingsResponseContent) SetBindings(bindings []*ActionBinding) {
	u.Bindings = bindings
	u.require(updateActionBindingsResponseContentFieldBindings)
}

func (u *UpdateActionBindingsResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateActionBindingsResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateActionBindingsResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateActionBindingsResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateActionBindingsResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateActionBindingsResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	updateAculResponseContentFieldRenderingMode           = big.NewInt(1 << 0)
	updateAculResponseContentFieldContextConfiguration    = big.NewInt(1 << 1)
	updateAculResponseContentFieldDefaultHeadTagsDisabled = big.NewInt(1 << 2)
	updateAculResponseContentFieldHeadTags                = big.NewInt(1 << 3)
	updateAculResponseContentFieldFilters                 = big.NewInt(1 << 4)
	updateAculResponseContentFieldUsePageTemplate         = big.NewInt(1 << 5)
)

type UpdateAculResponseContent struct {
	RenderingMode *AculRenderingModeEnum `json:"rendering_mode,omitempty" url:"rendering_mode,omitempty"`
	// Context values to make available
	ContextConfiguration []string `json:"context_configuration,omitempty" url:"context_configuration,omitempty"`
	// Override Universal Login default head tags
	DefaultHeadTagsDisabled *bool `json:"default_head_tags_disabled,omitempty" url:"default_head_tags_disabled,omitempty"`
	// An array of head tags
	HeadTags []*AculHeadTag `json:"head_tags,omitempty" url:"head_tags,omitempty"`
	Filters  *AculFilters   `json:"filters,omitempty" url:"filters,omitempty"`
	// Use page template with ACUL
	UsePageTemplate *bool `json:"use_page_template,omitempty" url:"use_page_template,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (u *UpdateAculResponseContent) GetRenderingMode() AculRenderingModeEnum {
	if u == nil || u.RenderingMode == nil {
		return ""
	}
	return *u.RenderingMode
}

func (u *UpdateAculResponseContent) GetContextConfiguration() []string {
	if u == nil || u.ContextConfiguration == nil {
		return nil
	}
	return u.ContextConfiguration
}

func (u *UpdateAculResponseContent) GetDefaultHeadTagsDisabled() bool {
	if u == nil || u.DefaultHeadTagsDisabled == nil {
		return false
	}
	return *u.DefaultHeadTagsDisabled
}

func (u *UpdateAculResponseContent) GetHeadTags() []*AculHeadTag {
	if u == nil || u.HeadTags == nil {
		return nil
	}
	return u.HeadTags
}

func (u *UpdateAculResponseContent) GetFilters() AculFilters {
	if u == nil || u.Filters == nil {
		return AculFilters{}
	}
	return *u.Filters
}

func (u *UpdateAculResponseContent) GetUsePageTemplate() bool {
	if u == nil || u.UsePageTemplate == nil {
		return false
	}
	return *u.UsePageTemplate
}

func (u *UpdateAculResponseContent) GetExtraProperties() map[string]interface{} {
	return u.ExtraProperties
}

func (u *UpdateAculResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetRenderingMode sets the RenderingMode field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateAculResponseContent) SetRenderingMode(renderingMode *AculRenderingModeEnum) {
	u.RenderingMode = renderingMode
	u.require(updateAculResponseContentFieldRenderingMode)
}

// SetContextConfiguration sets the ContextConfiguration field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateAculResponseContent) SetContextConfiguration(contextConfiguration []string) {
	u.ContextConfiguration = contextConfiguration
	u.require(updateAculResponseContentFieldContextConfiguration)
}

// SetDefaultHeadTagsDisabled sets the DefaultHeadTagsDisabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateAculResponseContent) SetDefaultHeadTagsDisabled(defaultHeadTagsDisabled *bool) {
	u.DefaultHeadTagsDisabled = defaultHeadTagsDisabled
	u.require(updateAculResponseContentFieldDefaultHeadTagsDisabled)
}

// SetHeadTags sets the HeadTags field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateAculResponseContent) SetHeadTags(headTags []*AculHeadTag) {
	u.HeadTags = headTags
	u.require(updateAculResponseContentFieldHeadTags)
}

// SetFilters sets the Filters field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateAculResponseContent) SetFilters(filters *AculFilters) {
	u.Filters = filters
	u.require(updateAculResponseContentFieldFilters)
}

// SetUsePageTemplate sets the UsePageTemplate field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateAculResponseContent) SetUsePageTemplate(usePageTemplate *bool) {
	u.UsePageTemplate = usePageTemplate
	u.require(updateAculResponseContentFieldUsePageTemplate)
}

func (u *UpdateAculResponseContent) UnmarshalJSON(data []byte) error {
	type embed UpdateAculResponseContent
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*u = UpdateAculResponseContent(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.ExtraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateAculResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateAculResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, u.ExtraProperties)
}

func (u *UpdateAculResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

// Phone provider configuration schema
var (
	updateBrandingPhoneProviderResponseContentFieldID            = big.NewInt(1 << 0)
	updateBrandingPhoneProviderResponseContentFieldTenant        = big.NewInt(1 << 1)
	updateBrandingPhoneProviderResponseContentFieldName          = big.NewInt(1 << 2)
	updateBrandingPhoneProviderResponseContentFieldChannel       = big.NewInt(1 << 3)
	updateBrandingPhoneProviderResponseContentFieldDisabled      = big.NewInt(1 << 4)
	updateBrandingPhoneProviderResponseContentFieldConfiguration = big.NewInt(1 << 5)
	updateBrandingPhoneProviderResponseContentFieldCreatedAt     = big.NewInt(1 << 6)
	updateBrandingPhoneProviderResponseContentFieldUpdatedAt     = big.NewInt(1 << 7)
)

type UpdateBrandingPhoneProviderResponseContent struct {
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name of the tenant
	Tenant  *string                   `json:"tenant,omitempty" url:"tenant,omitempty"`
	Name    PhoneProviderNameEnum     `json:"name" url:"name"`
	Channel *PhoneProviderChannelEnum `json:"channel,omitempty" url:"channel,omitempty"`
	// Whether the provider is enabled (false) or disabled (true).
	Disabled      *bool                       `json:"disabled,omitempty" url:"disabled,omitempty"`
	Configuration *PhoneProviderConfiguration `json:"configuration,omitempty" url:"configuration,omitempty"`
	// The provider's creation date and time in ISO 8601 format
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The date and time of the last update to the provider in ISO 8601 format
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,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 (u *UpdateBrandingPhoneProviderResponseContent) GetID() string {
	if u == nil || u.ID == nil {
		return ""
	}
	return *u.ID
}

func (u *UpdateBrandingPhoneProviderResponseContent) GetTenant() string {
	if u == nil || u.Tenant == nil {
		return ""
	}
	return *u.Tenant
}

func (u *UpdateBrandingPhoneProviderResponseContent) GetName() PhoneProviderNameEnum {
	if u == nil {
		return ""
	}
	return u.Name
}

func (u *UpdateBrandingPhoneProviderResponseContent) GetDisabled() bool {
	if u == nil || u.Disabled == nil {
		return false
	}
	return *u.Disabled
}

func (u *UpdateBrandingPhoneProviderResponseContent) GetConfiguration() PhoneProviderConfiguration {
	if u == nil || u.Configuration == nil {
		return PhoneProviderConfiguration{}
	}
	return *u.Configuration
}

func (u *UpdateBrandingPhoneProviderResponseContent) GetCreatedAt() time.Time {
	if u == nil || u.CreatedAt == nil {
		return time.Time{}
	}
	return *u.CreatedAt
}

func (u *UpdateBrandingPhoneProviderResponseContent) GetUpdatedAt() time.Time {
	if u == nil || u.UpdatedAt == nil {
		return time.Time{}
	}
	return *u.UpdatedAt
}

func (u *UpdateBrandingPhoneProviderResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateBrandingPhoneProviderResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.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 (u *UpdateBrandingPhoneProviderResponseContent) SetID(id *string) {
	u.ID = id
	u.require(updateBrandingPhoneProviderResponseContentFieldID)
}

// SetTenant sets the Tenant field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBrandingPhoneProviderResponseContent) SetTenant(tenant *string) {
	u.Tenant = tenant
	u.require(updateBrandingPhoneProviderResponseContentFieldTenant)
}

// 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 (u *UpdateBrandingPhoneProviderResponseContent) SetName(name PhoneProviderNameEnum) {
	u.Name = name
	u.require(updateBrandingPhoneProviderResponseContentFieldName)
}

// SetChannel sets the Channel field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBrandingPhoneProviderResponseContent) SetChannel(channel *PhoneProviderChannelEnum) {
	u.Channel = channel
	u.require(updateBrandingPhoneProviderResponseContentFieldChannel)
}

// SetDisabled sets the Disabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBrandingPhoneProviderResponseContent) SetDisabled(disabled *bool) {
	u.Disabled = disabled
	u.require(updateBrandingPhoneProviderResponseContentFieldDisabled)
}

// SetConfiguration sets the Configuration field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBrandingPhoneProviderResponseContent) SetConfiguration(configuration *PhoneProviderConfiguration) {
	u.Configuration = configuration
	u.require(updateBrandingPhoneProviderResponseContentFieldConfiguration)
}

// 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 (u *UpdateBrandingPhoneProviderResponseContent) SetCreatedAt(createdAt *time.Time) {
	u.CreatedAt = createdAt
	u.require(updateBrandingPhoneProviderResponseContentFieldCreatedAt)
}

// 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 (u *UpdateBrandingPhoneProviderResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	u.UpdatedAt = updatedAt
	u.require(updateBrandingPhoneProviderResponseContentFieldUpdatedAt)
}

func (u *UpdateBrandingPhoneProviderResponseContent) UnmarshalJSON(data []byte) error {
	type embed UpdateBrandingPhoneProviderResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*u),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*u = UpdateBrandingPhoneProviderResponseContent(unmarshaler.embed)
	u.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	u.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateBrandingPhoneProviderResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateBrandingPhoneProviderResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*u),
		CreatedAt: internal.NewOptionalDateTime(u.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(u.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateBrandingPhoneProviderResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	updateBrandingThemeResponseContentFieldBorders        = big.NewInt(1 << 0)
	updateBrandingThemeResponseContentFieldColors         = big.NewInt(1 << 1)
	updateBrandingThemeResponseContentFieldDisplayName    = big.NewInt(1 << 2)
	updateBrandingThemeResponseContentFieldFonts          = big.NewInt(1 << 3)
	updateBrandingThemeResponseContentFieldPageBackground = big.NewInt(1 << 4)
	updateBrandingThemeResponseContentFieldThemeID        = big.NewInt(1 << 5)
	updateBrandingThemeResponseContentFieldWidget         = big.NewInt(1 << 6)
)

type UpdateBrandingThemeResponseContent struct {
	Borders *BrandingThemeBorders `json:"borders" url:"borders"`
	Colors  *BrandingThemeColors  `json:"colors" url:"colors"`
	// Display Name
	DisplayName    string                       `json:"displayName" url:"displayName"`
	Fonts          *BrandingThemeFonts          `json:"fonts" url:"fonts"`
	PageBackground *BrandingThemePageBackground `json:"page_background" url:"page_background"`
	// Theme Id
	ThemeID string               `json:"themeId" url:"themeId"`
	Widget  *BrandingThemeWidget `json:"widget" url:"widget"`

	// 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 (u *UpdateBrandingThemeResponseContent) GetBorders() *BrandingThemeBorders {
	if u == nil {
		return nil
	}
	return u.Borders
}

func (u *UpdateBrandingThemeResponseContent) GetColors() *BrandingThemeColors {
	if u == nil {
		return nil
	}
	return u.Colors
}

func (u *UpdateBrandingThemeResponseContent) GetDisplayName() string {
	if u == nil {
		return ""
	}
	return u.DisplayName
}

func (u *UpdateBrandingThemeResponseContent) GetFonts() *BrandingThemeFonts {
	if u == nil {
		return nil
	}
	return u.Fonts
}

func (u *UpdateBrandingThemeResponseContent) GetPageBackground() *BrandingThemePageBackground {
	if u == nil {
		return nil
	}
	return u.PageBackground
}

func (u *UpdateBrandingThemeResponseContent) GetThemeID() string {
	if u == nil {
		return ""
	}
	return u.ThemeID
}

func (u *UpdateBrandingThemeResponseContent) GetWidget() *BrandingThemeWidget {
	if u == nil {
		return nil
	}
	return u.Widget
}

func (u *UpdateBrandingThemeResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateBrandingThemeResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetBorders sets the Borders field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBrandingThemeResponseContent) SetBorders(borders *BrandingThemeBorders) {
	u.Borders = borders
	u.require(updateBrandingThemeResponseContentFieldBorders)
}

// SetColors sets the Colors field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBrandingThemeResponseContent) SetColors(colors *BrandingThemeColors) {
	u.Colors = colors
	u.require(updateBrandingThemeResponseContentFieldColors)
}

// SetDisplayName sets the DisplayName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBrandingThemeResponseContent) SetDisplayName(displayName string) {
	u.DisplayName = displayName
	u.require(updateBrandingThemeResponseContentFieldDisplayName)
}

// SetFonts sets the Fonts field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBrandingThemeResponseContent) SetFonts(fonts *BrandingThemeFonts) {
	u.Fonts = fonts
	u.require(updateBrandingThemeResponseContentFieldFonts)
}

// SetPageBackground sets the PageBackground field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBrandingThemeResponseContent) SetPageBackground(pageBackground *BrandingThemePageBackground) {
	u.PageBackground = pageBackground
	u.require(updateBrandingThemeResponseContentFieldPageBackground)
}

// SetThemeID sets the ThemeID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBrandingThemeResponseContent) SetThemeID(themeID string) {
	u.ThemeID = themeID
	u.require(updateBrandingThemeResponseContentFieldThemeID)
}

// SetWidget sets the Widget field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBrandingThemeResponseContent) SetWidget(widget *BrandingThemeWidget) {
	u.Widget = widget
	u.require(updateBrandingThemeResponseContentFieldWidget)
}

func (u *UpdateBrandingThemeResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateBrandingThemeResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateBrandingThemeResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateBrandingThemeResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateBrandingThemeResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateBrandingThemeResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	updateBreachedPasswordDetectionSettingsResponseContentFieldEnabled                    = big.NewInt(1 << 0)
	updateBreachedPasswordDetectionSettingsResponseContentFieldShields                    = big.NewInt(1 << 1)
	updateBreachedPasswordDetectionSettingsResponseContentFieldAdminNotificationFrequency = big.NewInt(1 << 2)
	updateBreachedPasswordDetectionSettingsResponseContentFieldMethod                     = big.NewInt(1 << 3)
	updateBreachedPasswordDetectionSettingsResponseContentFieldStage                      = big.NewInt(1 << 4)
)

type UpdateBreachedPasswordDetectionSettingsResponseContent struct {
	// Whether or not breached password detection is active.
	Enabled *bool `json:"enabled,omitempty" url:"enabled,omitempty"`
	// Action to take when a breached password is detected during a login.
	//
	//	Possible values: <code>block</code>, <code>user_notification</code>, <code>admin_notification</code>.
	Shields []BreachedPasswordDetectionShieldsEnum `json:"shields,omitempty" url:"shields,omitempty"`
	// When "admin_notification" is enabled, determines how often email notifications are sent.
	//
	//	Possible values: <code>immediately</code>, <code>daily</code>, <code>weekly</code>, <code>monthly</code>.
	AdminNotificationFrequency []BreachedPasswordDetectionAdminNotificationFrequencyEnum `json:"admin_notification_frequency,omitempty" url:"admin_notification_frequency,omitempty"`
	Method                     *BreachedPasswordDetectionMethodEnum                      `json:"method,omitempty" url:"method,omitempty"`
	Stage                      *BreachedPasswordDetectionStage                           `json:"stage,omitempty" url:"stage,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 (u *UpdateBreachedPasswordDetectionSettingsResponseContent) GetEnabled() bool {
	if u == nil || u.Enabled == nil {
		return false
	}
	return *u.Enabled
}

func (u *UpdateBreachedPasswordDetectionSettingsResponseContent) GetShields() []BreachedPasswordDetectionShieldsEnum {
	if u == nil || u.Shields == nil {
		return nil
	}
	return u.Shields
}

func (u *UpdateBreachedPasswordDetectionSettingsResponseContent) GetAdminNotificationFrequency() []BreachedPasswordDetectionAdminNotificationFrequencyEnum {
	if u == nil || u.AdminNotificationFrequency == nil {
		return nil
	}
	return u.AdminNotificationFrequency
}

func (u *UpdateBreachedPasswordDetectionSettingsResponseContent) GetMethod() BreachedPasswordDetectionMethodEnum {
	if u == nil || u.Method == nil {
		return ""
	}
	return *u.Method
}

func (u *UpdateBreachedPasswordDetectionSettingsResponseContent) GetStage() BreachedPasswordDetectionStage {
	if u == nil || u.Stage == nil {
		return BreachedPasswordDetectionStage{}
	}
	return *u.Stage
}

func (u *UpdateBreachedPasswordDetectionSettingsResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateBreachedPasswordDetectionSettingsResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBreachedPasswordDetectionSettingsResponseContent) SetEnabled(enabled *bool) {
	u.Enabled = enabled
	u.require(updateBreachedPasswordDetectionSettingsResponseContentFieldEnabled)
}

// SetShields sets the Shields field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBreachedPasswordDetectionSettingsResponseContent) SetShields(shields []BreachedPasswordDetectionShieldsEnum) {
	u.Shields = shields
	u.require(updateBreachedPasswordDetectionSettingsResponseContentFieldShields)
}

// SetAdminNotificationFrequency sets the AdminNotificationFrequency field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBreachedPasswordDetectionSettingsResponseContent) SetAdminNotificationFrequency(adminNotificationFrequency []BreachedPasswordDetectionAdminNotificationFrequencyEnum) {
	u.AdminNotificationFrequency = adminNotificationFrequency
	u.require(updateBreachedPasswordDetectionSettingsResponseContentFieldAdminNotificationFrequency)
}

// SetMethod sets the Method field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBreachedPasswordDetectionSettingsResponseContent) SetMethod(method *BreachedPasswordDetectionMethodEnum) {
	u.Method = method
	u.require(updateBreachedPasswordDetectionSettingsResponseContentFieldMethod)
}

// SetStage sets the Stage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBreachedPasswordDetectionSettingsResponseContent) SetStage(stage *BreachedPasswordDetectionStage) {
	u.Stage = stage
	u.require(updateBreachedPasswordDetectionSettingsResponseContentFieldStage)
}

func (u *UpdateBreachedPasswordDetectionSettingsResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateBreachedPasswordDetectionSettingsResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateBreachedPasswordDetectionSettingsResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateBreachedPasswordDetectionSettingsResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateBreachedPasswordDetectionSettingsResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateBreachedPasswordDetectionSettingsResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	updateBruteForceSettingsResponseContentFieldEnabled     = big.NewInt(1 << 0)
	updateBruteForceSettingsResponseContentFieldShields     = big.NewInt(1 << 1)
	updateBruteForceSettingsResponseContentFieldAllowlist   = big.NewInt(1 << 2)
	updateBruteForceSettingsResponseContentFieldMode        = big.NewInt(1 << 3)
	updateBruteForceSettingsResponseContentFieldMaxAttempts = big.NewInt(1 << 4)
)

type UpdateBruteForceSettingsResponseContent struct {
	// Whether or not brute force attack protections are active.
	Enabled *bool `json:"enabled,omitempty" url:"enabled,omitempty"`
	// Action to take when a brute force protection threshold is violated.
	//
	//	Possible values: <code>block</code>, <code>user_notification</code>.
	Shields []UpdateBruteForceSettingsResponseContentShieldsItem `json:"shields,omitempty" url:"shields,omitempty"`
	// List of trusted IP addresses that will not have attack protection enforced against them.
	Allowlist []string `json:"allowlist,omitempty" url:"allowlist,omitempty"`
	// Account Lockout: Determines whether or not IP address is used when counting failed attempts.
	//
	//	Possible values: <code>count_per_identifier_and_ip</code>, <code>count_per_identifier</code>.
	Mode *UpdateBruteForceSettingsResponseContentMode `json:"mode,omitempty" url:"mode,omitempty"`
	// Maximum number of unsuccessful attempts.
	MaxAttempts *int `json:"max_attempts,omitempty" url:"max_attempts,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 (u *UpdateBruteForceSettingsResponseContent) GetEnabled() bool {
	if u == nil || u.Enabled == nil {
		return false
	}
	return *u.Enabled
}

func (u *UpdateBruteForceSettingsResponseContent) GetShields() []UpdateBruteForceSettingsResponseContentShieldsItem {
	if u == nil || u.Shields == nil {
		return nil
	}
	return u.Shields
}

func (u *UpdateBruteForceSettingsResponseContent) GetAllowlist() []string {
	if u == nil || u.Allowlist == nil {
		return nil
	}
	return u.Allowlist
}

func (u *UpdateBruteForceSettingsResponseContent) GetMode() UpdateBruteForceSettingsResponseContentMode {
	if u == nil || u.Mode == nil {
		return ""
	}
	return *u.Mode
}

func (u *UpdateBruteForceSettingsResponseContent) GetMaxAttempts() int {
	if u == nil || u.MaxAttempts == nil {
		return 0
	}
	return *u.MaxAttempts
}

func (u *UpdateBruteForceSettingsResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateBruteForceSettingsResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBruteForceSettingsResponseContent) SetEnabled(enabled *bool) {
	u.Enabled = enabled
	u.require(updateBruteForceSettingsResponseContentFieldEnabled)
}

// SetShields sets the Shields field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBruteForceSettingsResponseContent) SetShields(shields []UpdateBruteForceSettingsResponseContentShieldsItem) {
	u.Shields = shields
	u.require(updateBruteForceSettingsResponseContentFieldShields)
}

// SetAllowlist sets the Allowlist field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBruteForceSettingsResponseContent) SetAllowlist(allowlist []string) {
	u.Allowlist = allowlist
	u.require(updateBruteForceSettingsResponseContentFieldAllowlist)
}

// SetMode sets the Mode field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBruteForceSettingsResponseContent) SetMode(mode *UpdateBruteForceSettingsResponseContentMode) {
	u.Mode = mode
	u.require(updateBruteForceSettingsResponseContentFieldMode)
}

// SetMaxAttempts sets the MaxAttempts field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateBruteForceSettingsResponseContent) SetMaxAttempts(maxAttempts *int) {
	u.MaxAttempts = maxAttempts
	u.require(updateBruteForceSettingsResponseContentFieldMaxAttempts)
}

func (u *UpdateBruteForceSettingsResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateBruteForceSettingsResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateBruteForceSettingsResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateBruteForceSettingsResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateBruteForceSettingsResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateBruteForceSettingsResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

// Account Lockout: Determines whether or not IP address is used when counting failed attempts.
//
//	Possible values: <code>count_per_identifier_and_ip</code>, <code>count_per_identifier</code>.
type UpdateBruteForceSettingsResponseContentMode string

const (
	UpdateBruteForceSettingsResponseContentModeCountPerIdentifierAndIP UpdateBruteForceSettingsResponseContentMode = "count_per_identifier_and_ip"
	UpdateBruteForceSettingsResponseContentModeCountPerIdentifier      UpdateBruteForceSettingsResponseContentMode = "count_per_identifier"
)

func NewUpdateBruteForceSettingsResponseContentModeFromString(s string) (UpdateBruteForceSettingsResponseContentMode, error) {
	switch s {
	case "count_per_identifier_and_ip":
		return UpdateBruteForceSettingsResponseContentModeCountPerIdentifierAndIP, nil
	case "count_per_identifier":
		return UpdateBruteForceSettingsResponseContentModeCountPerIdentifier, nil
	}
	var t UpdateBruteForceSettingsResponseContentMode
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (u UpdateBruteForceSettingsResponseContentMode) Ptr() *UpdateBruteForceSettingsResponseContentMode {
	return &u
}

type UpdateBruteForceSettingsResponseContentShieldsItem string

const (
	UpdateBruteForceSettingsResponseContentShieldsItemBlock            UpdateBruteForceSettingsResponseContentShieldsItem = "block"
	UpdateBruteForceSettingsResponseContentShieldsItemUserNotification UpdateBruteForceSettingsResponseContentShieldsItem = "user_notification"
)

func NewUpdateBruteForceSettingsResponseContentShieldsItemFromString(s string) (UpdateBruteForceSettingsResponseContentShieldsItem, error) {
	switch s {
	case "block":
		return UpdateBruteForceSettingsResponseContentShieldsItemBlock, nil
	case "user_notification":
		return UpdateBruteForceSettingsResponseContentShieldsItemUserNotification, nil
	}
	var t UpdateBruteForceSettingsResponseContentShieldsItem
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (u UpdateBruteForceSettingsResponseContentShieldsItem) Ptr() *UpdateBruteForceSettingsResponseContentShieldsItem {
	return &u
}

var (
	updateEmailProviderResponseContentFieldName               = big.NewInt(1 << 0)
	updateEmailProviderResponseContentFieldEnabled            = big.NewInt(1 << 1)
	updateEmailProviderResponseContentFieldDefaultFromAddress = big.NewInt(1 << 2)
	updateEmailProviderResponseContentFieldCredentials        = big.NewInt(1 << 3)
	updateEmailProviderResponseContentFieldSettings           = big.NewInt(1 << 4)
)

type UpdateEmailProviderResponseContent struct {
	// Name of the email provider. Can be `mailgun`, `mandrill`, `sendgrid`, `ses`, `sparkpost`, `smtp`, `azure_cs`, `ms365`, or `custom`.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Whether the provider is enabled (true) or disabled (false).
	Enabled *bool `json:"enabled,omitempty" url:"enabled,omitempty"`
	// Email address to use as "from" when no other address specified.
	DefaultFromAddress *string                   `json:"default_from_address,omitempty" url:"default_from_address,omitempty"`
	Credentials        *EmailProviderCredentials `json:"credentials,omitempty" url:"credentials,omitempty"`
	Settings           *EmailProviderSettings    `json:"settings,omitempty" url:"settings,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 (u *UpdateEmailProviderResponseContent) GetName() string {
	if u == nil || u.Name == nil {
		return ""
	}
	return *u.Name
}

func (u *UpdateEmailProviderResponseContent) GetEnabled() bool {
	if u == nil || u.Enabled == nil {
		return false
	}
	return *u.Enabled
}

func (u *UpdateEmailProviderResponseContent) GetDefaultFromAddress() string {
	if u == nil || u.DefaultFromAddress == nil {
		return ""
	}
	return *u.DefaultFromAddress
}

func (u *UpdateEmailProviderResponseContent) GetCredentials() EmailProviderCredentials {
	if u == nil || u.Credentials == nil {
		return EmailProviderCredentials{}
	}
	return *u.Credentials
}

func (u *UpdateEmailProviderResponseContent) GetSettings() EmailProviderSettings {
	if u == nil || u.Settings == nil {
		return nil
	}
	return *u.Settings
}

func (u *UpdateEmailProviderResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateEmailProviderResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// 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 (u *UpdateEmailProviderResponseContent) SetName(name *string) {
	u.Name = name
	u.require(updateEmailProviderResponseContentFieldName)
}

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateEmailProviderResponseContent) SetEnabled(enabled *bool) {
	u.Enabled = enabled
	u.require(updateEmailProviderResponseContentFieldEnabled)
}

// SetDefaultFromAddress sets the DefaultFromAddress field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateEmailProviderResponseContent) SetDefaultFromAddress(defaultFromAddress *string) {
	u.DefaultFromAddress = defaultFromAddress
	u.require(updateEmailProviderResponseContentFieldDefaultFromAddress)
}

// SetCredentials sets the Credentials field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateEmailProviderResponseContent) SetCredentials(credentials *EmailProviderCredentials) {
	u.Credentials = credentials
	u.require(updateEmailProviderResponseContentFieldCredentials)
}

// SetSettings sets the Settings field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateEmailProviderResponseContent) SetSettings(settings *EmailProviderSettings) {
	u.Settings = settings
	u.require(updateEmailProviderResponseContentFieldSettings)
}

func (u *UpdateEmailProviderResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateEmailProviderResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateEmailProviderResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateEmailProviderResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateEmailProviderResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateEmailProviderResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

type UpdateEnabledClientConnectionsRequestContent = []*UpdateEnabledClientConnectionsRequestContentItem

var (
	updateEnabledClientConnectionsRequestContentItemFieldClientID = big.NewInt(1 << 0)
	updateEnabledClientConnectionsRequestContentItemFieldStatus   = big.NewInt(1 << 1)
)

type UpdateEnabledClientConnectionsRequestContentItem struct {
	// The client_id of the client to be the subject to change status
	ClientID string `json:"client_id" url:"client_id"`
	// Whether the connection is enabled or not for this client_id
	Status bool `json:"status" url:"status"`

	// 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 (u *UpdateEnabledClientConnectionsRequestContentItem) GetClientID() string {
	if u == nil {
		return ""
	}
	return u.ClientID
}

func (u *UpdateEnabledClientConnectionsRequestContentItem) GetStatus() bool {
	if u == nil {
		return false
	}
	return u.Status
}

func (u *UpdateEnabledClientConnectionsRequestContentItem) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateEnabledClientConnectionsRequestContentItem) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetClientID sets the ClientID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateEnabledClientConnectionsRequestContentItem) SetClientID(clientID string) {
	u.ClientID = clientID
	u.require(updateEnabledClientConnectionsRequestContentItemFieldClientID)
}

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateEnabledClientConnectionsRequestContentItem) SetStatus(status bool) {
	u.Status = status
	u.require(updateEnabledClientConnectionsRequestContentItemFieldStatus)
}

func (u *UpdateEnabledClientConnectionsRequestContentItem) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateEnabledClientConnectionsRequestContentItem
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateEnabledClientConnectionsRequestContentItem(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateEnabledClientConnectionsRequestContentItem) MarshalJSON() ([]byte, error) {
	type embed UpdateEnabledClientConnectionsRequestContentItem
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateEnabledClientConnectionsRequestContentItem) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	updateFlowsVaultConnectionResponseContentFieldID          = big.NewInt(1 << 0)
	updateFlowsVaultConnectionResponseContentFieldAppID       = big.NewInt(1 << 1)
	updateFlowsVaultConnectionResponseContentFieldEnvironment = big.NewInt(1 << 2)
	updateFlowsVaultConnectionResponseContentFieldName        = big.NewInt(1 << 3)
	updateFlowsVaultConnectionResponseContentFieldAccountName = big.NewInt(1 << 4)
	updateFlowsVaultConnectionResponseContentFieldReady       = big.NewInt(1 << 5)
	updateFlowsVaultConnectionResponseContentFieldCreatedAt   = big.NewInt(1 << 6)
	updateFlowsVaultConnectionResponseContentFieldUpdatedAt   = big.NewInt(1 << 7)
	updateFlowsVaultConnectionResponseContentFieldRefreshedAt = big.NewInt(1 << 8)
	updateFlowsVaultConnectionResponseContentFieldFingerprint = big.NewInt(1 << 9)
)

type UpdateFlowsVaultConnectionResponseContent struct {
	// Flows Vault Connection identifier.
	ID string `json:"id" url:"id"`
	// Flows Vault Connection app identifier.
	AppID string `json:"app_id" url:"app_id"`
	// Flows Vault Connection environment.
	Environment *string `json:"environment,omitempty" url:"environment,omitempty"`
	// Flows Vault Connection name.
	Name string `json:"name" url:"name"`
	// Flows Vault Connection custom account name.
	AccountName *string `json:"account_name,omitempty" url:"account_name,omitempty"`
	// Whether the Flows Vault Connection is configured.
	Ready bool `json:"ready" url:"ready"`
	// The ISO 8601 formatted date when this Flows Vault Connection was created.
	CreatedAt time.Time `json:"created_at" url:"created_at"`
	// The ISO 8601 formatted date when this Flows Vault Connection was updated.
	UpdatedAt time.Time `json:"updated_at" url:"updated_at"`
	// The ISO 8601 formatted date when this Flows Vault Connection was refreshed.
	RefreshedAt *time.Time `json:"refreshed_at,omitempty" url:"refreshed_at,omitempty"`
	Fingerprint string     `json:"fingerprint" url:"fingerprint"`

	// 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 (u *UpdateFlowsVaultConnectionResponseContent) GetID() string {
	if u == nil {
		return ""
	}
	return u.ID
}

func (u *UpdateFlowsVaultConnectionResponseContent) GetAppID() string {
	if u == nil {
		return ""
	}
	return u.AppID
}

func (u *UpdateFlowsVaultConnectionResponseContent) GetEnvironment() string {
	if u == nil || u.Environment == nil {
		return ""
	}
	return *u.Environment
}

func (u *UpdateFlowsVaultConnectionResponseContent) GetName() string {
	if u == nil {
		return ""
	}
	return u.Name
}

func (u *UpdateFlowsVaultConnectionResponseContent) GetAccountName() string {
	if u == nil || u.AccountName == nil {
		return ""
	}
	return *u.AccountName
}

func (u *UpdateFlowsVaultConnectionResponseContent) GetReady() bool {
	if u == nil {
		return false
	}
	return u.Ready
}

func (u *UpdateFlowsVaultConnectionResponseContent) GetCreatedAt() time.Time {
	if u == nil {
		return time.Time{}
	}
	return u.CreatedAt
}

func (u *UpdateFlowsVaultConnectionResponseContent) GetUpdatedAt() time.Time {
	if u == nil {
		return time.Time{}
	}
	return u.UpdatedAt
}

func (u *UpdateFlowsVaultConnectionResponseContent) GetRefreshedAt() time.Time {
	if u == nil || u.RefreshedAt == nil {
		return time.Time{}
	}
	return *u.RefreshedAt
}

func (u *UpdateFlowsVaultConnectionResponseContent) GetFingerprint() string {
	if u == nil {
		return ""
	}
	return u.Fingerprint
}

func (u *UpdateFlowsVaultConnectionResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateFlowsVaultConnectionResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.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 (u *UpdateFlowsVaultConnectionResponseContent) SetID(id string) {
	u.ID = id
	u.require(updateFlowsVaultConnectionResponseContentFieldID)
}

// SetAppID sets the AppID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateFlowsVaultConnectionResponseContent) SetAppID(appID string) {
	u.AppID = appID
	u.require(updateFlowsVaultConnectionResponseContentFieldAppID)
}

// 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 (u *UpdateFlowsVaultConnectionResponseContent) SetEnvironment(environment *string) {
	u.Environment = environment
	u.require(updateFlowsVaultConnectionResponseContentFieldEnvironment)
}

// 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 (u *UpdateFlowsVaultConnectionResponseContent) SetName(name string) {
	u.Name = name
	u.require(updateFlowsVaultConnectionResponseContentFieldName)
}

// SetAccountName sets the AccountName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateFlowsVaultConnectionResponseContent) SetAccountName(accountName *string) {
	u.AccountName = accountName
	u.require(updateFlowsVaultConnectionResponseContentFieldAccountName)
}

// SetReady sets the Ready field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateFlowsVaultConnectionResponseContent) SetReady(ready bool) {
	u.Ready = ready
	u.require(updateFlowsVaultConnectionResponseContentFieldReady)
}

// 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 (u *UpdateFlowsVaultConnectionResponseContent) SetCreatedAt(createdAt time.Time) {
	u.CreatedAt = createdAt
	u.require(updateFlowsVaultConnectionResponseContentFieldCreatedAt)
}

// 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 (u *UpdateFlowsVaultConnectionResponseContent) SetUpdatedAt(updatedAt time.Time) {
	u.UpdatedAt = updatedAt
	u.require(updateFlowsVaultConnectionResponseContentFieldUpdatedAt)
}

// SetRefreshedAt sets the RefreshedAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateFlowsVaultConnectionResponseContent) SetRefreshedAt(refreshedAt *time.Time) {
	u.RefreshedAt = refreshedAt
	u.require(updateFlowsVaultConnectionResponseContentFieldRefreshedAt)
}

// SetFingerprint sets the Fingerprint field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateFlowsVaultConnectionResponseContent) SetFingerprint(fingerprint string) {
	u.Fingerprint = fingerprint
	u.require(updateFlowsVaultConnectionResponseContentFieldFingerprint)
}

func (u *UpdateFlowsVaultConnectionResponseContent) UnmarshalJSON(data []byte) error {
	type embed UpdateFlowsVaultConnectionResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt   *internal.DateTime `json:"created_at"`
		UpdatedAt   *internal.DateTime `json:"updated_at"`
		RefreshedAt *internal.DateTime `json:"refreshed_at,omitempty"`
	}{
		embed: embed(*u),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*u = UpdateFlowsVaultConnectionResponseContent(unmarshaler.embed)
	u.CreatedAt = unmarshaler.CreatedAt.Time()
	u.UpdatedAt = unmarshaler.UpdatedAt.Time()
	u.RefreshedAt = unmarshaler.RefreshedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateFlowsVaultConnectionResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateFlowsVaultConnectionResponseContent
	var marshaler = struct {
		embed
		CreatedAt   *internal.DateTime `json:"created_at"`
		UpdatedAt   *internal.DateTime `json:"updated_at"`
		RefreshedAt *internal.DateTime `json:"refreshed_at,omitempty"`
	}{
		embed:       embed(*u),
		CreatedAt:   internal.NewDateTime(u.CreatedAt),
		UpdatedAt:   internal.NewDateTime(u.UpdatedAt),
		RefreshedAt: internal.NewOptionalDateTime(u.RefreshedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateFlowsVaultConnectionResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

// Flows Vault Connection configuration.
type UpdateFlowsVaultConnectionSetup struct {
	FlowsVaultConnectioSetupAPIKeyWithBaseURL *FlowsVaultConnectioSetupAPIKeyWithBaseURL
	FlowsVaultConnectioSetupAPIKey            *FlowsVaultConnectioSetupAPIKey
	FlowsVaultConnectioSetupOauthApp          *FlowsVaultConnectioSetupOauthApp
	FlowsVaultConnectioSetupBigqueryOauthJwt  *FlowsVaultConnectioSetupBigqueryOauthJwt
	FlowsVaultConnectioSetupSecretAPIKey      *FlowsVaultConnectioSetupSecretAPIKey
	FlowsVaultConnectioSetupHTTPBearer        *FlowsVaultConnectioSetupHTTPBearer
	FlowsVaultConnectioSetupJwt               *FlowsVaultConnectioSetupJwt
	FlowsVaultConnectioSetupMailjetAPIKey     *FlowsVaultConnectioSetupMailjetAPIKey
	FlowsVaultConnectioSetupToken             *FlowsVaultConnectioSetupToken
	FlowsVaultConnectioSetupWebhook           *FlowsVaultConnectioSetupWebhook
	FlowsVaultConnectioSetupStripeKeyPair     *FlowsVaultConnectioSetupStripeKeyPair
	FlowsVaultConnectioSetupOauthCode         *FlowsVaultConnectioSetupOauthCode
	FlowsVaultConnectioSetupTwilioAPIKey      *FlowsVaultConnectioSetupTwilioAPIKey

	typ string
}

func (u *UpdateFlowsVaultConnectionSetup) GetFlowsVaultConnectioSetupAPIKeyWithBaseURL() *FlowsVaultConnectioSetupAPIKeyWithBaseURL {
	if u == nil {
		return nil
	}
	return u.FlowsVaultConnectioSetupAPIKeyWithBaseURL
}

func (u *UpdateFlowsVaultConnectionSetup) GetFlowsVaultConnectioSetupAPIKey() *FlowsVaultConnectioSetupAPIKey {
	if u == nil {
		return nil
	}
	return u.FlowsVaultConnectioSetupAPIKey
}

func (u *UpdateFlowsVaultConnectionSetup) GetFlowsVaultConnectioSetupOauthApp() *FlowsVaultConnectioSetupOauthApp {
	if u == nil {
		return nil
	}
	return u.FlowsVaultConnectioSetupOauthApp
}

func (u *UpdateFlowsVaultConnectionSetup) GetFlowsVaultConnectioSetupBigqueryOauthJwt() *FlowsVaultConnectioSetupBigqueryOauthJwt {
	if u == nil {
		return nil
	}
	return u.FlowsVaultConnectioSetupBigqueryOauthJwt
}

func (u *UpdateFlowsVaultConnectionSetup) GetFlowsVaultConnectioSetupSecretAPIKey() *FlowsVaultConnectioSetupSecretAPIKey {
	if u == nil {
		return nil
	}
	return u.FlowsVaultConnectioSetupSecretAPIKey
}

func (u *UpdateFlowsVaultConnectionSetup) GetFlowsVaultConnectioSetupHTTPBearer() *FlowsVaultConnectioSetupHTTPBearer {
	if u == nil {
		return nil
	}
	return u.FlowsVaultConnectioSetupHTTPBearer
}

func (u *UpdateFlowsVaultConnectionSetup) GetFlowsVaultConnectioSetupJwt() *FlowsVaultConnectioSetupJwt {
	if u == nil {
		return nil
	}
	return u.FlowsVaultConnectioSetupJwt
}

func (u *UpdateFlowsVaultConnectionSetup) GetFlowsVaultConnectioSetupMailjetAPIKey() *FlowsVaultConnectioSetupMailjetAPIKey {
	if u == nil {
		return nil
	}
	return u.FlowsVaultConnectioSetupMailjetAPIKey
}

func (u *UpdateFlowsVaultConnectionSetup) GetFlowsVaultConnectioSetupToken() *FlowsVaultConnectioSetupToken {
	if u == nil {
		return nil
	}
	return u.FlowsVaultConnectioSetupToken
}

func (u *UpdateFlowsVaultConnectionSetup) GetFlowsVaultConnectioSetupWebhook() *FlowsVaultConnectioSetupWebhook {
	if u == nil {
		return nil
	}
	return u.FlowsVaultConnectioSetupWebhook
}

func (u *UpdateFlowsVaultConnectionSetup) GetFlowsVaultConnectioSetupStripeKeyPair() *FlowsVaultConnectioSetupStripeKeyPair {
	if u == nil {
		return nil
	}
	return u.FlowsVaultConnectioSetupStripeKeyPair
}

func (u *UpdateFlowsVaultConnectionSetup) GetFlowsVaultConnectioSetupOauthCode() *FlowsVaultConnectioSetupOauthCode {
	if u == nil {
		return nil
	}
	return u.FlowsVaultConnectioSetupOauthCode
}

func (u *UpdateFlowsVaultConnectionSetup) GetFlowsVaultConnectioSetupTwilioAPIKey() *FlowsVaultConnectioSetupTwilioAPIKey {
	if u == nil {
		return nil
	}
	return u.FlowsVaultConnectioSetupTwilioAPIKey
}

func (u *UpdateFlowsVaultConnectionSetup) UnmarshalJSON(data []byte) error {
	valueFlowsVaultConnectioSetupAPIKeyWithBaseURL := new(FlowsVaultConnectioSetupAPIKeyWithBaseURL)
	if err := json.Unmarshal(data, &valueFlowsVaultConnectioSetupAPIKeyWithBaseURL); err == nil {
		u.typ = "FlowsVaultConnectioSetupAPIKeyWithBaseURL"
		u.FlowsVaultConnectioSetupAPIKeyWithBaseURL = valueFlowsVaultConnectioSetupAPIKeyWithBaseURL
		return nil
	}
	valueFlowsVaultConnectioSetupAPIKey := new(FlowsVaultConnectioSetupAPIKey)
	if err := json.Unmarshal(data, &valueFlowsVaultConnectioSetupAPIKey); err == nil {
		u.typ = "FlowsVaultConnectioSetupAPIKey"
		u.FlowsVaultConnectioSetupAPIKey = valueFlowsVaultConnectioSetupAPIKey
		return nil
	}
	valueFlowsVaultConnectioSetupOauthApp := new(FlowsVaultConnectioSetupOauthApp)
	if err := json.Unmarshal(data, &valueFlowsVaultConnectioSetupOauthApp); err == nil {
		u.typ = "FlowsVaultConnectioSetupOauthApp"
		u.FlowsVaultConnectioSetupOauthApp = valueFlowsVaultConnectioSetupOauthApp
		return nil
	}
	valueFlowsVaultConnectioSetupBigqueryOauthJwt := new(FlowsVaultConnectioSetupBigqueryOauthJwt)
	if err := json.Unmarshal(data, &valueFlowsVaultConnectioSetupBigqueryOauthJwt); err == nil {
		u.typ = "FlowsVaultConnectioSetupBigqueryOauthJwt"
		u.FlowsVaultConnectioSetupBigqueryOauthJwt = valueFlowsVaultConnectioSetupBigqueryOauthJwt
		return nil
	}
	valueFlowsVaultConnectioSetupSecretAPIKey := new(FlowsVaultConnectioSetupSecretAPIKey)
	if err := json.Unmarshal(data, &valueFlowsVaultConnectioSetupSecretAPIKey); err == nil {
		u.typ = "FlowsVaultConnectioSetupSecretAPIKey"
		u.FlowsVaultConnectioSetupSecretAPIKey = valueFlowsVaultConnectioSetupSecretAPIKey
		return nil
	}
	valueFlowsVaultConnectioSetupHTTPBearer := new(FlowsVaultConnectioSetupHTTPBearer)
	if err := json.Unmarshal(data, &valueFlowsVaultConnectioSetupHTTPBearer); err == nil {
		u.typ = "FlowsVaultConnectioSetupHTTPBearer"
		u.FlowsVaultConnectioSetupHTTPBearer = valueFlowsVaultConnectioSetupHTTPBearer
		return nil
	}
	valueFlowsVaultConnectioSetupJwt := new(FlowsVaultConnectioSetupJwt)
	if err := json.Unmarshal(data, &valueFlowsVaultConnectioSetupJwt); err == nil {
		u.typ = "FlowsVaultConnectioSetupJwt"
		u.FlowsVaultConnectioSetupJwt = valueFlowsVaultConnectioSetupJwt
		return nil
	}
	valueFlowsVaultConnectioSetupMailjetAPIKey := new(FlowsVaultConnectioSetupMailjetAPIKey)
	if err := json.Unmarshal(data, &valueFlowsVaultConnectioSetupMailjetAPIKey); err == nil {
		u.typ = "FlowsVaultConnectioSetupMailjetAPIKey"
		u.FlowsVaultConnectioSetupMailjetAPIKey = valueFlowsVaultConnectioSetupMailjetAPIKey
		return nil
	}
	valueFlowsVaultConnectioSetupToken := new(FlowsVaultConnectioSetupToken)
	if err := json.Unmarshal(data, &valueFlowsVaultConnectioSetupToken); err == nil {
		u.typ = "FlowsVaultConnectioSetupToken"
		u.FlowsVaultConnectioSetupToken = valueFlowsVaultConnectioSetupToken
		return nil
	}
	valueFlowsVaultConnectioSetupWebhook := new(FlowsVaultConnectioSetupWebhook)
	if err := json.Unmarshal(data, &valueFlowsVaultConnectioSetupWebhook); err == nil {
		u.typ = "FlowsVaultConnectioSetupWebhook"
		u.FlowsVaultConnectioSetupWebhook = valueFlowsVaultConnectioSetupWebhook
		return nil
	}
	valueFlowsVaultConnectioSetupStripeKeyPair := new(FlowsVaultConnectioSetupStripeKeyPair)
	if err := json.Unmarshal(data, &valueFlowsVaultConnectioSetupStripeKeyPair); err == nil {
		u.typ = "FlowsVaultConnectioSetupStripeKeyPair"
		u.FlowsVaultConnectioSetupStripeKeyPair = valueFlowsVaultConnectioSetupStripeKeyPair
		return nil
	}
	valueFlowsVaultConnectioSetupOauthCode := new(FlowsVaultConnectioSetupOauthCode)
	if err := json.Unmarshal(data, &valueFlowsVaultConnectioSetupOauthCode); err == nil {
		u.typ = "FlowsVaultConnectioSetupOauthCode"
		u.FlowsVaultConnectioSetupOauthCode = valueFlowsVaultConnectioSetupOauthCode
		return nil
	}
	valueFlowsVaultConnectioSetupTwilioAPIKey := new(FlowsVaultConnectioSetupTwilioAPIKey)
	if err := json.Unmarshal(data, &valueFlowsVaultConnectioSetupTwilioAPIKey); err == nil {
		u.typ = "FlowsVaultConnectioSetupTwilioAPIKey"
		u.FlowsVaultConnectioSetupTwilioAPIKey = valueFlowsVaultConnectioSetupTwilioAPIKey
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, u)
}

func (u UpdateFlowsVaultConnectionSetup) MarshalJSON() ([]byte, error) {
	if u.typ == "FlowsVaultConnectioSetupAPIKeyWithBaseURL" || u.FlowsVaultConnectioSetupAPIKeyWithBaseURL != nil {
		return json.Marshal(u.FlowsVaultConnectioSetupAPIKeyWithBaseURL)
	}
	if u.typ == "FlowsVaultConnectioSetupAPIKey" || u.FlowsVaultConnectioSetupAPIKey != nil {
		return json.Marshal(u.FlowsVaultConnectioSetupAPIKey)
	}
	if u.typ == "FlowsVaultConnectioSetupOauthApp" || u.FlowsVaultConnectioSetupOauthApp != nil {
		return json.Marshal(u.FlowsVaultConnectioSetupOauthApp)
	}
	if u.typ == "FlowsVaultConnectioSetupBigqueryOauthJwt" || u.FlowsVaultConnectioSetupBigqueryOauthJwt != nil {
		return json.Marshal(u.FlowsVaultConnectioSetupBigqueryOauthJwt)
	}
	if u.typ == "FlowsVaultConnectioSetupSecretAPIKey" || u.FlowsVaultConnectioSetupSecretAPIKey != nil {
		return json.Marshal(u.FlowsVaultConnectioSetupSecretAPIKey)
	}
	if u.typ == "FlowsVaultConnectioSetupHTTPBearer" || u.FlowsVaultConnectioSetupHTTPBearer != nil {
		return json.Marshal(u.FlowsVaultConnectioSetupHTTPBearer)
	}
	if u.typ == "FlowsVaultConnectioSetupJwt" || u.FlowsVaultConnectioSetupJwt != nil {
		return json.Marshal(u.FlowsVaultConnectioSetupJwt)
	}
	if u.typ == "FlowsVaultConnectioSetupMailjetAPIKey" || u.FlowsVaultConnectioSetupMailjetAPIKey != nil {
		return json.Marshal(u.FlowsVaultConnectioSetupMailjetAPIKey)
	}
	if u.typ == "FlowsVaultConnectioSetupToken" || u.FlowsVaultConnectioSetupToken != nil {
		return json.Marshal(u.FlowsVaultConnectioSetupToken)
	}
	if u.typ == "FlowsVaultConnectioSetupWebhook" || u.FlowsVaultConnectioSetupWebhook != nil {
		return json.Marshal(u.FlowsVaultConnectioSetupWebhook)
	}
	if u.typ == "FlowsVaultConnectioSetupStripeKeyPair" || u.FlowsVaultConnectioSetupStripeKeyPair != nil {
		return json.Marshal(u.FlowsVaultConnectioSetupStripeKeyPair)
	}
	if u.typ == "FlowsVaultConnectioSetupOauthCode" || u.FlowsVaultConnectioSetupOauthCode != nil {
		return json.Marshal(u.FlowsVaultConnectioSetupOauthCode)
	}
	if u.typ == "FlowsVaultConnectioSetupTwilioAPIKey" || u.FlowsVaultConnectioSetupTwilioAPIKey != nil {
		return json.Marshal(u.FlowsVaultConnectioSetupTwilioAPIKey)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", u)
}

type UpdateFlowsVaultConnectionSetupVisitor interface {
	VisitFlowsVaultConnectioSetupAPIKeyWithBaseURL(*FlowsVaultConnectioSetupAPIKeyWithBaseURL) error
	VisitFlowsVaultConnectioSetupAPIKey(*FlowsVaultConnectioSetupAPIKey) error
	VisitFlowsVaultConnectioSetupOauthApp(*FlowsVaultConnectioSetupOauthApp) error
	VisitFlowsVaultConnectioSetupBigqueryOauthJwt(*FlowsVaultConnectioSetupBigqueryOauthJwt) error
	VisitFlowsVaultConnectioSetupSecretAPIKey(*FlowsVaultConnectioSetupSecretAPIKey) error
	VisitFlowsVaultConnectioSetupHTTPBearer(*FlowsVaultConnectioSetupHTTPBearer) error
	VisitFlowsVaultConnectioSetupJwt(*FlowsVaultConnectioSetupJwt) error
	VisitFlowsVaultConnectioSetupMailjetAPIKey(*FlowsVaultConnectioSetupMailjetAPIKey) error
	VisitFlowsVaultConnectioSetupToken(*FlowsVaultConnectioSetupToken) error
	VisitFlowsVaultConnectioSetupWebhook(*FlowsVaultConnectioSetupWebhook) error
	VisitFlowsVaultConnectioSetupStripeKeyPair(*FlowsVaultConnectioSetupStripeKeyPair) error
	VisitFlowsVaultConnectioSetupOauthCode(*FlowsVaultConnectioSetupOauthCode) error
	VisitFlowsVaultConnectioSetupTwilioAPIKey(*FlowsVaultConnectioSetupTwilioAPIKey) error
}

func (u *UpdateFlowsVaultConnectionSetup) Accept(visitor UpdateFlowsVaultConnectionSetupVisitor) error {
	if u.typ == "FlowsVaultConnectioSetupAPIKeyWithBaseURL" || u.FlowsVaultConnectioSetupAPIKeyWithBaseURL != nil {
		return visitor.VisitFlowsVaultConnectioSetupAPIKeyWithBaseURL(u.FlowsVaultConnectioSetupAPIKeyWithBaseURL)
	}
	if u.typ == "FlowsVaultConnectioSetupAPIKey" || u.FlowsVaultConnectioSetupAPIKey != nil {
		return visitor.VisitFlowsVaultConnectioSetupAPIKey(u.FlowsVaultConnectioSetupAPIKey)
	}
	if u.typ == "FlowsVaultConnectioSetupOauthApp" || u.FlowsVaultConnectioSetupOauthApp != nil {
		return visitor.VisitFlowsVaultConnectioSetupOauthApp(u.FlowsVaultConnectioSetupOauthApp)
	}
	if u.typ == "FlowsVaultConnectioSetupBigqueryOauthJwt" || u.FlowsVaultConnectioSetupBigqueryOauthJwt != nil {
		return visitor.VisitFlowsVaultConnectioSetupBigqueryOauthJwt(u.FlowsVaultConnectioSetupBigqueryOauthJwt)
	}
	if u.typ == "FlowsVaultConnectioSetupSecretAPIKey" || u.FlowsVaultConnectioSetupSecretAPIKey != nil {
		return visitor.VisitFlowsVaultConnectioSetupSecretAPIKey(u.FlowsVaultConnectioSetupSecretAPIKey)
	}
	if u.typ == "FlowsVaultConnectioSetupHTTPBearer" || u.FlowsVaultConnectioSetupHTTPBearer != nil {
		return visitor.VisitFlowsVaultConnectioSetupHTTPBearer(u.FlowsVaultConnectioSetupHTTPBearer)
	}
	if u.typ == "FlowsVaultConnectioSetupJwt" || u.FlowsVaultConnectioSetupJwt != nil {
		return visitor.VisitFlowsVaultConnectioSetupJwt(u.FlowsVaultConnectioSetupJwt)
	}
	if u.typ == "FlowsVaultConnectioSetupMailjetAPIKey" || u.FlowsVaultConnectioSetupMailjetAPIKey != nil {
		return visitor.VisitFlowsVaultConnectioSetupMailjetAPIKey(u.FlowsVaultConnectioSetupMailjetAPIKey)
	}
	if u.typ == "FlowsVaultConnectioSetupToken" || u.FlowsVaultConnectioSetupToken != nil {
		return visitor.VisitFlowsVaultConnectioSetupToken(u.FlowsVaultConnectioSetupToken)
	}
	if u.typ == "FlowsVaultConnectioSetupWebhook" || u.FlowsVaultConnectioSetupWebhook != nil {
		return visitor.VisitFlowsVaultConnectioSetupWebhook(u.FlowsVaultConnectioSetupWebhook)
	}
	if u.typ == "FlowsVaultConnectioSetupStripeKeyPair" || u.FlowsVaultConnectioSetupStripeKeyPair != nil {
		return visitor.VisitFlowsVaultConnectioSetupStripeKeyPair(u.FlowsVaultConnectioSetupStripeKeyPair)
	}
	if u.typ == "FlowsVaultConnectioSetupOauthCode" || u.FlowsVaultConnectioSetupOauthCode != nil {
		return visitor.VisitFlowsVaultConnectioSetupOauthCode(u.FlowsVaultConnectioSetupOauthCode)
	}
	if u.typ == "FlowsVaultConnectioSetupTwilioAPIKey" || u.FlowsVaultConnectioSetupTwilioAPIKey != nil {
		return visitor.VisitFlowsVaultConnectioSetupTwilioAPIKey(u.FlowsVaultConnectioSetupTwilioAPIKey)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", u)
}

var (
	updateGuardianFactorDuoSettingsResponseContentFieldIkey = big.NewInt(1 << 0)
	updateGuardianFactorDuoSettingsResponseContentFieldSkey = big.NewInt(1 << 1)
	updateGuardianFactorDuoSettingsResponseContentFieldHost = big.NewInt(1 << 2)
)

type UpdateGuardianFactorDuoSettingsResponseContent struct {
	Ikey *string `json:"ikey,omitempty" url:"ikey,omitempty"`
	Skey *string `json:"skey,omitempty" url:"skey,omitempty"`
	Host *string `json:"host,omitempty" url:"host,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 (u *UpdateGuardianFactorDuoSettingsResponseContent) GetIkey() string {
	if u == nil || u.Ikey == nil {
		return ""
	}
	return *u.Ikey
}

func (u *UpdateGuardianFactorDuoSettingsResponseContent) GetSkey() string {
	if u == nil || u.Skey == nil {
		return ""
	}
	return *u.Skey
}

func (u *UpdateGuardianFactorDuoSettingsResponseContent) GetHost() string {
	if u == nil || u.Host == nil {
		return ""
	}
	return *u.Host
}

func (u *UpdateGuardianFactorDuoSettingsResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateGuardianFactorDuoSettingsResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetIkey sets the Ikey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateGuardianFactorDuoSettingsResponseContent) SetIkey(ikey *string) {
	u.Ikey = ikey
	u.require(updateGuardianFactorDuoSettingsResponseContentFieldIkey)
}

// SetSkey sets the Skey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateGuardianFactorDuoSettingsResponseContent) SetSkey(skey *string) {
	u.Skey = skey
	u.require(updateGuardianFactorDuoSettingsResponseContentFieldSkey)
}

// SetHost sets the Host field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateGuardianFactorDuoSettingsResponseContent) SetHost(host *string) {
	u.Host = host
	u.require(updateGuardianFactorDuoSettingsResponseContentFieldHost)
}

func (u *UpdateGuardianFactorDuoSettingsResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateGuardianFactorDuoSettingsResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateGuardianFactorDuoSettingsResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateGuardianFactorDuoSettingsResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateGuardianFactorDuoSettingsResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateGuardianFactorDuoSettingsResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	updateGuardianFactorsProviderPushNotificationSnsResponseContentFieldAwsAccessKeyID                = big.NewInt(1 << 0)
	updateGuardianFactorsProviderPushNotificationSnsResponseContentFieldAwsSecretAccessKey            = big.NewInt(1 << 1)
	updateGuardianFactorsProviderPushNotificationSnsResponseContentFieldAwsRegion                     = big.NewInt(1 << 2)
	updateGuardianFactorsProviderPushNotificationSnsResponseContentFieldSnsApnsPlatformApplicationArn = big.NewInt(1 << 3)
	updateGuardianFactorsProviderPushNotificationSnsResponseContentFieldSnsGcmPlatformApplicationArn  = big.NewInt(1 << 4)
)

type UpdateGuardianFactorsProviderPushNotificationSnsResponseContent struct {
	AwsAccessKeyID                *string `json:"aws_access_key_id,omitempty" url:"aws_access_key_id,omitempty"`
	AwsSecretAccessKey            *string `json:"aws_secret_access_key,omitempty" url:"aws_secret_access_key,omitempty"`
	AwsRegion                     *string `json:"aws_region,omitempty" url:"aws_region,omitempty"`
	SnsApnsPlatformApplicationArn *string `json:"sns_apns_platform_application_arn,omitempty" url:"sns_apns_platform_application_arn,omitempty"`
	SnsGcmPlatformApplicationArn  *string `json:"sns_gcm_platform_application_arn,omitempty" url:"sns_gcm_platform_application_arn,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 (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) GetAwsAccessKeyID() string {
	if u == nil || u.AwsAccessKeyID == nil {
		return ""
	}
	return *u.AwsAccessKeyID
}

func (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) GetAwsSecretAccessKey() string {
	if u == nil || u.AwsSecretAccessKey == nil {
		return ""
	}
	return *u.AwsSecretAccessKey
}

func (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) GetAwsRegion() string {
	if u == nil || u.AwsRegion == nil {
		return ""
	}
	return *u.AwsRegion
}

func (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) GetSnsApnsPlatformApplicationArn() string {
	if u == nil || u.SnsApnsPlatformApplicationArn == nil {
		return ""
	}
	return *u.SnsApnsPlatformApplicationArn
}

func (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) GetSnsGcmPlatformApplicationArn() string {
	if u == nil || u.SnsGcmPlatformApplicationArn == nil {
		return ""
	}
	return *u.SnsGcmPlatformApplicationArn
}

func (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetAwsAccessKeyID sets the AwsAccessKeyID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) SetAwsAccessKeyID(awsAccessKeyID *string) {
	u.AwsAccessKeyID = awsAccessKeyID
	u.require(updateGuardianFactorsProviderPushNotificationSnsResponseContentFieldAwsAccessKeyID)
}

// SetAwsSecretAccessKey sets the AwsSecretAccessKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) SetAwsSecretAccessKey(awsSecretAccessKey *string) {
	u.AwsSecretAccessKey = awsSecretAccessKey
	u.require(updateGuardianFactorsProviderPushNotificationSnsResponseContentFieldAwsSecretAccessKey)
}

// SetAwsRegion sets the AwsRegion field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) SetAwsRegion(awsRegion *string) {
	u.AwsRegion = awsRegion
	u.require(updateGuardianFactorsProviderPushNotificationSnsResponseContentFieldAwsRegion)
}

// SetSnsApnsPlatformApplicationArn sets the SnsApnsPlatformApplicationArn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) SetSnsApnsPlatformApplicationArn(snsApnsPlatformApplicationArn *string) {
	u.SnsApnsPlatformApplicationArn = snsApnsPlatformApplicationArn
	u.require(updateGuardianFactorsProviderPushNotificationSnsResponseContentFieldSnsApnsPlatformApplicationArn)
}

// SetSnsGcmPlatformApplicationArn sets the SnsGcmPlatformApplicationArn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) SetSnsGcmPlatformApplicationArn(snsGcmPlatformApplicationArn *string) {
	u.SnsGcmPlatformApplicationArn = snsGcmPlatformApplicationArn
	u.require(updateGuardianFactorsProviderPushNotificationSnsResponseContentFieldSnsGcmPlatformApplicationArn)
}

func (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateGuardianFactorsProviderPushNotificationSnsResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateGuardianFactorsProviderPushNotificationSnsResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateGuardianFactorsProviderPushNotificationSnsResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateGuardianFactorsProviderPushNotificationSnsResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

// Hashmap of key-value pairs where the value must be a string.
type UpdateHookSecretRequestContent = map[string]string

var (
	updateOrganizationConnectionResponseContentFieldConnectionID            = big.NewInt(1 << 0)
	updateOrganizationConnectionResponseContentFieldAssignMembershipOnLogin = big.NewInt(1 << 1)
	updateOrganizationConnectionResponseContentFieldShowAsButton            = big.NewInt(1 << 2)
	updateOrganizationConnectionResponseContentFieldIsSignupEnabled         = big.NewInt(1 << 3)
	updateOrganizationConnectionResponseContentFieldConnection              = big.NewInt(1 << 4)
)

type UpdateOrganizationConnectionResponseContent struct {
	// ID of the connection.
	ConnectionID *string `json:"connection_id,omitempty" url:"connection_id,omitempty"`
	// When true, all users that log in with this connection will be automatically granted membership in the organization. When false, users must be granted membership in the organization before logging in with this connection.
	AssignMembershipOnLogin *bool `json:"assign_membership_on_login,omitempty" url:"assign_membership_on_login,omitempty"`
	// Determines whether a connection should be displayed on this organization’s login prompt. Only applicable for enterprise connections. Default: true.
	ShowAsButton *bool `json:"show_as_button,omitempty" url:"show_as_button,omitempty"`
	// Determines whether organization signup should be enabled for this organization connection. Only applicable for database connections. Default: false.
	IsSignupEnabled *bool                              `json:"is_signup_enabled,omitempty" url:"is_signup_enabled,omitempty"`
	Connection      *OrganizationConnectionInformation `json:"connection,omitempty" url:"connection,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 (u *UpdateOrganizationConnectionResponseContent) GetConnectionID() string {
	if u == nil || u.ConnectionID == nil {
		return ""
	}
	return *u.ConnectionID
}

func (u *UpdateOrganizationConnectionResponseContent) GetAssignMembershipOnLogin() bool {
	if u == nil || u.AssignMembershipOnLogin == nil {
		return false
	}
	return *u.AssignMembershipOnLogin
}

func (u *UpdateOrganizationConnectionResponseContent) GetShowAsButton() bool {
	if u == nil || u.ShowAsButton == nil {
		return false
	}
	return *u.ShowAsButton
}

func (u *UpdateOrganizationConnectionResponseContent) GetIsSignupEnabled() bool {
	if u == nil || u.IsSignupEnabled == nil {
		return false
	}
	return *u.IsSignupEnabled
}

func (u *UpdateOrganizationConnectionResponseContent) GetConnection() OrganizationConnectionInformation {
	if u == nil || u.Connection == nil {
		return OrganizationConnectionInformation{}
	}
	return *u.Connection
}

func (u *UpdateOrganizationConnectionResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateOrganizationConnectionResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateOrganizationConnectionResponseContent) SetConnectionID(connectionID *string) {
	u.ConnectionID = connectionID
	u.require(updateOrganizationConnectionResponseContentFieldConnectionID)
}

// SetAssignMembershipOnLogin sets the AssignMembershipOnLogin field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateOrganizationConnectionResponseContent) SetAssignMembershipOnLogin(assignMembershipOnLogin *bool) {
	u.AssignMembershipOnLogin = assignMembershipOnLogin
	u.require(updateOrganizationConnectionResponseContentFieldAssignMembershipOnLogin)
}

// SetShowAsButton sets the ShowAsButton field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateOrganizationConnectionResponseContent) SetShowAsButton(showAsButton *bool) {
	u.ShowAsButton = showAsButton
	u.require(updateOrganizationConnectionResponseContentFieldShowAsButton)
}

// SetIsSignupEnabled sets the IsSignupEnabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateOrganizationConnectionResponseContent) SetIsSignupEnabled(isSignupEnabled *bool) {
	u.IsSignupEnabled = isSignupEnabled
	u.require(updateOrganizationConnectionResponseContentFieldIsSignupEnabled)
}

// SetConnection sets the Connection field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateOrganizationConnectionResponseContent) SetConnection(connection *OrganizationConnectionInformation) {
	u.Connection = connection
	u.require(updateOrganizationConnectionResponseContentFieldConnection)
}

func (u *UpdateOrganizationConnectionResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateOrganizationConnectionResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateOrganizationConnectionResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateOrganizationConnectionResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateOrganizationConnectionResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateOrganizationConnectionResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	updatePhoneTemplateResponseContentFieldID           = big.NewInt(1 << 0)
	updatePhoneTemplateResponseContentFieldChannel      = big.NewInt(1 << 1)
	updatePhoneTemplateResponseContentFieldCustomizable = big.NewInt(1 << 2)
	updatePhoneTemplateResponseContentFieldTenant       = big.NewInt(1 << 3)
	updatePhoneTemplateResponseContentFieldContent      = big.NewInt(1 << 4)
	updatePhoneTemplateResponseContentFieldType         = big.NewInt(1 << 5)
	updatePhoneTemplateResponseContentFieldDisabled     = big.NewInt(1 << 6)
)

type UpdatePhoneTemplateResponseContent struct {
	ID           string                            `json:"id" url:"id"`
	Channel      *string                           `json:"channel,omitempty" url:"channel,omitempty"`
	Customizable *bool                             `json:"customizable,omitempty" url:"customizable,omitempty"`
	Tenant       *string                           `json:"tenant,omitempty" url:"tenant,omitempty"`
	Content      *PhoneTemplateContent             `json:"content" url:"content"`
	Type         PhoneTemplateNotificationTypeEnum `json:"type" url:"type"`
	// Whether the template is enabled (false) or disabled (true).
	Disabled bool `json:"disabled" url:"disabled"`

	// 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 (u *UpdatePhoneTemplateResponseContent) GetID() string {
	if u == nil {
		return ""
	}
	return u.ID
}

func (u *UpdatePhoneTemplateResponseContent) GetChannel() string {
	if u == nil || u.Channel == nil {
		return ""
	}
	return *u.Channel
}

func (u *UpdatePhoneTemplateResponseContent) GetCustomizable() bool {
	if u == nil || u.Customizable == nil {
		return false
	}
	return *u.Customizable
}

func (u *UpdatePhoneTemplateResponseContent) GetTenant() string {
	if u == nil || u.Tenant == nil {
		return ""
	}
	return *u.Tenant
}

func (u *UpdatePhoneTemplateResponseContent) GetContent() *PhoneTemplateContent {
	if u == nil {
		return nil
	}
	return u.Content
}

func (u *UpdatePhoneTemplateResponseContent) GetType() PhoneTemplateNotificationTypeEnum {
	if u == nil {
		return ""
	}
	return u.Type
}

func (u *UpdatePhoneTemplateResponseContent) GetDisabled() bool {
	if u == nil {
		return false
	}
	return u.Disabled
}

func (u *UpdatePhoneTemplateResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdatePhoneTemplateResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.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 (u *UpdatePhoneTemplateResponseContent) SetID(id string) {
	u.ID = id
	u.require(updatePhoneTemplateResponseContentFieldID)
}

// SetChannel sets the Channel field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdatePhoneTemplateResponseContent) SetChannel(channel *string) {
	u.Channel = channel
	u.require(updatePhoneTemplateResponseContentFieldChannel)
}

// SetCustomizable sets the Customizable field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdatePhoneTemplateResponseContent) SetCustomizable(customizable *bool) {
	u.Customizable = customizable
	u.require(updatePhoneTemplateResponseContentFieldCustomizable)
}

// SetTenant sets the Tenant field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdatePhoneTemplateResponseContent) SetTenant(tenant *string) {
	u.Tenant = tenant
	u.require(updatePhoneTemplateResponseContentFieldTenant)
}

// SetContent sets the Content field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdatePhoneTemplateResponseContent) SetContent(content *PhoneTemplateContent) {
	u.Content = content
	u.require(updatePhoneTemplateResponseContentFieldContent)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdatePhoneTemplateResponseContent) SetType(type_ PhoneTemplateNotificationTypeEnum) {
	u.Type = type_
	u.require(updatePhoneTemplateResponseContentFieldType)
}

// SetDisabled sets the Disabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdatePhoneTemplateResponseContent) SetDisabled(disabled bool) {
	u.Disabled = disabled
	u.require(updatePhoneTemplateResponseContentFieldDisabled)
}

func (u *UpdatePhoneTemplateResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdatePhoneTemplateResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdatePhoneTemplateResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdatePhoneTemplateResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdatePhoneTemplateResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdatePhoneTemplateResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	updateRiskAssessmentsSettingsNewDeviceResponseContentFieldRememberFor = big.NewInt(1 << 0)
)

type UpdateRiskAssessmentsSettingsNewDeviceResponseContent struct {
	// Length of time to remember devices for, in days.
	RememberFor int `json:"remember_for" url:"remember_for"`

	// 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 (u *UpdateRiskAssessmentsSettingsNewDeviceResponseContent) GetRememberFor() int {
	if u == nil {
		return 0
	}
	return u.RememberFor
}

func (u *UpdateRiskAssessmentsSettingsNewDeviceResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateRiskAssessmentsSettingsNewDeviceResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetRememberFor sets the RememberFor field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateRiskAssessmentsSettingsNewDeviceResponseContent) SetRememberFor(rememberFor int) {
	u.RememberFor = rememberFor
	u.require(updateRiskAssessmentsSettingsNewDeviceResponseContentFieldRememberFor)
}

func (u *UpdateRiskAssessmentsSettingsNewDeviceResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateRiskAssessmentsSettingsNewDeviceResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateRiskAssessmentsSettingsNewDeviceResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateRiskAssessmentsSettingsNewDeviceResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateRiskAssessmentsSettingsNewDeviceResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateRiskAssessmentsSettingsNewDeviceResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	updateRiskAssessmentsSettingsResponseContentFieldEnabled = big.NewInt(1 << 0)
)

type UpdateRiskAssessmentsSettingsResponseContent struct {
	// Whether or not risk assessment is enabled.
	Enabled bool `json:"enabled" url:"enabled"`

	// 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 (u *UpdateRiskAssessmentsSettingsResponseContent) GetEnabled() bool {
	if u == nil {
		return false
	}
	return u.Enabled
}

func (u *UpdateRiskAssessmentsSettingsResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateRiskAssessmentsSettingsResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateRiskAssessmentsSettingsResponseContent) SetEnabled(enabled bool) {
	u.Enabled = enabled
	u.require(updateRiskAssessmentsSettingsResponseContentFieldEnabled)
}

func (u *UpdateRiskAssessmentsSettingsResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateRiskAssessmentsSettingsResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateRiskAssessmentsSettingsResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateRiskAssessmentsSettingsResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateRiskAssessmentsSettingsResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateRiskAssessmentsSettingsResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	updateSCIMConfigurationResponseContentFieldConnectionID    = big.NewInt(1 << 0)
	updateSCIMConfigurationResponseContentFieldConnectionName  = big.NewInt(1 << 1)
	updateSCIMConfigurationResponseContentFieldStrategy        = big.NewInt(1 << 2)
	updateSCIMConfigurationResponseContentFieldTenantName      = big.NewInt(1 << 3)
	updateSCIMConfigurationResponseContentFieldUserIDAttribute = big.NewInt(1 << 4)
	updateSCIMConfigurationResponseContentFieldMapping         = big.NewInt(1 << 5)
	updateSCIMConfigurationResponseContentFieldCreatedAt       = big.NewInt(1 << 6)
	updateSCIMConfigurationResponseContentFieldUpdatedOn       = big.NewInt(1 << 7)
)

type UpdateSCIMConfigurationResponseContent struct {
	// The connection's identifier
	ConnectionID *string `json:"connection_id,omitempty" url:"connection_id,omitempty"`
	// The connection's identifier
	ConnectionName *string `json:"connection_name,omitempty" url:"connection_name,omitempty"`
	// The connection's strategy
	Strategy *string `json:"strategy,omitempty" url:"strategy,omitempty"`
	// The tenant's name
	TenantName *string `json:"tenant_name,omitempty" url:"tenant_name,omitempty"`
	// User ID attribute for generating unique user ids
	UserIDAttribute *string `json:"user_id_attribute,omitempty" url:"user_id_attribute,omitempty"`
	// The mapping between auth0 and SCIM
	Mapping []*SCIMMappingItem `json:"mapping,omitempty" url:"mapping,omitempty"`
	// The Date Time Scim Configuration was created
	CreatedAt *string `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The Date Time Scim Configuration was last updated
	UpdatedOn *string `json:"updated_on,omitempty" url:"updated_on,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 (u *UpdateSCIMConfigurationResponseContent) GetConnectionID() string {
	if u == nil || u.ConnectionID == nil {
		return ""
	}
	return *u.ConnectionID
}

func (u *UpdateSCIMConfigurationResponseContent) GetConnectionName() string {
	if u == nil || u.ConnectionName == nil {
		return ""
	}
	return *u.ConnectionName
}

func (u *UpdateSCIMConfigurationResponseContent) GetStrategy() string {
	if u == nil || u.Strategy == nil {
		return ""
	}
	return *u.Strategy
}

func (u *UpdateSCIMConfigurationResponseContent) GetTenantName() string {
	if u == nil || u.TenantName == nil {
		return ""
	}
	return *u.TenantName
}

func (u *UpdateSCIMConfigurationResponseContent) GetUserIDAttribute() string {
	if u == nil || u.UserIDAttribute == nil {
		return ""
	}
	return *u.UserIDAttribute
}

func (u *UpdateSCIMConfigurationResponseContent) GetMapping() []*SCIMMappingItem {
	if u == nil || u.Mapping == nil {
		return nil
	}
	return u.Mapping
}

func (u *UpdateSCIMConfigurationResponseContent) GetCreatedAt() string {
	if u == nil || u.CreatedAt == nil {
		return ""
	}
	return *u.CreatedAt
}

func (u *UpdateSCIMConfigurationResponseContent) GetUpdatedOn() string {
	if u == nil || u.UpdatedOn == nil {
		return ""
	}
	return *u.UpdatedOn
}

func (u *UpdateSCIMConfigurationResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateSCIMConfigurationResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetConnectionID sets the ConnectionID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateSCIMConfigurationResponseContent) SetConnectionID(connectionID *string) {
	u.ConnectionID = connectionID
	u.require(updateSCIMConfigurationResponseContentFieldConnectionID)
}

// SetConnectionName sets the ConnectionName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateSCIMConfigurationResponseContent) SetConnectionName(connectionName *string) {
	u.ConnectionName = connectionName
	u.require(updateSCIMConfigurationResponseContentFieldConnectionName)
}

// SetStrategy sets the Strategy field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateSCIMConfigurationResponseContent) SetStrategy(strategy *string) {
	u.Strategy = strategy
	u.require(updateSCIMConfigurationResponseContentFieldStrategy)
}

// SetTenantName sets the TenantName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateSCIMConfigurationResponseContent) SetTenantName(tenantName *string) {
	u.TenantName = tenantName
	u.require(updateSCIMConfigurationResponseContentFieldTenantName)
}

// SetUserIDAttribute sets the UserIDAttribute field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateSCIMConfigurationResponseContent) SetUserIDAttribute(userIDAttribute *string) {
	u.UserIDAttribute = userIDAttribute
	u.require(updateSCIMConfigurationResponseContentFieldUserIDAttribute)
}

// SetMapping sets the Mapping field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateSCIMConfigurationResponseContent) SetMapping(mapping []*SCIMMappingItem) {
	u.Mapping = mapping
	u.require(updateSCIMConfigurationResponseContentFieldMapping)
}

// 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 (u *UpdateSCIMConfigurationResponseContent) SetCreatedAt(createdAt *string) {
	u.CreatedAt = createdAt
	u.require(updateSCIMConfigurationResponseContentFieldCreatedAt)
}

// SetUpdatedOn sets the UpdatedOn field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateSCIMConfigurationResponseContent) SetUpdatedOn(updatedOn *string) {
	u.UpdatedOn = updatedOn
	u.require(updateSCIMConfigurationResponseContentFieldUpdatedOn)
}

func (u *UpdateSCIMConfigurationResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateSCIMConfigurationResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateSCIMConfigurationResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateSCIMConfigurationResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateSCIMConfigurationResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateSCIMConfigurationResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	updateSuspiciousIPThrottlingSettingsResponseContentFieldEnabled   = big.NewInt(1 << 0)
	updateSuspiciousIPThrottlingSettingsResponseContentFieldShields   = big.NewInt(1 << 1)
	updateSuspiciousIPThrottlingSettingsResponseContentFieldAllowlist = big.NewInt(1 << 2)
	updateSuspiciousIPThrottlingSettingsResponseContentFieldStage     = big.NewInt(1 << 3)
)

type UpdateSuspiciousIPThrottlingSettingsResponseContent struct {
	// Whether or not suspicious IP throttling attack protections are active.
	Enabled *bool `json:"enabled,omitempty" url:"enabled,omitempty"`
	// Action to take when a suspicious IP throttling threshold is violated.
	//
	//	Possible values: <code>block</code>, <code>admin_notification</code>.
	Shields   []SuspiciousIPThrottlingShieldsEnum `json:"shields,omitempty" url:"shields,omitempty"`
	Allowlist *SuspiciousIPThrottlingAllowlist    `json:"allowlist,omitempty" url:"allowlist,omitempty"`
	Stage     *SuspiciousIPThrottlingStage        `json:"stage,omitempty" url:"stage,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 (u *UpdateSuspiciousIPThrottlingSettingsResponseContent) GetEnabled() bool {
	if u == nil || u.Enabled == nil {
		return false
	}
	return *u.Enabled
}

func (u *UpdateSuspiciousIPThrottlingSettingsResponseContent) GetShields() []SuspiciousIPThrottlingShieldsEnum {
	if u == nil || u.Shields == nil {
		return nil
	}
	return u.Shields
}

func (u *UpdateSuspiciousIPThrottlingSettingsResponseContent) GetAllowlist() SuspiciousIPThrottlingAllowlist {
	if u == nil || u.Allowlist == nil {
		return nil
	}
	return *u.Allowlist
}

func (u *UpdateSuspiciousIPThrottlingSettingsResponseContent) GetStage() SuspiciousIPThrottlingStage {
	if u == nil || u.Stage == nil {
		return SuspiciousIPThrottlingStage{}
	}
	return *u.Stage
}

func (u *UpdateSuspiciousIPThrottlingSettingsResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateSuspiciousIPThrottlingSettingsResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetEnabled sets the Enabled field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateSuspiciousIPThrottlingSettingsResponseContent) SetEnabled(enabled *bool) {
	u.Enabled = enabled
	u.require(updateSuspiciousIPThrottlingSettingsResponseContentFieldEnabled)
}

// SetShields sets the Shields field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateSuspiciousIPThrottlingSettingsResponseContent) SetShields(shields []SuspiciousIPThrottlingShieldsEnum) {
	u.Shields = shields
	u.require(updateSuspiciousIPThrottlingSettingsResponseContentFieldShields)
}

// SetAllowlist sets the Allowlist field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateSuspiciousIPThrottlingSettingsResponseContent) SetAllowlist(allowlist *SuspiciousIPThrottlingAllowlist) {
	u.Allowlist = allowlist
	u.require(updateSuspiciousIPThrottlingSettingsResponseContentFieldAllowlist)
}

// SetStage sets the Stage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateSuspiciousIPThrottlingSettingsResponseContent) SetStage(stage *SuspiciousIPThrottlingStage) {
	u.Stage = stage
	u.require(updateSuspiciousIPThrottlingSettingsResponseContentFieldStage)
}

func (u *UpdateSuspiciousIPThrottlingSettingsResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateSuspiciousIPThrottlingSettingsResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateSuspiciousIPThrottlingSettingsResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateSuspiciousIPThrottlingSettingsResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateSuspiciousIPThrottlingSettingsResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateSuspiciousIPThrottlingSettingsResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	updateTenantSettingsResponseContentFieldChangePassword                             = big.NewInt(1 << 0)
	updateTenantSettingsResponseContentFieldGuardianMfaPage                            = big.NewInt(1 << 1)
	updateTenantSettingsResponseContentFieldDefaultAudience                            = big.NewInt(1 << 2)
	updateTenantSettingsResponseContentFieldDefaultDirectory                           = big.NewInt(1 << 3)
	updateTenantSettingsResponseContentFieldErrorPage                                  = big.NewInt(1 << 4)
	updateTenantSettingsResponseContentFieldDeviceFlow                                 = big.NewInt(1 << 5)
	updateTenantSettingsResponseContentFieldDefaultTokenQuota                          = big.NewInt(1 << 6)
	updateTenantSettingsResponseContentFieldFlags                                      = big.NewInt(1 << 7)
	updateTenantSettingsResponseContentFieldFriendlyName                               = big.NewInt(1 << 8)
	updateTenantSettingsResponseContentFieldPictureURL                                 = big.NewInt(1 << 9)
	updateTenantSettingsResponseContentFieldSupportEmail                               = big.NewInt(1 << 10)
	updateTenantSettingsResponseContentFieldSupportURL                                 = big.NewInt(1 << 11)
	updateTenantSettingsResponseContentFieldAllowedLogoutURLs                          = big.NewInt(1 << 12)
	updateTenantSettingsResponseContentFieldSessionLifetime                            = big.NewInt(1 << 13)
	updateTenantSettingsResponseContentFieldIdleSessionLifetime                        = big.NewInt(1 << 14)
	updateTenantSettingsResponseContentFieldEphemeralSessionLifetime                   = big.NewInt(1 << 15)
	updateTenantSettingsResponseContentFieldIdleEphemeralSessionLifetime               = big.NewInt(1 << 16)
	updateTenantSettingsResponseContentFieldSandboxVersion                             = big.NewInt(1 << 17)
	updateTenantSettingsResponseContentFieldLegacySandboxVersion                       = big.NewInt(1 << 18)
	updateTenantSettingsResponseContentFieldSandboxVersionsAvailable                   = big.NewInt(1 << 19)
	updateTenantSettingsResponseContentFieldDefaultRedirectionURI                      = big.NewInt(1 << 20)
	updateTenantSettingsResponseContentFieldEnabledLocales                             = big.NewInt(1 << 21)
	updateTenantSettingsResponseContentFieldSessionCookie                              = big.NewInt(1 << 22)
	updateTenantSettingsResponseContentFieldSessions                                   = big.NewInt(1 << 23)
	updateTenantSettingsResponseContentFieldOidcLogout                                 = big.NewInt(1 << 24)
	updateTenantSettingsResponseContentFieldAllowOrganizationNameInAuthenticationAPI   = big.NewInt(1 << 25)
	updateTenantSettingsResponseContentFieldCustomizeMfaInPostloginAction              = big.NewInt(1 << 26)
	updateTenantSettingsResponseContentFieldAcrValuesSupported                         = big.NewInt(1 << 27)
	updateTenantSettingsResponseContentFieldMtls                                       = big.NewInt(1 << 28)
	updateTenantSettingsResponseContentFieldPushedAuthorizationRequestsSupported       = big.NewInt(1 << 29)
	updateTenantSettingsResponseContentFieldAuthorizationResponseIssParameterSupported = big.NewInt(1 << 30)
)

type UpdateTenantSettingsResponseContent struct {
	ChangePassword  *TenantSettingsPasswordPage `json:"change_password,omitempty" url:"change_password,omitempty"`
	GuardianMfaPage *TenantSettingsGuardianPage `json:"guardian_mfa_page,omitempty" url:"guardian_mfa_page,omitempty"`
	// Default audience for API authorization.
	DefaultAudience *string `json:"default_audience,omitempty" url:"default_audience,omitempty"`
	// Name of connection used for password grants at the `/token`endpoint. The following connection types are supported: LDAP, AD, Database Connections, Passwordless, Windows Azure Active Directory, ADFS.
	DefaultDirectory  *string                   `json:"default_directory,omitempty" url:"default_directory,omitempty"`
	ErrorPage         *TenantSettingsErrorPage  `json:"error_page,omitempty" url:"error_page,omitempty"`
	DeviceFlow        *TenantSettingsDeviceFlow `json:"device_flow,omitempty" url:"device_flow,omitempty"`
	DefaultTokenQuota *DefaultTokenQuota        `json:"default_token_quota,omitempty" url:"default_token_quota,omitempty"`
	Flags             *TenantSettingsFlags      `json:"flags,omitempty" url:"flags,omitempty"`
	// Friendly name for this tenant.
	FriendlyName *string `json:"friendly_name,omitempty" url:"friendly_name,omitempty"`
	// URL of logo to be shown for this tenant (recommended size: 150x150)
	PictureURL *string `json:"picture_url,omitempty" url:"picture_url,omitempty"`
	// End-user support email address.
	SupportEmail *string `json:"support_email,omitempty" url:"support_email,omitempty"`
	// End-user support URL.
	SupportURL *string `json:"support_url,omitempty" url:"support_url,omitempty"`
	// URLs that are valid to redirect to after logout from Auth0.
	AllowedLogoutURLs []string `json:"allowed_logout_urls,omitempty" url:"allowed_logout_urls,omitempty"`
	// Number of hours a session will stay valid.
	SessionLifetime *float64 `json:"session_lifetime,omitempty" url:"session_lifetime,omitempty"`
	// Number of hours for which a session can be inactive before the user must log in again.
	IdleSessionLifetime *float64 `json:"idle_session_lifetime,omitempty" url:"idle_session_lifetime,omitempty"`
	// Number of hours an ephemeral (non-persistent) session will stay valid.
	EphemeralSessionLifetime *float64 `json:"ephemeral_session_lifetime,omitempty" url:"ephemeral_session_lifetime,omitempty"`
	// Number of hours for which an ephemeral (non-persistent) session can be inactive before the user must log in again.
	IdleEphemeralSessionLifetime *float64 `json:"idle_ephemeral_session_lifetime,omitempty" url:"idle_ephemeral_session_lifetime,omitempty"`
	// Selected sandbox version for the extensibility environment.
	SandboxVersion *string `json:"sandbox_version,omitempty" url:"sandbox_version,omitempty"`
	// Selected sandbox version for rules and hooks extensibility.
	LegacySandboxVersion *string `json:"legacy_sandbox_version,omitempty" url:"legacy_sandbox_version,omitempty"`
	// Available sandbox versions for the extensibility environment.
	SandboxVersionsAvailable []string `json:"sandbox_versions_available,omitempty" url:"sandbox_versions_available,omitempty"`
	// The default absolute redirection uri, must be https
	DefaultRedirectionURI *string `json:"default_redirection_uri,omitempty" url:"default_redirection_uri,omitempty"`
	// Supported locales for the user interface.
	EnabledLocales []SupportedLocales        `json:"enabled_locales,omitempty" url:"enabled_locales,omitempty"`
	SessionCookie  *SessionCookieSchema      `json:"session_cookie,omitempty" url:"session_cookie,omitempty"`
	Sessions       *TenantSettingsSessions   `json:"sessions,omitempty" url:"sessions,omitempty"`
	OidcLogout     *TenantOidcLogoutSettings `json:"oidc_logout,omitempty" url:"oidc_logout,omitempty"`
	// Whether to accept an organization name instead of an ID on auth endpoints
	AllowOrganizationNameInAuthenticationAPI *bool `json:"allow_organization_name_in_authentication_api,omitempty" url:"allow_organization_name_in_authentication_api,omitempty"`
	// Whether to enable flexible factors for MFA in the PostLogin action
	CustomizeMfaInPostloginAction *bool `json:"customize_mfa_in_postlogin_action,omitempty" url:"customize_mfa_in_postlogin_action,omitempty"`
	// Supported ACR values
	AcrValuesSupported []string            `json:"acr_values_supported,omitempty" url:"acr_values_supported,omitempty"`
	Mtls               *TenantSettingsMtls `json:"mtls,omitempty" url:"mtls,omitempty"`
	// Enables the use of Pushed Authorization Requests
	PushedAuthorizationRequestsSupported *bool `json:"pushed_authorization_requests_supported,omitempty" url:"pushed_authorization_requests_supported,omitempty"`
	// Supports iss parameter in authorization responses
	AuthorizationResponseIssParameterSupported *bool `json:"authorization_response_iss_parameter_supported,omitempty" url:"authorization_response_iss_parameter_supported,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 (u *UpdateTenantSettingsResponseContent) GetChangePassword() TenantSettingsPasswordPage {
	if u == nil || u.ChangePassword == nil {
		return TenantSettingsPasswordPage{}
	}
	return *u.ChangePassword
}

func (u *UpdateTenantSettingsResponseContent) GetGuardianMfaPage() TenantSettingsGuardianPage {
	if u == nil || u.GuardianMfaPage == nil {
		return TenantSettingsGuardianPage{}
	}
	return *u.GuardianMfaPage
}

func (u *UpdateTenantSettingsResponseContent) GetDefaultAudience() string {
	if u == nil || u.DefaultAudience == nil {
		return ""
	}
	return *u.DefaultAudience
}

func (u *UpdateTenantSettingsResponseContent) GetDefaultDirectory() string {
	if u == nil || u.DefaultDirectory == nil {
		return ""
	}
	return *u.DefaultDirectory
}

func (u *UpdateTenantSettingsResponseContent) GetErrorPage() TenantSettingsErrorPage {
	if u == nil || u.ErrorPage == nil {
		return TenantSettingsErrorPage{}
	}
	return *u.ErrorPage
}

func (u *UpdateTenantSettingsResponseContent) GetDeviceFlow() TenantSettingsDeviceFlow {
	if u == nil || u.DeviceFlow == nil {
		return TenantSettingsDeviceFlow{}
	}
	return *u.DeviceFlow
}

func (u *UpdateTenantSettingsResponseContent) GetDefaultTokenQuota() DefaultTokenQuota {
	if u == nil || u.DefaultTokenQuota == nil {
		return DefaultTokenQuota{}
	}
	return *u.DefaultTokenQuota
}

func (u *UpdateTenantSettingsResponseContent) GetFlags() TenantSettingsFlags {
	if u == nil || u.Flags == nil {
		return TenantSettingsFlags{}
	}
	return *u.Flags
}

func (u *UpdateTenantSettingsResponseContent) GetFriendlyName() string {
	if u == nil || u.FriendlyName == nil {
		return ""
	}
	return *u.FriendlyName
}

func (u *UpdateTenantSettingsResponseContent) GetPictureURL() string {
	if u == nil || u.PictureURL == nil {
		return ""
	}
	return *u.PictureURL
}

func (u *UpdateTenantSettingsResponseContent) GetSupportEmail() string {
	if u == nil || u.SupportEmail == nil {
		return ""
	}
	return *u.SupportEmail
}

func (u *UpdateTenantSettingsResponseContent) GetSupportURL() string {
	if u == nil || u.SupportURL == nil {
		return ""
	}
	return *u.SupportURL
}

func (u *UpdateTenantSettingsResponseContent) GetAllowedLogoutURLs() []string {
	if u == nil || u.AllowedLogoutURLs == nil {
		return nil
	}
	return u.AllowedLogoutURLs
}

func (u *UpdateTenantSettingsResponseContent) GetSessionLifetime() float64 {
	if u == nil || u.SessionLifetime == nil {
		return 0
	}
	return *u.SessionLifetime
}

func (u *UpdateTenantSettingsResponseContent) GetIdleSessionLifetime() float64 {
	if u == nil || u.IdleSessionLifetime == nil {
		return 0
	}
	return *u.IdleSessionLifetime
}

func (u *UpdateTenantSettingsResponseContent) GetEphemeralSessionLifetime() float64 {
	if u == nil || u.EphemeralSessionLifetime == nil {
		return 0
	}
	return *u.EphemeralSessionLifetime
}

func (u *UpdateTenantSettingsResponseContent) GetIdleEphemeralSessionLifetime() float64 {
	if u == nil || u.IdleEphemeralSessionLifetime == nil {
		return 0
	}
	return *u.IdleEphemeralSessionLifetime
}

func (u *UpdateTenantSettingsResponseContent) GetSandboxVersion() string {
	if u == nil || u.SandboxVersion == nil {
		return ""
	}
	return *u.SandboxVersion
}

func (u *UpdateTenantSettingsResponseContent) GetLegacySandboxVersion() string {
	if u == nil || u.LegacySandboxVersion == nil {
		return ""
	}
	return *u.LegacySandboxVersion
}

func (u *UpdateTenantSettingsResponseContent) GetSandboxVersionsAvailable() []string {
	if u == nil || u.SandboxVersionsAvailable == nil {
		return nil
	}
	return u.SandboxVersionsAvailable
}

func (u *UpdateTenantSettingsResponseContent) GetDefaultRedirectionURI() string {
	if u == nil || u.DefaultRedirectionURI == nil {
		return ""
	}
	return *u.DefaultRedirectionURI
}

func (u *UpdateTenantSettingsResponseContent) GetEnabledLocales() []SupportedLocales {
	if u == nil || u.EnabledLocales == nil {
		return nil
	}
	return u.EnabledLocales
}

func (u *UpdateTenantSettingsResponseContent) GetSessionCookie() SessionCookieSchema {
	if u == nil || u.SessionCookie == nil {
		return SessionCookieSchema{}
	}
	return *u.SessionCookie
}

func (u *UpdateTenantSettingsResponseContent) GetSessions() TenantSettingsSessions {
	if u == nil || u.Sessions == nil {
		return TenantSettingsSessions{}
	}
	return *u.Sessions
}

func (u *UpdateTenantSettingsResponseContent) GetOidcLogout() TenantOidcLogoutSettings {
	if u == nil || u.OidcLogout == nil {
		return TenantOidcLogoutSettings{}
	}
	return *u.OidcLogout
}

func (u *UpdateTenantSettingsResponseContent) GetAllowOrganizationNameInAuthenticationAPI() bool {
	if u == nil || u.AllowOrganizationNameInAuthenticationAPI == nil {
		return false
	}
	return *u.AllowOrganizationNameInAuthenticationAPI
}

func (u *UpdateTenantSettingsResponseContent) GetCustomizeMfaInPostloginAction() bool {
	if u == nil || u.CustomizeMfaInPostloginAction == nil {
		return false
	}
	return *u.CustomizeMfaInPostloginAction
}

func (u *UpdateTenantSettingsResponseContent) GetAcrValuesSupported() []string {
	if u == nil || u.AcrValuesSupported == nil {
		return nil
	}
	return u.AcrValuesSupported
}

func (u *UpdateTenantSettingsResponseContent) GetMtls() TenantSettingsMtls {
	if u == nil || u.Mtls == nil {
		return TenantSettingsMtls{}
	}
	return *u.Mtls
}

func (u *UpdateTenantSettingsResponseContent) GetPushedAuthorizationRequestsSupported() bool {
	if u == nil || u.PushedAuthorizationRequestsSupported == nil {
		return false
	}
	return *u.PushedAuthorizationRequestsSupported
}

func (u *UpdateTenantSettingsResponseContent) GetAuthorizationResponseIssParameterSupported() bool {
	if u == nil || u.AuthorizationResponseIssParameterSupported == nil {
		return false
	}
	return *u.AuthorizationResponseIssParameterSupported
}

func (u *UpdateTenantSettingsResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateTenantSettingsResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetChangePassword sets the ChangePassword field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetChangePassword(changePassword *TenantSettingsPasswordPage) {
	u.ChangePassword = changePassword
	u.require(updateTenantSettingsResponseContentFieldChangePassword)
}

// SetGuardianMfaPage sets the GuardianMfaPage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetGuardianMfaPage(guardianMfaPage *TenantSettingsGuardianPage) {
	u.GuardianMfaPage = guardianMfaPage
	u.require(updateTenantSettingsResponseContentFieldGuardianMfaPage)
}

// SetDefaultAudience sets the DefaultAudience field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetDefaultAudience(defaultAudience *string) {
	u.DefaultAudience = defaultAudience
	u.require(updateTenantSettingsResponseContentFieldDefaultAudience)
}

// SetDefaultDirectory sets the DefaultDirectory field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetDefaultDirectory(defaultDirectory *string) {
	u.DefaultDirectory = defaultDirectory
	u.require(updateTenantSettingsResponseContentFieldDefaultDirectory)
}

// SetErrorPage sets the ErrorPage field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetErrorPage(errorPage *TenantSettingsErrorPage) {
	u.ErrorPage = errorPage
	u.require(updateTenantSettingsResponseContentFieldErrorPage)
}

// SetDeviceFlow sets the DeviceFlow field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetDeviceFlow(deviceFlow *TenantSettingsDeviceFlow) {
	u.DeviceFlow = deviceFlow
	u.require(updateTenantSettingsResponseContentFieldDeviceFlow)
}

// SetDefaultTokenQuota sets the DefaultTokenQuota field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetDefaultTokenQuota(defaultTokenQuota *DefaultTokenQuota) {
	u.DefaultTokenQuota = defaultTokenQuota
	u.require(updateTenantSettingsResponseContentFieldDefaultTokenQuota)
}

// SetFlags sets the Flags field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetFlags(flags *TenantSettingsFlags) {
	u.Flags = flags
	u.require(updateTenantSettingsResponseContentFieldFlags)
}

// SetFriendlyName sets the FriendlyName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetFriendlyName(friendlyName *string) {
	u.FriendlyName = friendlyName
	u.require(updateTenantSettingsResponseContentFieldFriendlyName)
}

// SetPictureURL sets the PictureURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetPictureURL(pictureURL *string) {
	u.PictureURL = pictureURL
	u.require(updateTenantSettingsResponseContentFieldPictureURL)
}

// SetSupportEmail sets the SupportEmail field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetSupportEmail(supportEmail *string) {
	u.SupportEmail = supportEmail
	u.require(updateTenantSettingsResponseContentFieldSupportEmail)
}

// SetSupportURL sets the SupportURL field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetSupportURL(supportURL *string) {
	u.SupportURL = supportURL
	u.require(updateTenantSettingsResponseContentFieldSupportURL)
}

// SetAllowedLogoutURLs sets the AllowedLogoutURLs field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetAllowedLogoutURLs(allowedLogoutURLs []string) {
	u.AllowedLogoutURLs = allowedLogoutURLs
	u.require(updateTenantSettingsResponseContentFieldAllowedLogoutURLs)
}

// SetSessionLifetime sets the SessionLifetime field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetSessionLifetime(sessionLifetime *float64) {
	u.SessionLifetime = sessionLifetime
	u.require(updateTenantSettingsResponseContentFieldSessionLifetime)
}

// SetIdleSessionLifetime sets the IdleSessionLifetime field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetIdleSessionLifetime(idleSessionLifetime *float64) {
	u.IdleSessionLifetime = idleSessionLifetime
	u.require(updateTenantSettingsResponseContentFieldIdleSessionLifetime)
}

// SetEphemeralSessionLifetime sets the EphemeralSessionLifetime field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetEphemeralSessionLifetime(ephemeralSessionLifetime *float64) {
	u.EphemeralSessionLifetime = ephemeralSessionLifetime
	u.require(updateTenantSettingsResponseContentFieldEphemeralSessionLifetime)
}

// SetIdleEphemeralSessionLifetime sets the IdleEphemeralSessionLifetime field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetIdleEphemeralSessionLifetime(idleEphemeralSessionLifetime *float64) {
	u.IdleEphemeralSessionLifetime = idleEphemeralSessionLifetime
	u.require(updateTenantSettingsResponseContentFieldIdleEphemeralSessionLifetime)
}

// SetSandboxVersion sets the SandboxVersion field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetSandboxVersion(sandboxVersion *string) {
	u.SandboxVersion = sandboxVersion
	u.require(updateTenantSettingsResponseContentFieldSandboxVersion)
}

// SetLegacySandboxVersion sets the LegacySandboxVersion field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetLegacySandboxVersion(legacySandboxVersion *string) {
	u.LegacySandboxVersion = legacySandboxVersion
	u.require(updateTenantSettingsResponseContentFieldLegacySandboxVersion)
}

// SetSandboxVersionsAvailable sets the SandboxVersionsAvailable field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetSandboxVersionsAvailable(sandboxVersionsAvailable []string) {
	u.SandboxVersionsAvailable = sandboxVersionsAvailable
	u.require(updateTenantSettingsResponseContentFieldSandboxVersionsAvailable)
}

// SetDefaultRedirectionURI sets the DefaultRedirectionURI field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetDefaultRedirectionURI(defaultRedirectionURI *string) {
	u.DefaultRedirectionURI = defaultRedirectionURI
	u.require(updateTenantSettingsResponseContentFieldDefaultRedirectionURI)
}

// SetEnabledLocales sets the EnabledLocales field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetEnabledLocales(enabledLocales []SupportedLocales) {
	u.EnabledLocales = enabledLocales
	u.require(updateTenantSettingsResponseContentFieldEnabledLocales)
}

// SetSessionCookie sets the SessionCookie field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetSessionCookie(sessionCookie *SessionCookieSchema) {
	u.SessionCookie = sessionCookie
	u.require(updateTenantSettingsResponseContentFieldSessionCookie)
}

// SetSessions sets the Sessions field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetSessions(sessions *TenantSettingsSessions) {
	u.Sessions = sessions
	u.require(updateTenantSettingsResponseContentFieldSessions)
}

// SetOidcLogout sets the OidcLogout field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetOidcLogout(oidcLogout *TenantOidcLogoutSettings) {
	u.OidcLogout = oidcLogout
	u.require(updateTenantSettingsResponseContentFieldOidcLogout)
}

// SetAllowOrganizationNameInAuthenticationAPI sets the AllowOrganizationNameInAuthenticationAPI field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetAllowOrganizationNameInAuthenticationAPI(allowOrganizationNameInAuthenticationAPI *bool) {
	u.AllowOrganizationNameInAuthenticationAPI = allowOrganizationNameInAuthenticationAPI
	u.require(updateTenantSettingsResponseContentFieldAllowOrganizationNameInAuthenticationAPI)
}

// SetCustomizeMfaInPostloginAction sets the CustomizeMfaInPostloginAction field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetCustomizeMfaInPostloginAction(customizeMfaInPostloginAction *bool) {
	u.CustomizeMfaInPostloginAction = customizeMfaInPostloginAction
	u.require(updateTenantSettingsResponseContentFieldCustomizeMfaInPostloginAction)
}

// SetAcrValuesSupported sets the AcrValuesSupported field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetAcrValuesSupported(acrValuesSupported []string) {
	u.AcrValuesSupported = acrValuesSupported
	u.require(updateTenantSettingsResponseContentFieldAcrValuesSupported)
}

// SetMtls sets the Mtls field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetMtls(mtls *TenantSettingsMtls) {
	u.Mtls = mtls
	u.require(updateTenantSettingsResponseContentFieldMtls)
}

// SetPushedAuthorizationRequestsSupported sets the PushedAuthorizationRequestsSupported field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetPushedAuthorizationRequestsSupported(pushedAuthorizationRequestsSupported *bool) {
	u.PushedAuthorizationRequestsSupported = pushedAuthorizationRequestsSupported
	u.require(updateTenantSettingsResponseContentFieldPushedAuthorizationRequestsSupported)
}

// SetAuthorizationResponseIssParameterSupported sets the AuthorizationResponseIssParameterSupported field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTenantSettingsResponseContent) SetAuthorizationResponseIssParameterSupported(authorizationResponseIssParameterSupported *bool) {
	u.AuthorizationResponseIssParameterSupported = authorizationResponseIssParameterSupported
	u.require(updateTenantSettingsResponseContentFieldAuthorizationResponseIssParameterSupported)
}

func (u *UpdateTenantSettingsResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateTenantSettingsResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateTenantSettingsResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateTenantSettingsResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateTenantSettingsResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateTenantSettingsResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	updateTokenQuotaFieldClientCredentials = big.NewInt(1 << 0)
)

type UpdateTokenQuota struct {
	ClientCredentials *TokenQuotaClientCredentials `json:"client_credentials" url:"client_credentials"`

	// 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 (u *UpdateTokenQuota) GetClientCredentials() *TokenQuotaClientCredentials {
	if u == nil {
		return nil
	}
	return u.ClientCredentials
}

func (u *UpdateTokenQuota) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateTokenQuota) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetClientCredentials sets the ClientCredentials field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateTokenQuota) SetClientCredentials(clientCredentials *TokenQuotaClientCredentials) {
	u.ClientCredentials = clientCredentials
	u.require(updateTokenQuotaFieldClientCredentials)
}

func (u *UpdateTokenQuota) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateTokenQuota
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateTokenQuota(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateTokenQuota) MarshalJSON() ([]byte, error) {
	type embed UpdateTokenQuota
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateTokenQuota) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

type UpdateUniversalLoginTemplateRequestContent struct {
	String                                             string
	UpdateUniversalLoginTemplateRequestContentTemplate *UpdateUniversalLoginTemplateRequestContentTemplate

	typ string
}

func (u *UpdateUniversalLoginTemplateRequestContent) GetString() string {
	if u == nil {
		return ""
	}
	return u.String
}

func (u *UpdateUniversalLoginTemplateRequestContent) GetUpdateUniversalLoginTemplateRequestContentTemplate() *UpdateUniversalLoginTemplateRequestContentTemplate {
	if u == nil {
		return nil
	}
	return u.UpdateUniversalLoginTemplateRequestContentTemplate
}

func (u *UpdateUniversalLoginTemplateRequestContent) UnmarshalJSON(data []byte) error {
	var valueString string
	if err := json.Unmarshal(data, &valueString); err == nil {
		u.typ = "String"
		u.String = valueString
		return nil
	}
	valueUpdateUniversalLoginTemplateRequestContentTemplate := new(UpdateUniversalLoginTemplateRequestContentTemplate)
	if err := json.Unmarshal(data, &valueUpdateUniversalLoginTemplateRequestContentTemplate); err == nil {
		u.typ = "UpdateUniversalLoginTemplateRequestContentTemplate"
		u.UpdateUniversalLoginTemplateRequestContentTemplate = valueUpdateUniversalLoginTemplateRequestContentTemplate
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, u)
}

func (u UpdateUniversalLoginTemplateRequestContent) MarshalJSON() ([]byte, error) {
	if u.typ == "String" || u.String != "" {
		return json.Marshal(u.String)
	}
	if u.typ == "UpdateUniversalLoginTemplateRequestContentTemplate" || u.UpdateUniversalLoginTemplateRequestContentTemplate != nil {
		return json.Marshal(u.UpdateUniversalLoginTemplateRequestContentTemplate)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", u)
}

type UpdateUniversalLoginTemplateRequestContentVisitor interface {
	VisitString(string) error
	VisitUpdateUniversalLoginTemplateRequestContentTemplate(*UpdateUniversalLoginTemplateRequestContentTemplate) error
}

func (u *UpdateUniversalLoginTemplateRequestContent) Accept(visitor UpdateUniversalLoginTemplateRequestContentVisitor) error {
	if u.typ == "String" || u.String != "" {
		return visitor.VisitString(u.String)
	}
	if u.typ == "UpdateUniversalLoginTemplateRequestContentTemplate" || u.UpdateUniversalLoginTemplateRequestContentTemplate != nil {
		return visitor.VisitUpdateUniversalLoginTemplateRequestContentTemplate(u.UpdateUniversalLoginTemplateRequestContentTemplate)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", u)
}

var (
	updateUniversalLoginTemplateRequestContentTemplateFieldTemplate = big.NewInt(1 << 0)
)

type UpdateUniversalLoginTemplateRequestContentTemplate struct {
	Template string `json:"template" url:"template"`

	// 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 (u *UpdateUniversalLoginTemplateRequestContentTemplate) GetTemplate() string {
	if u == nil {
		return ""
	}
	return u.Template
}

func (u *UpdateUniversalLoginTemplateRequestContentTemplate) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateUniversalLoginTemplateRequestContentTemplate) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetTemplate sets the Template field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateUniversalLoginTemplateRequestContentTemplate) SetTemplate(template string) {
	u.Template = template
	u.require(updateUniversalLoginTemplateRequestContentTemplateFieldTemplate)
}

func (u *UpdateUniversalLoginTemplateRequestContentTemplate) UnmarshalJSON(data []byte) error {
	type unmarshaler UpdateUniversalLoginTemplateRequestContentTemplate
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UpdateUniversalLoginTemplateRequestContentTemplate(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateUniversalLoginTemplateRequestContentTemplate) MarshalJSON() ([]byte, error) {
	type embed UpdateUniversalLoginTemplateRequestContentTemplate
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateUniversalLoginTemplateRequestContentTemplate) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

// The successfully created authentication method.
var (
	updateUserAuthenticationMethodResponseContentFieldID                            = big.NewInt(1 << 0)
	updateUserAuthenticationMethodResponseContentFieldType                          = big.NewInt(1 << 1)
	updateUserAuthenticationMethodResponseContentFieldName                          = big.NewInt(1 << 2)
	updateUserAuthenticationMethodResponseContentFieldTotpSecret                    = big.NewInt(1 << 3)
	updateUserAuthenticationMethodResponseContentFieldPhoneNumber                   = big.NewInt(1 << 4)
	updateUserAuthenticationMethodResponseContentFieldEmail                         = big.NewInt(1 << 5)
	updateUserAuthenticationMethodResponseContentFieldAuthenticationMethods         = big.NewInt(1 << 6)
	updateUserAuthenticationMethodResponseContentFieldPreferredAuthenticationMethod = big.NewInt(1 << 7)
	updateUserAuthenticationMethodResponseContentFieldKeyID                         = big.NewInt(1 << 8)
	updateUserAuthenticationMethodResponseContentFieldPublicKey                     = big.NewInt(1 << 9)
	updateUserAuthenticationMethodResponseContentFieldAaguid                        = big.NewInt(1 << 10)
	updateUserAuthenticationMethodResponseContentFieldRelyingPartyIdentifier        = big.NewInt(1 << 11)
	updateUserAuthenticationMethodResponseContentFieldCreatedAt                     = big.NewInt(1 << 12)
)

type UpdateUserAuthenticationMethodResponseContent struct {
	// The ID of the newly created authentication method (automatically generated by the application)
	ID   *string                             `json:"id,omitempty" url:"id,omitempty"`
	Type CreatedAuthenticationMethodTypeEnum `json:"type" url:"type"`
	// A human-readable label to identify the authentication method.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Base32 encoded secret for TOTP generation
	TotpSecret *string `json:"totp_secret,omitempty" url:"totp_secret,omitempty"`
	// Applies to phone authentication methods only. The destination phone number used to send verification codes via text and voice.
	PhoneNumber *string `json:"phone_number,omitempty" url:"phone_number,omitempty"`
	// Applies to email authentication methods only. The email address used to send verification messages.
	Email                         *string                               `json:"email,omitempty" url:"email,omitempty"`
	AuthenticationMethods         []*UserAuthenticationMethodProperties `json:"authentication_methods,omitempty" url:"authentication_methods,omitempty"`
	PreferredAuthenticationMethod *PreferredAuthenticationMethodEnum    `json:"preferred_authentication_method,omitempty" url:"preferred_authentication_method,omitempty"`
	// Applies to webauthn authentication methods only. The id of the credential.
	KeyID *string `json:"key_id,omitempty" url:"key_id,omitempty"`
	// Applies to webauthn authentication methods only. The public key.
	PublicKey *string `json:"public_key,omitempty" url:"public_key,omitempty"`
	// Applies to passkey authentication methods only. Authenticator Attestation Globally Unique Identifier.
	Aaguid *string `json:"aaguid,omitempty" url:"aaguid,omitempty"`
	// Applies to webauthn authentication methods only. The relying party identifier.
	RelyingPartyIdentifier *string `json:"relying_party_identifier,omitempty" url:"relying_party_identifier,omitempty"`
	// Authentication method creation date
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,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 (u *UpdateUserAuthenticationMethodResponseContent) GetID() string {
	if u == nil || u.ID == nil {
		return ""
	}
	return *u.ID
}

func (u *UpdateUserAuthenticationMethodResponseContent) GetType() CreatedAuthenticationMethodTypeEnum {
	if u == nil {
		return ""
	}
	return u.Type
}

func (u *UpdateUserAuthenticationMethodResponseContent) GetName() string {
	if u == nil || u.Name == nil {
		return ""
	}
	return *u.Name
}

func (u *UpdateUserAuthenticationMethodResponseContent) GetTotpSecret() string {
	if u == nil || u.TotpSecret == nil {
		return ""
	}
	return *u.TotpSecret
}

func (u *UpdateUserAuthenticationMethodResponseContent) GetPhoneNumber() string {
	if u == nil || u.PhoneNumber == nil {
		return ""
	}
	return *u.PhoneNumber
}

func (u *UpdateUserAuthenticationMethodResponseContent) GetEmail() string {
	if u == nil || u.Email == nil {
		return ""
	}
	return *u.Email
}

func (u *UpdateUserAuthenticationMethodResponseContent) GetAuthenticationMethods() []*UserAuthenticationMethodProperties {
	if u == nil || u.AuthenticationMethods == nil {
		return nil
	}
	return u.AuthenticationMethods
}

func (u *UpdateUserAuthenticationMethodResponseContent) GetPreferredAuthenticationMethod() PreferredAuthenticationMethodEnum {
	if u == nil || u.PreferredAuthenticationMethod == nil {
		return ""
	}
	return *u.PreferredAuthenticationMethod
}

func (u *UpdateUserAuthenticationMethodResponseContent) GetKeyID() string {
	if u == nil || u.KeyID == nil {
		return ""
	}
	return *u.KeyID
}

func (u *UpdateUserAuthenticationMethodResponseContent) GetPublicKey() string {
	if u == nil || u.PublicKey == nil {
		return ""
	}
	return *u.PublicKey
}

func (u *UpdateUserAuthenticationMethodResponseContent) GetAaguid() string {
	if u == nil || u.Aaguid == nil {
		return ""
	}
	return *u.Aaguid
}

func (u *UpdateUserAuthenticationMethodResponseContent) GetRelyingPartyIdentifier() string {
	if u == nil || u.RelyingPartyIdentifier == nil {
		return ""
	}
	return *u.RelyingPartyIdentifier
}

func (u *UpdateUserAuthenticationMethodResponseContent) GetCreatedAt() time.Time {
	if u == nil || u.CreatedAt == nil {
		return time.Time{}
	}
	return *u.CreatedAt
}

func (u *UpdateUserAuthenticationMethodResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateUserAuthenticationMethodResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.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 (u *UpdateUserAuthenticationMethodResponseContent) SetID(id *string) {
	u.ID = id
	u.require(updateUserAuthenticationMethodResponseContentFieldID)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateUserAuthenticationMethodResponseContent) SetType(type_ CreatedAuthenticationMethodTypeEnum) {
	u.Type = type_
	u.require(updateUserAuthenticationMethodResponseContentFieldType)
}

// 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 (u *UpdateUserAuthenticationMethodResponseContent) SetName(name *string) {
	u.Name = name
	u.require(updateUserAuthenticationMethodResponseContentFieldName)
}

// SetTotpSecret sets the TotpSecret field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateUserAuthenticationMethodResponseContent) SetTotpSecret(totpSecret *string) {
	u.TotpSecret = totpSecret
	u.require(updateUserAuthenticationMethodResponseContentFieldTotpSecret)
}

// SetPhoneNumber sets the PhoneNumber field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateUserAuthenticationMethodResponseContent) SetPhoneNumber(phoneNumber *string) {
	u.PhoneNumber = phoneNumber
	u.require(updateUserAuthenticationMethodResponseContentFieldPhoneNumber)
}

// SetEmail sets the Email field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateUserAuthenticationMethodResponseContent) SetEmail(email *string) {
	u.Email = email
	u.require(updateUserAuthenticationMethodResponseContentFieldEmail)
}

// SetAuthenticationMethods sets the AuthenticationMethods field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateUserAuthenticationMethodResponseContent) SetAuthenticationMethods(authenticationMethods []*UserAuthenticationMethodProperties) {
	u.AuthenticationMethods = authenticationMethods
	u.require(updateUserAuthenticationMethodResponseContentFieldAuthenticationMethods)
}

// SetPreferredAuthenticationMethod sets the PreferredAuthenticationMethod field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateUserAuthenticationMethodResponseContent) SetPreferredAuthenticationMethod(preferredAuthenticationMethod *PreferredAuthenticationMethodEnum) {
	u.PreferredAuthenticationMethod = preferredAuthenticationMethod
	u.require(updateUserAuthenticationMethodResponseContentFieldPreferredAuthenticationMethod)
}

// SetKeyID sets the KeyID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateUserAuthenticationMethodResponseContent) SetKeyID(keyID *string) {
	u.KeyID = keyID
	u.require(updateUserAuthenticationMethodResponseContentFieldKeyID)
}

// SetPublicKey sets the PublicKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateUserAuthenticationMethodResponseContent) SetPublicKey(publicKey *string) {
	u.PublicKey = publicKey
	u.require(updateUserAuthenticationMethodResponseContentFieldPublicKey)
}

// SetAaguid sets the Aaguid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateUserAuthenticationMethodResponseContent) SetAaguid(aaguid *string) {
	u.Aaguid = aaguid
	u.require(updateUserAuthenticationMethodResponseContentFieldAaguid)
}

// SetRelyingPartyIdentifier sets the RelyingPartyIdentifier field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateUserAuthenticationMethodResponseContent) SetRelyingPartyIdentifier(relyingPartyIdentifier *string) {
	u.RelyingPartyIdentifier = relyingPartyIdentifier
	u.require(updateUserAuthenticationMethodResponseContentFieldRelyingPartyIdentifier)
}

// 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 (u *UpdateUserAuthenticationMethodResponseContent) SetCreatedAt(createdAt *time.Time) {
	u.CreatedAt = createdAt
	u.require(updateUserAuthenticationMethodResponseContentFieldCreatedAt)
}

func (u *UpdateUserAuthenticationMethodResponseContent) UnmarshalJSON(data []byte) error {
	type embed UpdateUserAuthenticationMethodResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
	}{
		embed: embed(*u),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*u = UpdateUserAuthenticationMethodResponseContent(unmarshaler.embed)
	u.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateUserAuthenticationMethodResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateUserAuthenticationMethodResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
	}{
		embed:     embed(*u),
		CreatedAt: internal.NewOptionalDateTime(u.CreatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateUserAuthenticationMethodResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	updateVerifiableCredentialTemplateResponseContentFieldID                         = big.NewInt(1 << 0)
	updateVerifiableCredentialTemplateResponseContentFieldName                       = big.NewInt(1 << 1)
	updateVerifiableCredentialTemplateResponseContentFieldType                       = big.NewInt(1 << 2)
	updateVerifiableCredentialTemplateResponseContentFieldDialect                    = big.NewInt(1 << 3)
	updateVerifiableCredentialTemplateResponseContentFieldPresentation               = big.NewInt(1 << 4)
	updateVerifiableCredentialTemplateResponseContentFieldCustomCertificateAuthority = big.NewInt(1 << 5)
	updateVerifiableCredentialTemplateResponseContentFieldWellKnownTrustedIssuers    = big.NewInt(1 << 6)
	updateVerifiableCredentialTemplateResponseContentFieldCreatedAt                  = big.NewInt(1 << 7)
	updateVerifiableCredentialTemplateResponseContentFieldUpdatedAt                  = big.NewInt(1 << 8)
)

type UpdateVerifiableCredentialTemplateResponseContent struct {
	// The id of the template.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name of the template.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// The type of the template.
	Type *string `json:"type,omitempty" url:"type,omitempty"`
	// The dialect of the template.
	Dialect      *string                 `json:"dialect,omitempty" url:"dialect,omitempty"`
	Presentation *MdlPresentationRequest `json:"presentation,omitempty" url:"presentation,omitempty"`
	// The custom certificate authority.
	CustomCertificateAuthority *string `json:"custom_certificate_authority,omitempty" url:"custom_certificate_authority,omitempty"`
	// The well-known trusted issuers, comma separated.
	WellKnownTrustedIssuers *string `json:"well_known_trusted_issuers,omitempty" url:"well_known_trusted_issuers,omitempty"`
	// The date and time the template was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The date and time the template was created.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (u *UpdateVerifiableCredentialTemplateResponseContent) GetID() string {
	if u == nil || u.ID == nil {
		return ""
	}
	return *u.ID
}

func (u *UpdateVerifiableCredentialTemplateResponseContent) GetName() string {
	if u == nil || u.Name == nil {
		return ""
	}
	return *u.Name
}

func (u *UpdateVerifiableCredentialTemplateResponseContent) GetType() string {
	if u == nil || u.Type == nil {
		return ""
	}
	return *u.Type
}

func (u *UpdateVerifiableCredentialTemplateResponseContent) GetDialect() string {
	if u == nil || u.Dialect == nil {
		return ""
	}
	return *u.Dialect
}

func (u *UpdateVerifiableCredentialTemplateResponseContent) GetPresentation() MdlPresentationRequest {
	if u == nil || u.Presentation == nil {
		return MdlPresentationRequest{}
	}
	return *u.Presentation
}

func (u *UpdateVerifiableCredentialTemplateResponseContent) GetCustomCertificateAuthority() string {
	if u == nil || u.CustomCertificateAuthority == nil {
		return ""
	}
	return *u.CustomCertificateAuthority
}

func (u *UpdateVerifiableCredentialTemplateResponseContent) GetWellKnownTrustedIssuers() string {
	if u == nil || u.WellKnownTrustedIssuers == nil {
		return ""
	}
	return *u.WellKnownTrustedIssuers
}

func (u *UpdateVerifiableCredentialTemplateResponseContent) GetCreatedAt() time.Time {
	if u == nil || u.CreatedAt == nil {
		return time.Time{}
	}
	return *u.CreatedAt
}

func (u *UpdateVerifiableCredentialTemplateResponseContent) GetUpdatedAt() time.Time {
	if u == nil || u.UpdatedAt == nil {
		return time.Time{}
	}
	return *u.UpdatedAt
}

func (u *UpdateVerifiableCredentialTemplateResponseContent) GetExtraProperties() map[string]interface{} {
	return u.ExtraProperties
}

func (u *UpdateVerifiableCredentialTemplateResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.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 (u *UpdateVerifiableCredentialTemplateResponseContent) SetID(id *string) {
	u.ID = id
	u.require(updateVerifiableCredentialTemplateResponseContentFieldID)
}

// 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 (u *UpdateVerifiableCredentialTemplateResponseContent) SetName(name *string) {
	u.Name = name
	u.require(updateVerifiableCredentialTemplateResponseContentFieldName)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateVerifiableCredentialTemplateResponseContent) SetType(type_ *string) {
	u.Type = type_
	u.require(updateVerifiableCredentialTemplateResponseContentFieldType)
}

// SetDialect sets the Dialect field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateVerifiableCredentialTemplateResponseContent) SetDialect(dialect *string) {
	u.Dialect = dialect
	u.require(updateVerifiableCredentialTemplateResponseContentFieldDialect)
}

// SetPresentation sets the Presentation field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateVerifiableCredentialTemplateResponseContent) SetPresentation(presentation *MdlPresentationRequest) {
	u.Presentation = presentation
	u.require(updateVerifiableCredentialTemplateResponseContentFieldPresentation)
}

// SetCustomCertificateAuthority sets the CustomCertificateAuthority field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateVerifiableCredentialTemplateResponseContent) SetCustomCertificateAuthority(customCertificateAuthority *string) {
	u.CustomCertificateAuthority = customCertificateAuthority
	u.require(updateVerifiableCredentialTemplateResponseContentFieldCustomCertificateAuthority)
}

// SetWellKnownTrustedIssuers sets the WellKnownTrustedIssuers field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UpdateVerifiableCredentialTemplateResponseContent) SetWellKnownTrustedIssuers(wellKnownTrustedIssuers *string) {
	u.WellKnownTrustedIssuers = wellKnownTrustedIssuers
	u.require(updateVerifiableCredentialTemplateResponseContentFieldWellKnownTrustedIssuers)
}

// 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 (u *UpdateVerifiableCredentialTemplateResponseContent) SetCreatedAt(createdAt *time.Time) {
	u.CreatedAt = createdAt
	u.require(updateVerifiableCredentialTemplateResponseContentFieldCreatedAt)
}

// 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 (u *UpdateVerifiableCredentialTemplateResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	u.UpdatedAt = updatedAt
	u.require(updateVerifiableCredentialTemplateResponseContentFieldUpdatedAt)
}

func (u *UpdateVerifiableCredentialTemplateResponseContent) UnmarshalJSON(data []byte) error {
	type embed UpdateVerifiableCredentialTemplateResponseContent
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*u),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*u = UpdateVerifiableCredentialTemplateResponseContent(unmarshaler.embed)
	u.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	u.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.ExtraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateVerifiableCredentialTemplateResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateVerifiableCredentialTemplateResponseContent
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*u),
		CreatedAt: internal.NewOptionalDateTime(u.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(u.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, u.ExtraProperties)
}

func (u *UpdateVerifiableCredentialTemplateResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	userAuthenticationMethodFieldID                            = big.NewInt(1 << 0)
	userAuthenticationMethodFieldType                          = big.NewInt(1 << 1)
	userAuthenticationMethodFieldConfirmed                     = big.NewInt(1 << 2)
	userAuthenticationMethodFieldName                          = big.NewInt(1 << 3)
	userAuthenticationMethodFieldAuthenticationMethods         = big.NewInt(1 << 4)
	userAuthenticationMethodFieldPreferredAuthenticationMethod = big.NewInt(1 << 5)
	userAuthenticationMethodFieldLinkID                        = big.NewInt(1 << 6)
	userAuthenticationMethodFieldPhoneNumber                   = big.NewInt(1 << 7)
	userAuthenticationMethodFieldEmail                         = big.NewInt(1 << 8)
	userAuthenticationMethodFieldKeyID                         = big.NewInt(1 << 9)
	userAuthenticationMethodFieldPublicKey                     = big.NewInt(1 << 10)
	userAuthenticationMethodFieldCreatedAt                     = big.NewInt(1 << 11)
	userAuthenticationMethodFieldEnrolledAt                    = big.NewInt(1 << 12)
	userAuthenticationMethodFieldLastAuthAt                    = big.NewInt(1 << 13)
	userAuthenticationMethodFieldCredentialDeviceType          = big.NewInt(1 << 14)
	userAuthenticationMethodFieldCredentialBackedUp            = big.NewInt(1 << 15)
	userAuthenticationMethodFieldIdentityUserID                = big.NewInt(1 << 16)
	userAuthenticationMethodFieldUserAgent                     = big.NewInt(1 << 17)
	userAuthenticationMethodFieldAaguid                        = big.NewInt(1 << 18)
	userAuthenticationMethodFieldRelyingPartyIdentifier        = big.NewInt(1 << 19)
)

type UserAuthenticationMethod struct {
	// The ID of the authentication method (auto generated)
	ID   string                       `json:"id" url:"id"`
	Type AuthenticationMethodTypeEnum `json:"type" url:"type"`
	// The authentication method status
	Confirmed *bool `json:"confirmed,omitempty" url:"confirmed,omitempty"`
	// A human-readable label to identify the authentication method
	Name                          *string                               `json:"name,omitempty" url:"name,omitempty"`
	AuthenticationMethods         []*UserAuthenticationMethodProperties `json:"authentication_methods,omitempty" url:"authentication_methods,omitempty"`
	PreferredAuthenticationMethod *PreferredAuthenticationMethodEnum    `json:"preferred_authentication_method,omitempty" url:"preferred_authentication_method,omitempty"`
	// The ID of a linked authentication method. Linked authentication methods will be deleted together.
	LinkID *string `json:"link_id,omitempty" url:"link_id,omitempty"`
	// Applies to phone authentication methods only. The destination phone number used to send verification codes via text and voice.
	PhoneNumber *string `json:"phone_number,omitempty" url:"phone_number,omitempty"`
	// Applies to email and email-verification authentication methods only. The email address used to send verification messages.
	Email *string `json:"email,omitempty" url:"email,omitempty"`
	// Applies to webauthn authentication methods only. The ID of the generated credential.
	KeyID *string `json:"key_id,omitempty" url:"key_id,omitempty"`
	// Applies to webauthn authentication methods only. The public key.
	PublicKey *string `json:"public_key,omitempty" url:"public_key,omitempty"`
	// Authenticator creation date
	CreatedAt time.Time `json:"created_at" url:"created_at"`
	// Enrollment date
	EnrolledAt *time.Time `json:"enrolled_at,omitempty" url:"enrolled_at,omitempty"`
	// Last authentication
	LastAuthAt *time.Time `json:"last_auth_at,omitempty" url:"last_auth_at,omitempty"`
	// Applies to passkeys only. The kind of device the credential is stored on as defined by backup eligibility. "single_device" credentials cannot be backed up and synced to another device, "multi_device" credentials can be backed up if enabled by the end-user.
	CredentialDeviceType *string `json:"credential_device_type,omitempty" url:"credential_device_type,omitempty"`
	// Applies to passkeys only. Whether the credential was backed up.
	CredentialBackedUp *bool `json:"credential_backed_up,omitempty" url:"credential_backed_up,omitempty"`
	// Applies to passkeys only. The ID of the user identity linked with the authentication method.
	IdentityUserID *string `json:"identity_user_id,omitempty" url:"identity_user_id,omitempty"`
	// Applies to passkeys only. The user-agent of the browser used to create the passkey.
	UserAgent *string `json:"user_agent,omitempty" url:"user_agent,omitempty"`
	// Applies to passkey authentication methods only. Authenticator Attestation Globally Unique Identifier.
	Aaguid *string `json:"aaguid,omitempty" url:"aaguid,omitempty"`
	// Applies to webauthn/passkey authentication methods only. The credential's relying party identifier.
	RelyingPartyIdentifier *string `json:"relying_party_identifier,omitempty" url:"relying_party_identifier,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 (u *UserAuthenticationMethod) GetID() string {
	if u == nil {
		return ""
	}
	return u.ID
}

func (u *UserAuthenticationMethod) GetType() AuthenticationMethodTypeEnum {
	if u == nil {
		return ""
	}
	return u.Type
}

func (u *UserAuthenticationMethod) GetConfirmed() bool {
	if u == nil || u.Confirmed == nil {
		return false
	}
	return *u.Confirmed
}

func (u *UserAuthenticationMethod) GetName() string {
	if u == nil || u.Name == nil {
		return ""
	}
	return *u.Name
}

func (u *UserAuthenticationMethod) GetAuthenticationMethods() []*UserAuthenticationMethodProperties {
	if u == nil || u.AuthenticationMethods == nil {
		return nil
	}
	return u.AuthenticationMethods
}

func (u *UserAuthenticationMethod) GetPreferredAuthenticationMethod() PreferredAuthenticationMethodEnum {
	if u == nil || u.PreferredAuthenticationMethod == nil {
		return ""
	}
	return *u.PreferredAuthenticationMethod
}

func (u *UserAuthenticationMethod) GetLinkID() string {
	if u == nil || u.LinkID == nil {
		return ""
	}
	return *u.LinkID
}

func (u *UserAuthenticationMethod) GetPhoneNumber() string {
	if u == nil || u.PhoneNumber == nil {
		return ""
	}
	return *u.PhoneNumber
}

func (u *UserAuthenticationMethod) GetEmail() string {
	if u == nil || u.Email == nil {
		return ""
	}
	return *u.Email
}

func (u *UserAuthenticationMethod) GetKeyID() string {
	if u == nil || u.KeyID == nil {
		return ""
	}
	return *u.KeyID
}

func (u *UserAuthenticationMethod) GetPublicKey() string {
	if u == nil || u.PublicKey == nil {
		return ""
	}
	return *u.PublicKey
}

func (u *UserAuthenticationMethod) GetCreatedAt() time.Time {
	if u == nil {
		return time.Time{}
	}
	return u.CreatedAt
}

func (u *UserAuthenticationMethod) GetEnrolledAt() time.Time {
	if u == nil || u.EnrolledAt == nil {
		return time.Time{}
	}
	return *u.EnrolledAt
}

func (u *UserAuthenticationMethod) GetLastAuthAt() time.Time {
	if u == nil || u.LastAuthAt == nil {
		return time.Time{}
	}
	return *u.LastAuthAt
}

func (u *UserAuthenticationMethod) GetCredentialDeviceType() string {
	if u == nil || u.CredentialDeviceType == nil {
		return ""
	}
	return *u.CredentialDeviceType
}

func (u *UserAuthenticationMethod) GetCredentialBackedUp() bool {
	if u == nil || u.CredentialBackedUp == nil {
		return false
	}
	return *u.CredentialBackedUp
}

func (u *UserAuthenticationMethod) GetIdentityUserID() string {
	if u == nil || u.IdentityUserID == nil {
		return ""
	}
	return *u.IdentityUserID
}

func (u *UserAuthenticationMethod) GetUserAgent() string {
	if u == nil || u.UserAgent == nil {
		return ""
	}
	return *u.UserAgent
}

func (u *UserAuthenticationMethod) GetAaguid() string {
	if u == nil || u.Aaguid == nil {
		return ""
	}
	return *u.Aaguid
}

func (u *UserAuthenticationMethod) GetRelyingPartyIdentifier() string {
	if u == nil || u.RelyingPartyIdentifier == nil {
		return ""
	}
	return *u.RelyingPartyIdentifier
}

func (u *UserAuthenticationMethod) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UserAuthenticationMethod) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.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 (u *UserAuthenticationMethod) SetID(id string) {
	u.ID = id
	u.require(userAuthenticationMethodFieldID)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetType(type_ AuthenticationMethodTypeEnum) {
	u.Type = type_
	u.require(userAuthenticationMethodFieldType)
}

// SetConfirmed sets the Confirmed field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetConfirmed(confirmed *bool) {
	u.Confirmed = confirmed
	u.require(userAuthenticationMethodFieldConfirmed)
}

// 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 (u *UserAuthenticationMethod) SetName(name *string) {
	u.Name = name
	u.require(userAuthenticationMethodFieldName)
}

// SetAuthenticationMethods sets the AuthenticationMethods field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetAuthenticationMethods(authenticationMethods []*UserAuthenticationMethodProperties) {
	u.AuthenticationMethods = authenticationMethods
	u.require(userAuthenticationMethodFieldAuthenticationMethods)
}

// SetPreferredAuthenticationMethod sets the PreferredAuthenticationMethod field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetPreferredAuthenticationMethod(preferredAuthenticationMethod *PreferredAuthenticationMethodEnum) {
	u.PreferredAuthenticationMethod = preferredAuthenticationMethod
	u.require(userAuthenticationMethodFieldPreferredAuthenticationMethod)
}

// SetLinkID sets the LinkID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetLinkID(linkID *string) {
	u.LinkID = linkID
	u.require(userAuthenticationMethodFieldLinkID)
}

// SetPhoneNumber sets the PhoneNumber field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetPhoneNumber(phoneNumber *string) {
	u.PhoneNumber = phoneNumber
	u.require(userAuthenticationMethodFieldPhoneNumber)
}

// SetEmail sets the Email field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetEmail(email *string) {
	u.Email = email
	u.require(userAuthenticationMethodFieldEmail)
}

// SetKeyID sets the KeyID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetKeyID(keyID *string) {
	u.KeyID = keyID
	u.require(userAuthenticationMethodFieldKeyID)
}

// SetPublicKey sets the PublicKey field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetPublicKey(publicKey *string) {
	u.PublicKey = publicKey
	u.require(userAuthenticationMethodFieldPublicKey)
}

// 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 (u *UserAuthenticationMethod) SetCreatedAt(createdAt time.Time) {
	u.CreatedAt = createdAt
	u.require(userAuthenticationMethodFieldCreatedAt)
}

// SetEnrolledAt sets the EnrolledAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetEnrolledAt(enrolledAt *time.Time) {
	u.EnrolledAt = enrolledAt
	u.require(userAuthenticationMethodFieldEnrolledAt)
}

// SetLastAuthAt sets the LastAuthAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetLastAuthAt(lastAuthAt *time.Time) {
	u.LastAuthAt = lastAuthAt
	u.require(userAuthenticationMethodFieldLastAuthAt)
}

// SetCredentialDeviceType sets the CredentialDeviceType field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetCredentialDeviceType(credentialDeviceType *string) {
	u.CredentialDeviceType = credentialDeviceType
	u.require(userAuthenticationMethodFieldCredentialDeviceType)
}

// SetCredentialBackedUp sets the CredentialBackedUp field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetCredentialBackedUp(credentialBackedUp *bool) {
	u.CredentialBackedUp = credentialBackedUp
	u.require(userAuthenticationMethodFieldCredentialBackedUp)
}

// SetIdentityUserID sets the IdentityUserID field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetIdentityUserID(identityUserID *string) {
	u.IdentityUserID = identityUserID
	u.require(userAuthenticationMethodFieldIdentityUserID)
}

// SetUserAgent sets the UserAgent field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetUserAgent(userAgent *string) {
	u.UserAgent = userAgent
	u.require(userAuthenticationMethodFieldUserAgent)
}

// SetAaguid sets the Aaguid field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetAaguid(aaguid *string) {
	u.Aaguid = aaguid
	u.require(userAuthenticationMethodFieldAaguid)
}

// SetRelyingPartyIdentifier sets the RelyingPartyIdentifier field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethod) SetRelyingPartyIdentifier(relyingPartyIdentifier *string) {
	u.RelyingPartyIdentifier = relyingPartyIdentifier
	u.require(userAuthenticationMethodFieldRelyingPartyIdentifier)
}

func (u *UserAuthenticationMethod) UnmarshalJSON(data []byte) error {
	type embed UserAuthenticationMethod
	var unmarshaler = struct {
		embed
		CreatedAt  *internal.DateTime `json:"created_at"`
		EnrolledAt *internal.DateTime `json:"enrolled_at,omitempty"`
		LastAuthAt *internal.DateTime `json:"last_auth_at,omitempty"`
	}{
		embed: embed(*u),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*u = UserAuthenticationMethod(unmarshaler.embed)
	u.CreatedAt = unmarshaler.CreatedAt.Time()
	u.EnrolledAt = unmarshaler.EnrolledAt.TimePtr()
	u.LastAuthAt = unmarshaler.LastAuthAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UserAuthenticationMethod) MarshalJSON() ([]byte, error) {
	type embed UserAuthenticationMethod
	var marshaler = struct {
		embed
		CreatedAt  *internal.DateTime `json:"created_at"`
		EnrolledAt *internal.DateTime `json:"enrolled_at,omitempty"`
		LastAuthAt *internal.DateTime `json:"last_auth_at,omitempty"`
	}{
		embed:      embed(*u),
		CreatedAt:  internal.NewDateTime(u.CreatedAt),
		EnrolledAt: internal.NewOptionalDateTime(u.EnrolledAt),
		LastAuthAt: internal.NewOptionalDateTime(u.LastAuthAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UserAuthenticationMethod) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	userAuthenticationMethodPropertiesFieldType = big.NewInt(1 << 0)
	userAuthenticationMethodPropertiesFieldID   = big.NewInt(1 << 1)
)

type UserAuthenticationMethodProperties struct {
	Type *UserAuthenticationMethodPropertiesEnum `json:"type,omitempty" url:"type,omitempty"`
	ID   *string                                 `json:"id,omitempty" url:"id,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (u *UserAuthenticationMethodProperties) GetType() UserAuthenticationMethodPropertiesEnum {
	if u == nil || u.Type == nil {
		return ""
	}
	return *u.Type
}

func (u *UserAuthenticationMethodProperties) GetID() string {
	if u == nil || u.ID == nil {
		return ""
	}
	return *u.ID
}

func (u *UserAuthenticationMethodProperties) GetExtraProperties() map[string]interface{} {
	return u.ExtraProperties
}

func (u *UserAuthenticationMethodProperties) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserAuthenticationMethodProperties) SetType(type_ *UserAuthenticationMethodPropertiesEnum) {
	u.Type = type_
	u.require(userAuthenticationMethodPropertiesFieldType)
}

// 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 (u *UserAuthenticationMethodProperties) SetID(id *string) {
	u.ID = id
	u.require(userAuthenticationMethodPropertiesFieldID)
}

func (u *UserAuthenticationMethodProperties) UnmarshalJSON(data []byte) error {
	type embed UserAuthenticationMethodProperties
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*u = UserAuthenticationMethodProperties(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.ExtraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UserAuthenticationMethodProperties) MarshalJSON() ([]byte, error) {
	type embed UserAuthenticationMethodProperties
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, u.ExtraProperties)
}

func (u *UserAuthenticationMethodProperties) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

type UserAuthenticationMethodPropertiesEnum string

const (
	UserAuthenticationMethodPropertiesEnumTotp  UserAuthenticationMethodPropertiesEnum = "totp"
	UserAuthenticationMethodPropertiesEnumPush  UserAuthenticationMethodPropertiesEnum = "push"
	UserAuthenticationMethodPropertiesEnumSms   UserAuthenticationMethodPropertiesEnum = "sms"
	UserAuthenticationMethodPropertiesEnumVoice UserAuthenticationMethodPropertiesEnum = "voice"
)

func NewUserAuthenticationMethodPropertiesEnumFromString(s string) (UserAuthenticationMethodPropertiesEnum, error) {
	switch s {
	case "totp":
		return UserAuthenticationMethodPropertiesEnumTotp, nil
	case "push":
		return UserAuthenticationMethodPropertiesEnumPush, nil
	case "sms":
		return UserAuthenticationMethodPropertiesEnumSms, nil
	case "voice":
		return UserAuthenticationMethodPropertiesEnumVoice, nil
	}
	var t UserAuthenticationMethodPropertiesEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (u UserAuthenticationMethodPropertiesEnum) Ptr() *UserAuthenticationMethodPropertiesEnum {
	return &u
}

// Authentication method for this enrollment. Can be `authenticator`, `guardian`, `sms`, `webauthn-roaming`, or `webauthn-platform`.
type UserEnrollmentAuthMethodEnum string

const (
	UserEnrollmentAuthMethodEnumAuthenticator    UserEnrollmentAuthMethodEnum = "authenticator"
	UserEnrollmentAuthMethodEnumGuardian         UserEnrollmentAuthMethodEnum = "guardian"
	UserEnrollmentAuthMethodEnumSms              UserEnrollmentAuthMethodEnum = "sms"
	UserEnrollmentAuthMethodEnumWebauthnPlatform UserEnrollmentAuthMethodEnum = "webauthn-platform"
	UserEnrollmentAuthMethodEnumWebauthnRoaming  UserEnrollmentAuthMethodEnum = "webauthn-roaming"
)

func NewUserEnrollmentAuthMethodEnumFromString(s string) (UserEnrollmentAuthMethodEnum, error) {
	switch s {
	case "authenticator":
		return UserEnrollmentAuthMethodEnumAuthenticator, nil
	case "guardian":
		return UserEnrollmentAuthMethodEnumGuardian, nil
	case "sms":
		return UserEnrollmentAuthMethodEnumSms, nil
	case "webauthn-platform":
		return UserEnrollmentAuthMethodEnumWebauthnPlatform, nil
	case "webauthn-roaming":
		return UserEnrollmentAuthMethodEnumWebauthnRoaming, nil
	}
	var t UserEnrollmentAuthMethodEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (u UserEnrollmentAuthMethodEnum) Ptr() *UserEnrollmentAuthMethodEnum {
	return &u
}

// Status of this enrollment. Can be `pending` or `confirmed`.
type UserEnrollmentStatusEnum string

const (
	UserEnrollmentStatusEnumPending   UserEnrollmentStatusEnum = "pending"
	UserEnrollmentStatusEnumConfirmed UserEnrollmentStatusEnum = "confirmed"
)

func NewUserEnrollmentStatusEnumFromString(s string) (UserEnrollmentStatusEnum, error) {
	switch s {
	case "pending":
		return UserEnrollmentStatusEnumPending, nil
	case "confirmed":
		return UserEnrollmentStatusEnumConfirmed, nil
	}
	var t UserEnrollmentStatusEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (u UserEnrollmentStatusEnum) Ptr() *UserEnrollmentStatusEnum {
	return &u
}

// user_id of the secondary user account being linked.
type UserID struct {
	String  string
	Integer int

	typ string
}

func (u *UserID) GetString() string {
	if u == nil {
		return ""
	}
	return u.String
}

func (u *UserID) GetInteger() int {
	if u == nil {
		return 0
	}
	return u.Integer
}

func (u *UserID) UnmarshalJSON(data []byte) error {
	var valueString string
	if err := json.Unmarshal(data, &valueString); err == nil {
		u.typ = "String"
		u.String = valueString
		return nil
	}
	var valueInteger int
	if err := json.Unmarshal(data, &valueInteger); err == nil {
		u.typ = "Integer"
		u.Integer = valueInteger
		return nil
	}
	return fmt.Errorf("%s cannot be deserialized as a %T", data, u)
}

func (u UserID) MarshalJSON() ([]byte, error) {
	if u.typ == "String" || u.String != "" {
		return json.Marshal(u.String)
	}
	if u.typ == "Integer" || u.Integer != 0 {
		return json.Marshal(u.Integer)
	}
	return nil, fmt.Errorf("type %T does not include a non-empty union type", u)
}

type UserIDVisitor interface {
	VisitString(string) error
	VisitInteger(int) error
}

func (u *UserID) Accept(visitor UserIDVisitor) error {
	if u.typ == "String" || u.String != "" {
		return visitor.VisitString(u.String)
	}
	if u.typ == "Integer" || u.Integer != 0 {
		return visitor.VisitInteger(u.Integer)
	}
	return fmt.Errorf("type %T does not include a non-empty union type", u)
}

var (
	userIdentityFieldConnection        = big.NewInt(1 << 0)
	userIdentityFieldUserID            = big.NewInt(1 << 1)
	userIdentityFieldProvider          = big.NewInt(1 << 2)
	userIdentityFieldProfileData       = big.NewInt(1 << 3)
	userIdentityFieldIsSocial          = big.NewInt(1 << 4)
	userIdentityFieldAccessToken       = big.NewInt(1 << 5)
	userIdentityFieldAccessTokenSecret = big.NewInt(1 << 6)
	userIdentityFieldRefreshToken      = big.NewInt(1 << 7)
)

type UserIdentity struct {
	// Connection name of this identity.
	Connection string  `json:"connection" url:"connection"`
	UserID     *UserID `json:"user_id" url:"user_id"`
	// Type of identity provider.
	Provider    string           `json:"provider" url:"provider"`
	ProfileData *UserProfileData `json:"profileData,omitempty" url:"profileData,omitempty"`
	// Whether the identity provider is a social provider (true) or not (false).
	IsSocial *bool `json:"isSocial,omitempty" url:"isSocial,omitempty"`
	// IDP access token returned if scope `read:user_idp_tokens` is defined.
	AccessToken *string `json:"access_token,omitempty" url:"access_token,omitempty"`
	// IDP access token secret returned only if `scope read:user_idp_tokens` is defined.
	AccessTokenSecret *string `json:"access_token_secret,omitempty" url:"access_token_secret,omitempty"`
	// IDP refresh token returned only if scope `read:user_idp_tokens` is defined.
	RefreshToken *string `json:"refresh_token,omitempty" url:"refresh_token,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 (u *UserIdentity) GetConnection() string {
	if u == nil {
		return ""
	}
	return u.Connection
}

func (u *UserIdentity) GetUserID() *UserID {
	if u == nil {
		return nil
	}
	return u.UserID
}

func (u *UserIdentity) GetProvider() string {
	if u == nil {
		return ""
	}
	return u.Provider
}

func (u *UserIdentity) GetProfileData() UserProfileData {
	if u == nil || u.ProfileData == nil {
		return UserProfileData{}
	}
	return *u.ProfileData
}

func (u *UserIdentity) GetIsSocial() bool {
	if u == nil || u.IsSocial == nil {
		return false
	}
	return *u.IsSocial
}

func (u *UserIdentity) GetAccessToken() string {
	if u == nil || u.AccessToken == nil {
		return ""
	}
	return *u.AccessToken
}

func (u *UserIdentity) GetAccessTokenSecret() string {
	if u == nil || u.AccessTokenSecret == nil {
		return ""
	}
	return *u.AccessTokenSecret
}

func (u *UserIdentity) GetRefreshToken() string {
	if u == nil || u.RefreshToken == nil {
		return ""
	}
	return *u.RefreshToken
}

func (u *UserIdentity) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UserIdentity) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetConnection sets the Connection field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserIdentity) SetConnection(connection string) {
	u.Connection = connection
	u.require(userIdentityFieldConnection)
}

// 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 (u *UserIdentity) SetUserID(userID *UserID) {
	u.UserID = userID
	u.require(userIdentityFieldUserID)
}

// SetProvider sets the Provider field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserIdentity) SetProvider(provider string) {
	u.Provider = provider
	u.require(userIdentityFieldProvider)
}

// SetProfileData sets the ProfileData field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserIdentity) SetProfileData(profileData *UserProfileData) {
	u.ProfileData = profileData
	u.require(userIdentityFieldProfileData)
}

// SetIsSocial sets the IsSocial field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserIdentity) SetIsSocial(isSocial *bool) {
	u.IsSocial = isSocial
	u.require(userIdentityFieldIsSocial)
}

// SetAccessToken sets the AccessToken field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserIdentity) SetAccessToken(accessToken *string) {
	u.AccessToken = accessToken
	u.require(userIdentityFieldAccessToken)
}

// SetAccessTokenSecret sets the AccessTokenSecret field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserIdentity) SetAccessTokenSecret(accessTokenSecret *string) {
	u.AccessTokenSecret = accessTokenSecret
	u.require(userIdentityFieldAccessTokenSecret)
}

// SetRefreshToken sets the RefreshToken field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserIdentity) SetRefreshToken(refreshToken *string) {
	u.RefreshToken = refreshToken
	u.require(userIdentityFieldRefreshToken)
}

func (u *UserIdentity) UnmarshalJSON(data []byte) error {
	type unmarshaler UserIdentity
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UserIdentity(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UserIdentity) MarshalJSON() ([]byte, error) {
	type embed UserIdentity
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UserIdentity) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

// The type of identity provider
type UserIdentityProviderEnum string

const (
	UserIdentityProviderEnumAd                  UserIdentityProviderEnum = "ad"
	UserIdentityProviderEnumAdfs                UserIdentityProviderEnum = "adfs"
	UserIdentityProviderEnumAmazon              UserIdentityProviderEnum = "amazon"
	UserIdentityProviderEnumApple               UserIdentityProviderEnum = "apple"
	UserIdentityProviderEnumDropbox             UserIdentityProviderEnum = "dropbox"
	UserIdentityProviderEnumBitbucket           UserIdentityProviderEnum = "bitbucket"
	UserIdentityProviderEnumAol                 UserIdentityProviderEnum = "aol"
	UserIdentityProviderEnumAuth0Oidc           UserIdentityProviderEnum = "auth0-oidc"
	UserIdentityProviderEnumAuth0               UserIdentityProviderEnum = "auth0"
	UserIdentityProviderEnumBaidu               UserIdentityProviderEnum = "baidu"
	UserIdentityProviderEnumBitly               UserIdentityProviderEnum = "bitly"
	UserIdentityProviderEnumBox                 UserIdentityProviderEnum = "box"
	UserIdentityProviderEnumCustom              UserIdentityProviderEnum = "custom"
	UserIdentityProviderEnumDaccount            UserIdentityProviderEnum = "daccount"
	UserIdentityProviderEnumDwolla              UserIdentityProviderEnum = "dwolla"
	UserIdentityProviderEnumEmail               UserIdentityProviderEnum = "email"
	UserIdentityProviderEnumEvernoteSandbox     UserIdentityProviderEnum = "evernote-sandbox"
	UserIdentityProviderEnumEvernote            UserIdentityProviderEnum = "evernote"
	UserIdentityProviderEnumExact               UserIdentityProviderEnum = "exact"
	UserIdentityProviderEnumFacebook            UserIdentityProviderEnum = "facebook"
	UserIdentityProviderEnumFitbit              UserIdentityProviderEnum = "fitbit"
	UserIdentityProviderEnumFlickr              UserIdentityProviderEnum = "flickr"
	UserIdentityProviderEnumGithub              UserIdentityProviderEnum = "github"
	UserIdentityProviderEnumGoogleApps          UserIdentityProviderEnum = "google-apps"
	UserIdentityProviderEnumGoogleOauth2        UserIdentityProviderEnum = "google-oauth2"
	UserIdentityProviderEnumInstagram           UserIdentityProviderEnum = "instagram"
	UserIdentityProviderEnumIP                  UserIdentityProviderEnum = "ip"
	UserIdentityProviderEnumLine                UserIdentityProviderEnum = "line"
	UserIdentityProviderEnumLinkedin            UserIdentityProviderEnum = "linkedin"
	UserIdentityProviderEnumMiicard             UserIdentityProviderEnum = "miicard"
	UserIdentityProviderEnumOauth1              UserIdentityProviderEnum = "oauth1"
	UserIdentityProviderEnumOauth2              UserIdentityProviderEnum = "oauth2"
	UserIdentityProviderEnumOffice365           UserIdentityProviderEnum = "office365"
	UserIdentityProviderEnumOidc                UserIdentityProviderEnum = "oidc"
	UserIdentityProviderEnumOkta                UserIdentityProviderEnum = "okta"
	UserIdentityProviderEnumPaypal              UserIdentityProviderEnum = "paypal"
	UserIdentityProviderEnumPaypalSandbox       UserIdentityProviderEnum = "paypal-sandbox"
	UserIdentityProviderEnumPingfederate        UserIdentityProviderEnum = "pingfederate"
	UserIdentityProviderEnumPlanningcenter      UserIdentityProviderEnum = "planningcenter"
	UserIdentityProviderEnumRenren              UserIdentityProviderEnum = "renren"
	UserIdentityProviderEnumSalesforceCommunity UserIdentityProviderEnum = "salesforce-community"
	UserIdentityProviderEnumSalesforceSandbox   UserIdentityProviderEnum = "salesforce-sandbox"
	UserIdentityProviderEnumSalesforce          UserIdentityProviderEnum = "salesforce"
	UserIdentityProviderEnumSamlp               UserIdentityProviderEnum = "samlp"
	UserIdentityProviderEnumSharepoint          UserIdentityProviderEnum = "sharepoint"
	UserIdentityProviderEnumShopify             UserIdentityProviderEnum = "shopify"
	UserIdentityProviderEnumShop                UserIdentityProviderEnum = "shop"
	UserIdentityProviderEnumSms                 UserIdentityProviderEnum = "sms"
	UserIdentityProviderEnumSoundcloud          UserIdentityProviderEnum = "soundcloud"
	UserIdentityProviderEnumThecitySandbox      UserIdentityProviderEnum = "thecity-sandbox"
	UserIdentityProviderEnumThecity             UserIdentityProviderEnum = "thecity"
	UserIdentityProviderEnumThirtysevensignals  UserIdentityProviderEnum = "thirtysevensignals"
	UserIdentityProviderEnumTwitter             UserIdentityProviderEnum = "twitter"
	UserIdentityProviderEnumUntappd             UserIdentityProviderEnum = "untappd"
	UserIdentityProviderEnumVkontakte           UserIdentityProviderEnum = "vkontakte"
	UserIdentityProviderEnumWaad                UserIdentityProviderEnum = "waad"
	UserIdentityProviderEnumWeibo               UserIdentityProviderEnum = "weibo"
	UserIdentityProviderEnumWindowslive         UserIdentityProviderEnum = "windowslive"
	UserIdentityProviderEnumWordpress           UserIdentityProviderEnum = "wordpress"
	UserIdentityProviderEnumYahoo               UserIdentityProviderEnum = "yahoo"
	UserIdentityProviderEnumYammer              UserIdentityProviderEnum = "yammer"
	UserIdentityProviderEnumYandex              UserIdentityProviderEnum = "yandex"
)

func NewUserIdentityProviderEnumFromString(s string) (UserIdentityProviderEnum, error) {
	switch s {
	case "ad":
		return UserIdentityProviderEnumAd, nil
	case "adfs":
		return UserIdentityProviderEnumAdfs, nil
	case "amazon":
		return UserIdentityProviderEnumAmazon, nil
	case "apple":
		return UserIdentityProviderEnumApple, nil
	case "dropbox":
		return UserIdentityProviderEnumDropbox, nil
	case "bitbucket":
		return UserIdentityProviderEnumBitbucket, nil
	case "aol":
		return UserIdentityProviderEnumAol, nil
	case "auth0-oidc":
		return UserIdentityProviderEnumAuth0Oidc, nil
	case "auth0":
		return UserIdentityProviderEnumAuth0, nil
	case "baidu":
		return UserIdentityProviderEnumBaidu, nil
	case "bitly":
		return UserIdentityProviderEnumBitly, nil
	case "box":
		return UserIdentityProviderEnumBox, nil
	case "custom":
		return UserIdentityProviderEnumCustom, nil
	case "daccount":
		return UserIdentityProviderEnumDaccount, nil
	case "dwolla":
		return UserIdentityProviderEnumDwolla, nil
	case "email":
		return UserIdentityProviderEnumEmail, nil
	case "evernote-sandbox":
		return UserIdentityProviderEnumEvernoteSandbox, nil
	case "evernote":
		return UserIdentityProviderEnumEvernote, nil
	case "exact":
		return UserIdentityProviderEnumExact, nil
	case "facebook":
		return UserIdentityProviderEnumFacebook, nil
	case "fitbit":
		return UserIdentityProviderEnumFitbit, nil
	case "flickr":
		return UserIdentityProviderEnumFlickr, nil
	case "github":
		return UserIdentityProviderEnumGithub, nil
	case "google-apps":
		return UserIdentityProviderEnumGoogleApps, nil
	case "google-oauth2":
		return UserIdentityProviderEnumGoogleOauth2, nil
	case "instagram":
		return UserIdentityProviderEnumInstagram, nil
	case "ip":
		return UserIdentityProviderEnumIP, nil
	case "line":
		return UserIdentityProviderEnumLine, nil
	case "linkedin":
		return UserIdentityProviderEnumLinkedin, nil
	case "miicard":
		return UserIdentityProviderEnumMiicard, nil
	case "oauth1":
		return UserIdentityProviderEnumOauth1, nil
	case "oauth2":
		return UserIdentityProviderEnumOauth2, nil
	case "office365":
		return UserIdentityProviderEnumOffice365, nil
	case "oidc":
		return UserIdentityProviderEnumOidc, nil
	case "okta":
		return UserIdentityProviderEnumOkta, nil
	case "paypal":
		return UserIdentityProviderEnumPaypal, nil
	case "paypal-sandbox":
		return UserIdentityProviderEnumPaypalSandbox, nil
	case "pingfederate":
		return UserIdentityProviderEnumPingfederate, nil
	case "planningcenter":
		return UserIdentityProviderEnumPlanningcenter, nil
	case "renren":
		return UserIdentityProviderEnumRenren, nil
	case "salesforce-community":
		return UserIdentityProviderEnumSalesforceCommunity, nil
	case "salesforce-sandbox":
		return UserIdentityProviderEnumSalesforceSandbox, nil
	case "salesforce":
		return UserIdentityProviderEnumSalesforce, nil
	case "samlp":
		return UserIdentityProviderEnumSamlp, nil
	case "sharepoint":
		return UserIdentityProviderEnumSharepoint, nil
	case "shopify":
		return UserIdentityProviderEnumShopify, nil
	case "shop":
		return UserIdentityProviderEnumShop, nil
	case "sms":
		return UserIdentityProviderEnumSms, nil
	case "soundcloud":
		return UserIdentityProviderEnumSoundcloud, nil
	case "thecity-sandbox":
		return UserIdentityProviderEnumThecitySandbox, nil
	case "thecity":
		return UserIdentityProviderEnumThecity, nil
	case "thirtysevensignals":
		return UserIdentityProviderEnumThirtysevensignals, nil
	case "twitter":
		return UserIdentityProviderEnumTwitter, nil
	case "untappd":
		return UserIdentityProviderEnumUntappd, nil
	case "vkontakte":
		return UserIdentityProviderEnumVkontakte, nil
	case "waad":
		return UserIdentityProviderEnumWaad, nil
	case "weibo":
		return UserIdentityProviderEnumWeibo, nil
	case "windowslive":
		return UserIdentityProviderEnumWindowslive, nil
	case "wordpress":
		return UserIdentityProviderEnumWordpress, nil
	case "yahoo":
		return UserIdentityProviderEnumYahoo, nil
	case "yammer":
		return UserIdentityProviderEnumYammer, nil
	case "yandex":
		return UserIdentityProviderEnumYandex, nil
	}
	var t UserIdentityProviderEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (u UserIdentityProviderEnum) Ptr() *UserIdentityProviderEnum {
	return &u
}

var (
	userListLogOffsetPaginatedResponseContentFieldStart  = big.NewInt(1 << 0)
	userListLogOffsetPaginatedResponseContentFieldLimit  = big.NewInt(1 << 1)
	userListLogOffsetPaginatedResponseContentFieldLength = big.NewInt(1 << 2)
	userListLogOffsetPaginatedResponseContentFieldTotal  = big.NewInt(1 << 3)
	userListLogOffsetPaginatedResponseContentFieldLogs   = big.NewInt(1 << 4)
)

type UserListLogOffsetPaginatedResponseContent struct {
	Start  *float64 `json:"start,omitempty" url:"start,omitempty"`
	Limit  *float64 `json:"limit,omitempty" url:"limit,omitempty"`
	Length *float64 `json:"length,omitempty" url:"length,omitempty"`
	Total  *float64 `json:"total,omitempty" url:"total,omitempty"`
	Logs   []*Log   `json:"logs,omitempty" url:"logs,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 (u *UserListLogOffsetPaginatedResponseContent) GetStart() float64 {
	if u == nil || u.Start == nil {
		return 0
	}
	return *u.Start
}

func (u *UserListLogOffsetPaginatedResponseContent) GetLimit() float64 {
	if u == nil || u.Limit == nil {
		return 0
	}
	return *u.Limit
}

func (u *UserListLogOffsetPaginatedResponseContent) GetLength() float64 {
	if u == nil || u.Length == nil {
		return 0
	}
	return *u.Length
}

func (u *UserListLogOffsetPaginatedResponseContent) GetTotal() float64 {
	if u == nil || u.Total == nil {
		return 0
	}
	return *u.Total
}

func (u *UserListLogOffsetPaginatedResponseContent) GetLogs() []*Log {
	if u == nil || u.Logs == nil {
		return nil
	}
	return u.Logs
}

func (u *UserListLogOffsetPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UserListLogOffsetPaginatedResponseContent) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetStart sets the Start field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserListLogOffsetPaginatedResponseContent) SetStart(start *float64) {
	u.Start = start
	u.require(userListLogOffsetPaginatedResponseContentFieldStart)
}

// 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 (u *UserListLogOffsetPaginatedResponseContent) SetLimit(limit *float64) {
	u.Limit = limit
	u.require(userListLogOffsetPaginatedResponseContentFieldLimit)
}

// SetLength sets the Length field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserListLogOffsetPaginatedResponseContent) SetLength(length *float64) {
	u.Length = length
	u.require(userListLogOffsetPaginatedResponseContentFieldLength)
}

// SetTotal sets the Total field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserListLogOffsetPaginatedResponseContent) SetTotal(total *float64) {
	u.Total = total
	u.require(userListLogOffsetPaginatedResponseContentFieldTotal)
}

// SetLogs sets the Logs field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserListLogOffsetPaginatedResponseContent) SetLogs(logs []*Log) {
	u.Logs = logs
	u.require(userListLogOffsetPaginatedResponseContentFieldLogs)
}

func (u *UserListLogOffsetPaginatedResponseContent) UnmarshalJSON(data []byte) error {
	type unmarshaler UserListLogOffsetPaginatedResponseContent
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UserListLogOffsetPaginatedResponseContent(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UserListLogOffsetPaginatedResponseContent) MarshalJSON() ([]byte, error) {
	type embed UserListLogOffsetPaginatedResponseContent
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UserListLogOffsetPaginatedResponseContent) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

// Data related to the user that does not affect the application's core functionality.
type UserMetadata = map[string]interface{}

// The multi-factor provider. Supported values 'duo' or 'google-authenticator'
type UserMultifactorProviderEnum string

const (
	UserMultifactorProviderEnumDuo                 UserMultifactorProviderEnum = "duo"
	UserMultifactorProviderEnumGoogleAuthenticator UserMultifactorProviderEnum = "google-authenticator"
)

func NewUserMultifactorProviderEnumFromString(s string) (UserMultifactorProviderEnum, error) {
	switch s {
	case "duo":
		return UserMultifactorProviderEnumDuo, nil
	case "google-authenticator":
		return UserMultifactorProviderEnumGoogleAuthenticator, nil
	}
	var t UserMultifactorProviderEnum
	return "", fmt.Errorf("%s is not a valid %T", s, t)
}

func (u UserMultifactorProviderEnum) Ptr() *UserMultifactorProviderEnum {
	return &u
}

var (
	userPermissionSchemaFieldResourceServerIdentifier = big.NewInt(1 << 0)
	userPermissionSchemaFieldPermissionName           = big.NewInt(1 << 1)
	userPermissionSchemaFieldResourceServerName       = big.NewInt(1 << 2)
	userPermissionSchemaFieldDescription              = big.NewInt(1 << 3)
)

type UserPermissionSchema struct {
	// Resource server (API) identifier that this permission is for.
	ResourceServerIdentifier *string `json:"resource_server_identifier,omitempty" url:"resource_server_identifier,omitempty"`
	// Name of this permission.
	PermissionName *string `json:"permission_name,omitempty" url:"permission_name,omitempty"`
	// Resource server (API) name this permission is for.
	ResourceServerName *string `json:"resource_server_name,omitempty" url:"resource_server_name,omitempty"`
	// Description of this permission.
	Description *string `json:"description,omitempty" url:"description,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 (u *UserPermissionSchema) GetResourceServerIdentifier() string {
	if u == nil || u.ResourceServerIdentifier == nil {
		return ""
	}
	return *u.ResourceServerIdentifier
}

func (u *UserPermissionSchema) GetPermissionName() string {
	if u == nil || u.PermissionName == nil {
		return ""
	}
	return *u.PermissionName
}

func (u *UserPermissionSchema) GetResourceServerName() string {
	if u == nil || u.ResourceServerName == nil {
		return ""
	}
	return *u.ResourceServerName
}

func (u *UserPermissionSchema) GetDescription() string {
	if u == nil || u.Description == nil {
		return ""
	}
	return *u.Description
}

func (u *UserPermissionSchema) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UserPermissionSchema) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetResourceServerIdentifier sets the ResourceServerIdentifier field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserPermissionSchema) SetResourceServerIdentifier(resourceServerIdentifier *string) {
	u.ResourceServerIdentifier = resourceServerIdentifier
	u.require(userPermissionSchemaFieldResourceServerIdentifier)
}

// SetPermissionName sets the PermissionName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserPermissionSchema) SetPermissionName(permissionName *string) {
	u.PermissionName = permissionName
	u.require(userPermissionSchemaFieldPermissionName)
}

// SetResourceServerName sets the ResourceServerName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserPermissionSchema) SetResourceServerName(resourceServerName *string) {
	u.ResourceServerName = resourceServerName
	u.require(userPermissionSchemaFieldResourceServerName)
}

// SetDescription sets the Description field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserPermissionSchema) SetDescription(description *string) {
	u.Description = description
	u.require(userPermissionSchemaFieldDescription)
}

func (u *UserPermissionSchema) UnmarshalJSON(data []byte) error {
	type unmarshaler UserPermissionSchema
	var value unmarshaler
	if err := json.Unmarshal(data, &value); err != nil {
		return err
	}
	*u = UserPermissionSchema(value)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UserPermissionSchema) MarshalJSON() ([]byte, error) {
	type embed UserPermissionSchema
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UserPermissionSchema) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	userProfileDataFieldEmail         = big.NewInt(1 << 0)
	userProfileDataFieldEmailVerified = big.NewInt(1 << 1)
	userProfileDataFieldName          = big.NewInt(1 << 2)
	userProfileDataFieldUsername      = big.NewInt(1 << 3)
	userProfileDataFieldGivenName     = big.NewInt(1 << 4)
	userProfileDataFieldPhoneNumber   = big.NewInt(1 << 5)
	userProfileDataFieldPhoneVerified = big.NewInt(1 << 6)
	userProfileDataFieldFamilyName    = big.NewInt(1 << 7)
)

type UserProfileData struct {
	// Email address of this user.
	Email *string `json:"email,omitempty" url:"email,omitempty"`
	// Whether this email address is verified (true) or unverified (false).
	EmailVerified *bool `json:"email_verified,omitempty" url:"email_verified,omitempty"`
	// Name of this user.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Username of this user.
	Username *string `json:"username,omitempty" url:"username,omitempty"`
	// Given name/first name/forename of this user.
	GivenName *string `json:"given_name,omitempty" url:"given_name,omitempty"`
	// Phone number for this user.
	PhoneNumber *string `json:"phone_number,omitempty" url:"phone_number,omitempty"`
	// Whether this phone number is verified (true) or unverified (false).
	PhoneVerified *bool `json:"phone_verified,omitempty" url:"phone_verified,omitempty"`
	// Family name/last name/surname of this user.
	FamilyName *string `json:"family_name,omitempty" url:"family_name,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (u *UserProfileData) GetEmail() string {
	if u == nil || u.Email == nil {
		return ""
	}
	return *u.Email
}

func (u *UserProfileData) GetEmailVerified() bool {
	if u == nil || u.EmailVerified == nil {
		return false
	}
	return *u.EmailVerified
}

func (u *UserProfileData) GetName() string {
	if u == nil || u.Name == nil {
		return ""
	}
	return *u.Name
}

func (u *UserProfileData) GetUsername() string {
	if u == nil || u.Username == nil {
		return ""
	}
	return *u.Username
}

func (u *UserProfileData) GetGivenName() string {
	if u == nil || u.GivenName == nil {
		return ""
	}
	return *u.GivenName
}

func (u *UserProfileData) GetPhoneNumber() string {
	if u == nil || u.PhoneNumber == nil {
		return ""
	}
	return *u.PhoneNumber
}

func (u *UserProfileData) GetPhoneVerified() bool {
	if u == nil || u.PhoneVerified == nil {
		return false
	}
	return *u.PhoneVerified
}

func (u *UserProfileData) GetFamilyName() string {
	if u == nil || u.FamilyName == nil {
		return ""
	}
	return *u.FamilyName
}

func (u *UserProfileData) GetExtraProperties() map[string]interface{} {
	return u.ExtraProperties
}

func (u *UserProfileData) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.explicitFields, field)
}

// SetEmail sets the Email field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserProfileData) SetEmail(email *string) {
	u.Email = email
	u.require(userProfileDataFieldEmail)
}

// SetEmailVerified sets the EmailVerified field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserProfileData) SetEmailVerified(emailVerified *bool) {
	u.EmailVerified = emailVerified
	u.require(userProfileDataFieldEmailVerified)
}

// 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 (u *UserProfileData) SetName(name *string) {
	u.Name = name
	u.require(userProfileDataFieldName)
}

// SetUsername sets the Username field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserProfileData) SetUsername(username *string) {
	u.Username = username
	u.require(userProfileDataFieldUsername)
}

// SetGivenName sets the GivenName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserProfileData) SetGivenName(givenName *string) {
	u.GivenName = givenName
	u.require(userProfileDataFieldGivenName)
}

// SetPhoneNumber sets the PhoneNumber field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserProfileData) SetPhoneNumber(phoneNumber *string) {
	u.PhoneNumber = phoneNumber
	u.require(userProfileDataFieldPhoneNumber)
}

// SetPhoneVerified sets the PhoneVerified field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserProfileData) SetPhoneVerified(phoneVerified *bool) {
	u.PhoneVerified = phoneVerified
	u.require(userProfileDataFieldPhoneVerified)
}

// SetFamilyName sets the FamilyName field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UserProfileData) SetFamilyName(familyName *string) {
	u.FamilyName = familyName
	u.require(userProfileDataFieldFamilyName)
}

func (u *UserProfileData) UnmarshalJSON(data []byte) error {
	type embed UserProfileData
	var unmarshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*u = UserProfileData(unmarshaler.embed)
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.ExtraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UserProfileData) MarshalJSON() ([]byte, error) {
	type embed UserProfileData
	var marshaler = struct {
		embed
	}{
		embed: embed(*u),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, u.ExtraProperties)
}

func (u *UserProfileData) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	usersEnrollmentFieldID          = big.NewInt(1 << 0)
	usersEnrollmentFieldStatus      = big.NewInt(1 << 1)
	usersEnrollmentFieldType        = big.NewInt(1 << 2)
	usersEnrollmentFieldName        = big.NewInt(1 << 3)
	usersEnrollmentFieldIdentifier  = big.NewInt(1 << 4)
	usersEnrollmentFieldPhoneNumber = big.NewInt(1 << 5)
	usersEnrollmentFieldAuthMethod  = big.NewInt(1 << 6)
	usersEnrollmentFieldEnrolledAt  = big.NewInt(1 << 7)
	usersEnrollmentFieldLastAuth    = big.NewInt(1 << 8)
)

type UsersEnrollment struct {
	// ID of this enrollment.
	ID     *string                   `json:"id,omitempty" url:"id,omitempty"`
	Status *UserEnrollmentStatusEnum `json:"status,omitempty" url:"status,omitempty"`
	// Type of enrollment.
	Type *string `json:"type,omitempty" url:"type,omitempty"`
	// Name of enrollment (usually phone number).
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// Device identifier (usually phone identifier) of this enrollment.
	Identifier *string `json:"identifier,omitempty" url:"identifier,omitempty"`
	// Phone number for this enrollment.
	PhoneNumber *string                       `json:"phone_number,omitempty" url:"phone_number,omitempty"`
	AuthMethod  *UserEnrollmentAuthMethodEnum `json:"auth_method,omitempty" url:"auth_method,omitempty"`
	// Start date and time of this enrollment.
	EnrolledAt *time.Time `json:"enrolled_at,omitempty" url:"enrolled_at,omitempty"`
	// Last authentication date and time of this enrollment.
	LastAuth *time.Time `json:"last_auth,omitempty" url:"last_auth,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (u *UsersEnrollment) GetID() string {
	if u == nil || u.ID == nil {
		return ""
	}
	return *u.ID
}

func (u *UsersEnrollment) GetStatus() UserEnrollmentStatusEnum {
	if u == nil || u.Status == nil {
		return ""
	}
	return *u.Status
}

func (u *UsersEnrollment) GetType() string {
	if u == nil || u.Type == nil {
		return ""
	}
	return *u.Type
}

func (u *UsersEnrollment) GetName() string {
	if u == nil || u.Name == nil {
		return ""
	}
	return *u.Name
}

func (u *UsersEnrollment) GetIdentifier() string {
	if u == nil || u.Identifier == nil {
		return ""
	}
	return *u.Identifier
}

func (u *UsersEnrollment) GetPhoneNumber() string {
	if u == nil || u.PhoneNumber == nil {
		return ""
	}
	return *u.PhoneNumber
}

func (u *UsersEnrollment) GetAuthMethod() UserEnrollmentAuthMethodEnum {
	if u == nil || u.AuthMethod == nil {
		return ""
	}
	return *u.AuthMethod
}

func (u *UsersEnrollment) GetEnrolledAt() time.Time {
	if u == nil || u.EnrolledAt == nil {
		return time.Time{}
	}
	return *u.EnrolledAt
}

func (u *UsersEnrollment) GetLastAuth() time.Time {
	if u == nil || u.LastAuth == nil {
		return time.Time{}
	}
	return *u.LastAuth
}

func (u *UsersEnrollment) GetExtraProperties() map[string]interface{} {
	return u.ExtraProperties
}

func (u *UsersEnrollment) require(field *big.Int) {
	if u.explicitFields == nil {
		u.explicitFields = big.NewInt(0)
	}
	u.explicitFields.Or(u.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 (u *UsersEnrollment) SetID(id *string) {
	u.ID = id
	u.require(usersEnrollmentFieldID)
}

// SetStatus sets the Status field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UsersEnrollment) SetStatus(status *UserEnrollmentStatusEnum) {
	u.Status = status
	u.require(usersEnrollmentFieldStatus)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UsersEnrollment) SetType(type_ *string) {
	u.Type = type_
	u.require(usersEnrollmentFieldType)
}

// 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 (u *UsersEnrollment) SetName(name *string) {
	u.Name = name
	u.require(usersEnrollmentFieldName)
}

// SetIdentifier sets the Identifier field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UsersEnrollment) SetIdentifier(identifier *string) {
	u.Identifier = identifier
	u.require(usersEnrollmentFieldIdentifier)
}

// SetPhoneNumber sets the PhoneNumber field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UsersEnrollment) SetPhoneNumber(phoneNumber *string) {
	u.PhoneNumber = phoneNumber
	u.require(usersEnrollmentFieldPhoneNumber)
}

// SetAuthMethod sets the AuthMethod field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UsersEnrollment) SetAuthMethod(authMethod *UserEnrollmentAuthMethodEnum) {
	u.AuthMethod = authMethod
	u.require(usersEnrollmentFieldAuthMethod)
}

// SetEnrolledAt sets the EnrolledAt field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UsersEnrollment) SetEnrolledAt(enrolledAt *time.Time) {
	u.EnrolledAt = enrolledAt
	u.require(usersEnrollmentFieldEnrolledAt)
}

// SetLastAuth sets the LastAuth field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (u *UsersEnrollment) SetLastAuth(lastAuth *time.Time) {
	u.LastAuth = lastAuth
	u.require(usersEnrollmentFieldLastAuth)
}

func (u *UsersEnrollment) UnmarshalJSON(data []byte) error {
	type embed UsersEnrollment
	var unmarshaler = struct {
		embed
		EnrolledAt *internal.DateTime `json:"enrolled_at,omitempty"`
		LastAuth   *internal.DateTime `json:"last_auth,omitempty"`
	}{
		embed: embed(*u),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*u = UsersEnrollment(unmarshaler.embed)
	u.EnrolledAt = unmarshaler.EnrolledAt.TimePtr()
	u.LastAuth = unmarshaler.LastAuth.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.ExtraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UsersEnrollment) MarshalJSON() ([]byte, error) {
	type embed UsersEnrollment
	var marshaler = struct {
		embed
		EnrolledAt *internal.DateTime `json:"enrolled_at,omitempty"`
		LastAuth   *internal.DateTime `json:"last_auth,omitempty"`
	}{
		embed:      embed(*u),
		EnrolledAt: internal.NewOptionalDateTime(u.EnrolledAt),
		LastAuth:   internal.NewOptionalDateTime(u.LastAuth),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, u.ExtraProperties)
}

func (u *UsersEnrollment) String() string {
	if len(u.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(u.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(u); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", u)
}

var (
	verifiableCredentialTemplateResponseFieldID                         = big.NewInt(1 << 0)
	verifiableCredentialTemplateResponseFieldName                       = big.NewInt(1 << 1)
	verifiableCredentialTemplateResponseFieldType                       = big.NewInt(1 << 2)
	verifiableCredentialTemplateResponseFieldDialect                    = big.NewInt(1 << 3)
	verifiableCredentialTemplateResponseFieldPresentation               = big.NewInt(1 << 4)
	verifiableCredentialTemplateResponseFieldCustomCertificateAuthority = big.NewInt(1 << 5)
	verifiableCredentialTemplateResponseFieldWellKnownTrustedIssuers    = big.NewInt(1 << 6)
	verifiableCredentialTemplateResponseFieldCreatedAt                  = big.NewInt(1 << 7)
	verifiableCredentialTemplateResponseFieldUpdatedAt                  = big.NewInt(1 << 8)
)

type VerifiableCredentialTemplateResponse struct {
	// The id of the template.
	ID *string `json:"id,omitempty" url:"id,omitempty"`
	// The name of the template.
	Name *string `json:"name,omitempty" url:"name,omitempty"`
	// The type of the template.
	Type *string `json:"type,omitempty" url:"type,omitempty"`
	// The dialect of the template.
	Dialect      *string                 `json:"dialect,omitempty" url:"dialect,omitempty"`
	Presentation *MdlPresentationRequest `json:"presentation,omitempty" url:"presentation,omitempty"`
	// The custom certificate authority.
	CustomCertificateAuthority *string `json:"custom_certificate_authority,omitempty" url:"custom_certificate_authority,omitempty"`
	// The well-known trusted issuers, comma separated.
	WellKnownTrustedIssuers *string `json:"well_known_trusted_issuers,omitempty" url:"well_known_trusted_issuers,omitempty"`
	// The date and time the template was created.
	CreatedAt *time.Time `json:"created_at,omitempty" url:"created_at,omitempty"`
	// The date and time the template was created.
	UpdatedAt *time.Time `json:"updated_at,omitempty" url:"updated_at,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{} `json:"-" url:"-"`

	rawJSON json.RawMessage
}

func (v *VerifiableCredentialTemplateResponse) GetID() string {
	if v == nil || v.ID == nil {
		return ""
	}
	return *v.ID
}

func (v *VerifiableCredentialTemplateResponse) GetName() string {
	if v == nil || v.Name == nil {
		return ""
	}
	return *v.Name
}

func (v *VerifiableCredentialTemplateResponse) GetType() string {
	if v == nil || v.Type == nil {
		return ""
	}
	return *v.Type
}

func (v *VerifiableCredentialTemplateResponse) GetDialect() string {
	if v == nil || v.Dialect == nil {
		return ""
	}
	return *v.Dialect
}

func (v *VerifiableCredentialTemplateResponse) GetPresentation() MdlPresentationRequest {
	if v == nil || v.Presentation == nil {
		return MdlPresentationRequest{}
	}
	return *v.Presentation
}

func (v *VerifiableCredentialTemplateResponse) GetCustomCertificateAuthority() string {
	if v == nil || v.CustomCertificateAuthority == nil {
		return ""
	}
	return *v.CustomCertificateAuthority
}

func (v *VerifiableCredentialTemplateResponse) GetWellKnownTrustedIssuers() string {
	if v == nil || v.WellKnownTrustedIssuers == nil {
		return ""
	}
	return *v.WellKnownTrustedIssuers
}

func (v *VerifiableCredentialTemplateResponse) GetCreatedAt() time.Time {
	if v == nil || v.CreatedAt == nil {
		return time.Time{}
	}
	return *v.CreatedAt
}

func (v *VerifiableCredentialTemplateResponse) GetUpdatedAt() time.Time {
	if v == nil || v.UpdatedAt == nil {
		return time.Time{}
	}
	return *v.UpdatedAt
}

func (v *VerifiableCredentialTemplateResponse) GetExtraProperties() map[string]interface{} {
	return v.ExtraProperties
}

func (v *VerifiableCredentialTemplateResponse) require(field *big.Int) {
	if v.explicitFields == nil {
		v.explicitFields = big.NewInt(0)
	}
	v.explicitFields.Or(v.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 (v *VerifiableCredentialTemplateResponse) SetID(id *string) {
	v.ID = id
	v.require(verifiableCredentialTemplateResponseFieldID)
}

// 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 (v *VerifiableCredentialTemplateResponse) SetName(name *string) {
	v.Name = name
	v.require(verifiableCredentialTemplateResponseFieldName)
}

// SetType sets the Type field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (v *VerifiableCredentialTemplateResponse) SetType(type_ *string) {
	v.Type = type_
	v.require(verifiableCredentialTemplateResponseFieldType)
}

// SetDialect sets the Dialect field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (v *VerifiableCredentialTemplateResponse) SetDialect(dialect *string) {
	v.Dialect = dialect
	v.require(verifiableCredentialTemplateResponseFieldDialect)
}

// SetPresentation sets the Presentation field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (v *VerifiableCredentialTemplateResponse) SetPresentation(presentation *MdlPresentationRequest) {
	v.Presentation = presentation
	v.require(verifiableCredentialTemplateResponseFieldPresentation)
}

// SetCustomCertificateAuthority sets the CustomCertificateAuthority field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (v *VerifiableCredentialTemplateResponse) SetCustomCertificateAuthority(customCertificateAuthority *string) {
	v.CustomCertificateAuthority = customCertificateAuthority
	v.require(verifiableCredentialTemplateResponseFieldCustomCertificateAuthority)
}

// SetWellKnownTrustedIssuers sets the WellKnownTrustedIssuers field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (v *VerifiableCredentialTemplateResponse) SetWellKnownTrustedIssuers(wellKnownTrustedIssuers *string) {
	v.WellKnownTrustedIssuers = wellKnownTrustedIssuers
	v.require(verifiableCredentialTemplateResponseFieldWellKnownTrustedIssuers)
}

// 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 (v *VerifiableCredentialTemplateResponse) SetCreatedAt(createdAt *time.Time) {
	v.CreatedAt = createdAt
	v.require(verifiableCredentialTemplateResponseFieldCreatedAt)
}

// 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 (v *VerifiableCredentialTemplateResponse) SetUpdatedAt(updatedAt *time.Time) {
	v.UpdatedAt = updatedAt
	v.require(verifiableCredentialTemplateResponseFieldUpdatedAt)
}

func (v *VerifiableCredentialTemplateResponse) UnmarshalJSON(data []byte) error {
	type embed VerifiableCredentialTemplateResponse
	var unmarshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed: embed(*v),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*v = VerifiableCredentialTemplateResponse(unmarshaler.embed)
	v.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	v.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *v)
	if err != nil {
		return err
	}
	v.ExtraProperties = extraProperties
	v.rawJSON = json.RawMessage(data)
	return nil
}

func (v *VerifiableCredentialTemplateResponse) MarshalJSON() ([]byte, error) {
	type embed VerifiableCredentialTemplateResponse
	var marshaler = struct {
		embed
		CreatedAt *internal.DateTime `json:"created_at,omitempty"`
		UpdatedAt *internal.DateTime `json:"updated_at,omitempty"`
	}{
		embed:     embed(*v),
		CreatedAt: internal.NewOptionalDateTime(v.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(v.UpdatedAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, v.explicitFields)
	return internal.MarshalJSONWithExtraProperties(explicitMarshaler, v.ExtraProperties)
}

func (v *VerifiableCredentialTemplateResponse) String() string {
	if len(v.rawJSON) > 0 {
		if value, err := internal.StringifyJSON(v.rawJSON); err == nil {
			return value
		}
	}
	if value, err := internal.StringifyJSON(v); err == nil {
		return value
	}
	return fmt.Sprintf("%#v", v)
}
