// 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 (
	createActionResponseContentFieldID                     = big.NewInt(1 << 0)
	createActionResponseContentFieldName                   = big.NewInt(1 << 1)
	createActionResponseContentFieldSupportedTriggers      = big.NewInt(1 << 2)
	createActionResponseContentFieldAllChangesDeployed     = big.NewInt(1 << 3)
	createActionResponseContentFieldCreatedAt              = big.NewInt(1 << 4)
	createActionResponseContentFieldUpdatedAt              = big.NewInt(1 << 5)
	createActionResponseContentFieldCode                   = big.NewInt(1 << 6)
	createActionResponseContentFieldDependencies           = big.NewInt(1 << 7)
	createActionResponseContentFieldRuntime                = big.NewInt(1 << 8)
	createActionResponseContentFieldSecrets                = big.NewInt(1 << 9)
	createActionResponseContentFieldDeployedVersion        = big.NewInt(1 << 10)
	createActionResponseContentFieldInstalledIntegrationID = big.NewInt(1 << 11)
	createActionResponseContentFieldIntegration            = big.NewInt(1 << 12)
	createActionResponseContentFieldStatus                 = big.NewInt(1 << 13)
	createActionResponseContentFieldBuiltAt                = big.NewInt(1 << 14)
	createActionResponseContentFieldDeploy                 = big.NewInt(1 << 15)
)

type CreateActionResponseContent 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 (c *CreateActionResponseContent) GetID() string {
	if c == nil || c.ID == nil {
		return ""
	}
	return *c.ID
}

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

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

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

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

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

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

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

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

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

func (c *CreateActionResponseContent) GetDeployedVersion() ActionDeployedVersion {
	if c == nil || c.DeployedVersion == nil {
		return ActionDeployedVersion{}
	}
	return *c.DeployedVersion
}

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

func (c *CreateActionResponseContent) GetIntegration() Integration {
	if c == nil || c.Integration == nil {
		return Integration{}
	}
	return *c.Integration
}

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

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

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

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

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

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

// 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 (c *CreateActionResponseContent) SetSupportedTriggers(supportedTriggers []*ActionTrigger) {
	c.SupportedTriggers = supportedTriggers
	c.require(createActionResponseContentFieldSupportedTriggers)
}

// 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 (c *CreateActionResponseContent) SetAllChangesDeployed(allChangesDeployed *bool) {
	c.AllChangesDeployed = allChangesDeployed
	c.require(createActionResponseContentFieldAllChangesDeployed)
}

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

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

// 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 *CreateActionResponseContent) SetCode(code *string) {
	c.Code = code
	c.require(createActionResponseContentFieldCode)
}

// 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 (c *CreateActionResponseContent) SetDependencies(dependencies []*ActionVersionDependency) {
	c.Dependencies = dependencies
	c.require(createActionResponseContentFieldDependencies)
}

// 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 (c *CreateActionResponseContent) SetRuntime(runtime *string) {
	c.Runtime = runtime
	c.require(createActionResponseContentFieldRuntime)
}

// 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 (c *CreateActionResponseContent) SetSecrets(secrets []*ActionSecretResponse) {
	c.Secrets = secrets
	c.require(createActionResponseContentFieldSecrets)
}

// 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 (c *CreateActionResponseContent) SetDeployedVersion(deployedVersion *ActionDeployedVersion) {
	c.DeployedVersion = deployedVersion
	c.require(createActionResponseContentFieldDeployedVersion)
}

// 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 (c *CreateActionResponseContent) SetInstalledIntegrationID(installedIntegrationID *string) {
	c.InstalledIntegrationID = installedIntegrationID
	c.require(createActionResponseContentFieldInstalledIntegrationID)
}

// 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 (c *CreateActionResponseContent) SetIntegration(integration *Integration) {
	c.Integration = integration
	c.require(createActionResponseContentFieldIntegration)
}

// 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 *CreateActionResponseContent) SetStatus(status *ActionBuildStatusEnum) {
	c.Status = status
	c.require(createActionResponseContentFieldStatus)
}

// 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 (c *CreateActionResponseContent) SetBuiltAt(builtAt *time.Time) {
	c.BuiltAt = builtAt
	c.require(createActionResponseContentFieldBuiltAt)
}

// 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 (c *CreateActionResponseContent) SetDeploy(deploy *bool) {
	c.Deploy = deploy
	c.require(createActionResponseContentFieldDeploy)
}

func (c *CreateActionResponseContent) UnmarshalJSON(data []byte) error {
	type embed CreateActionResponseContent
	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(*c),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*c = CreateActionResponseContent(unmarshaler.embed)
	c.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	c.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	c.BuiltAt = unmarshaler.BuiltAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *c)
	if err != nil {
		return err
	}
	c.extraProperties = extraProperties
	c.rawJSON = json.RawMessage(data)
	return nil
}

func (c *CreateActionResponseContent) MarshalJSON() ([]byte, error) {
	type embed CreateActionResponseContent
	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(*c),
		CreatedAt: internal.NewOptionalDateTime(c.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(c.UpdatedAt),
		BuiltAt:   internal.NewOptionalDateTime(c.BuiltAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, c.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (c *CreateActionResponseContent) 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 (
	deployActionResponseContentFieldID                = big.NewInt(1 << 0)
	deployActionResponseContentFieldActionID          = big.NewInt(1 << 1)
	deployActionResponseContentFieldCode              = big.NewInt(1 << 2)
	deployActionResponseContentFieldDependencies      = big.NewInt(1 << 3)
	deployActionResponseContentFieldDeployed          = big.NewInt(1 << 4)
	deployActionResponseContentFieldRuntime           = big.NewInt(1 << 5)
	deployActionResponseContentFieldSecrets           = big.NewInt(1 << 6)
	deployActionResponseContentFieldStatus            = big.NewInt(1 << 7)
	deployActionResponseContentFieldNumber            = big.NewInt(1 << 8)
	deployActionResponseContentFieldErrors            = big.NewInt(1 << 9)
	deployActionResponseContentFieldAction            = big.NewInt(1 << 10)
	deployActionResponseContentFieldBuiltAt           = big.NewInt(1 << 11)
	deployActionResponseContentFieldCreatedAt         = big.NewInt(1 << 12)
	deployActionResponseContentFieldUpdatedAt         = big.NewInt(1 << 13)
	deployActionResponseContentFieldSupportedTriggers = big.NewInt(1 << 14)
)

type DeployActionResponseContent 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 *DeployActionResponseContent) GetID() string {
	if d == nil || d.ID == nil {
		return ""
	}
	return *d.ID
}

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

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

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

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

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

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

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

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

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

func (d *DeployActionResponseContent) GetAction() ActionBase {
	if d == nil || d.Action == nil {
		return ActionBase{}
	}
	return *d.Action
}

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

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

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

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

func (d *DeployActionResponseContent) GetExtraProperties() map[string]interface{} {
	return d.extraProperties
}

func (d *DeployActionResponseContent) 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 *DeployActionResponseContent) SetID(id *string) {
	d.ID = id
	d.require(deployActionResponseContentFieldID)
}

// 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 *DeployActionResponseContent) SetActionID(actionID *string) {
	d.ActionID = actionID
	d.require(deployActionResponseContentFieldActionID)
}

// 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 *DeployActionResponseContent) SetCode(code *string) {
	d.Code = code
	d.require(deployActionResponseContentFieldCode)
}

// 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 *DeployActionResponseContent) SetDependencies(dependencies []*ActionVersionDependency) {
	d.Dependencies = dependencies
	d.require(deployActionResponseContentFieldDependencies)
}

// 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 *DeployActionResponseContent) SetDeployed(deployed *bool) {
	d.Deployed = deployed
	d.require(deployActionResponseContentFieldDeployed)
}

// 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 *DeployActionResponseContent) SetRuntime(runtime *string) {
	d.Runtime = runtime
	d.require(deployActionResponseContentFieldRuntime)
}

// 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 *DeployActionResponseContent) SetSecrets(secrets []*ActionSecretResponse) {
	d.Secrets = secrets
	d.require(deployActionResponseContentFieldSecrets)
}

// 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 *DeployActionResponseContent) SetStatus(status *ActionVersionBuildStatusEnum) {
	d.Status = status
	d.require(deployActionResponseContentFieldStatus)
}

// 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 *DeployActionResponseContent) SetNumber(number *float64) {
	d.Number = number
	d.require(deployActionResponseContentFieldNumber)
}

// 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 *DeployActionResponseContent) SetErrors(errors []*ActionError) {
	d.Errors = errors
	d.require(deployActionResponseContentFieldErrors)
}

// 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 *DeployActionResponseContent) SetAction(action *ActionBase) {
	d.Action = action
	d.require(deployActionResponseContentFieldAction)
}

// 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 *DeployActionResponseContent) SetBuiltAt(builtAt *time.Time) {
	d.BuiltAt = builtAt
	d.require(deployActionResponseContentFieldBuiltAt)
}

// 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 *DeployActionResponseContent) SetCreatedAt(createdAt *time.Time) {
	d.CreatedAt = createdAt
	d.require(deployActionResponseContentFieldCreatedAt)
}

// 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 *DeployActionResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	d.UpdatedAt = updatedAt
	d.require(deployActionResponseContentFieldUpdatedAt)
}

// 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 *DeployActionResponseContent) SetSupportedTriggers(supportedTriggers []*ActionTrigger) {
	d.SupportedTriggers = supportedTriggers
	d.require(deployActionResponseContentFieldSupportedTriggers)
}

func (d *DeployActionResponseContent) UnmarshalJSON(data []byte) error {
	type embed DeployActionResponseContent
	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 = DeployActionResponseContent(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 *DeployActionResponseContent) MarshalJSON() ([]byte, error) {
	type embed DeployActionResponseContent
	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 *DeployActionResponseContent) 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 (
	getActionResponseContentFieldID                     = big.NewInt(1 << 0)
	getActionResponseContentFieldName                   = big.NewInt(1 << 1)
	getActionResponseContentFieldSupportedTriggers      = big.NewInt(1 << 2)
	getActionResponseContentFieldAllChangesDeployed     = big.NewInt(1 << 3)
	getActionResponseContentFieldCreatedAt              = big.NewInt(1 << 4)
	getActionResponseContentFieldUpdatedAt              = big.NewInt(1 << 5)
	getActionResponseContentFieldCode                   = big.NewInt(1 << 6)
	getActionResponseContentFieldDependencies           = big.NewInt(1 << 7)
	getActionResponseContentFieldRuntime                = big.NewInt(1 << 8)
	getActionResponseContentFieldSecrets                = big.NewInt(1 << 9)
	getActionResponseContentFieldDeployedVersion        = big.NewInt(1 << 10)
	getActionResponseContentFieldInstalledIntegrationID = big.NewInt(1 << 11)
	getActionResponseContentFieldIntegration            = big.NewInt(1 << 12)
	getActionResponseContentFieldStatus                 = big.NewInt(1 << 13)
	getActionResponseContentFieldBuiltAt                = big.NewInt(1 << 14)
	getActionResponseContentFieldDeploy                 = big.NewInt(1 << 15)
)

type GetActionResponseContent 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 (g *GetActionResponseContent) GetID() string {
	if g == nil || g.ID == nil {
		return ""
	}
	return *g.ID
}

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

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

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

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

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

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

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

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

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

func (g *GetActionResponseContent) GetDeployedVersion() ActionDeployedVersion {
	if g == nil || g.DeployedVersion == nil {
		return ActionDeployedVersion{}
	}
	return *g.DeployedVersion
}

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

func (g *GetActionResponseContent) GetIntegration() Integration {
	if g == nil || g.Integration == nil {
		return Integration{}
	}
	return *g.Integration
}

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

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

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

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

func (g *GetActionResponseContent) 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 *GetActionResponseContent) SetID(id *string) {
	g.ID = id
	g.require(getActionResponseContentFieldID)
}

// 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 *GetActionResponseContent) SetName(name *string) {
	g.Name = name
	g.require(getActionResponseContentFieldName)
}

// 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 *GetActionResponseContent) SetSupportedTriggers(supportedTriggers []*ActionTrigger) {
	g.SupportedTriggers = supportedTriggers
	g.require(getActionResponseContentFieldSupportedTriggers)
}

// 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 (g *GetActionResponseContent) SetAllChangesDeployed(allChangesDeployed *bool) {
	g.AllChangesDeployed = allChangesDeployed
	g.require(getActionResponseContentFieldAllChangesDeployed)
}

// 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 *GetActionResponseContent) SetCreatedAt(createdAt *time.Time) {
	g.CreatedAt = createdAt
	g.require(getActionResponseContentFieldCreatedAt)
}

// 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 *GetActionResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	g.UpdatedAt = updatedAt
	g.require(getActionResponseContentFieldUpdatedAt)
}

// 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 *GetActionResponseContent) SetCode(code *string) {
	g.Code = code
	g.require(getActionResponseContentFieldCode)
}

// 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 *GetActionResponseContent) SetDependencies(dependencies []*ActionVersionDependency) {
	g.Dependencies = dependencies
	g.require(getActionResponseContentFieldDependencies)
}

// 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 *GetActionResponseContent) SetRuntime(runtime *string) {
	g.Runtime = runtime
	g.require(getActionResponseContentFieldRuntime)
}

// 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 *GetActionResponseContent) SetSecrets(secrets []*ActionSecretResponse) {
	g.Secrets = secrets
	g.require(getActionResponseContentFieldSecrets)
}

// 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 (g *GetActionResponseContent) SetDeployedVersion(deployedVersion *ActionDeployedVersion) {
	g.DeployedVersion = deployedVersion
	g.require(getActionResponseContentFieldDeployedVersion)
}

// 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 (g *GetActionResponseContent) SetInstalledIntegrationID(installedIntegrationID *string) {
	g.InstalledIntegrationID = installedIntegrationID
	g.require(getActionResponseContentFieldInstalledIntegrationID)
}

// 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 (g *GetActionResponseContent) SetIntegration(integration *Integration) {
	g.Integration = integration
	g.require(getActionResponseContentFieldIntegration)
}

// 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 *GetActionResponseContent) SetStatus(status *ActionBuildStatusEnum) {
	g.Status = status
	g.require(getActionResponseContentFieldStatus)
}

// 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 *GetActionResponseContent) SetBuiltAt(builtAt *time.Time) {
	g.BuiltAt = builtAt
	g.require(getActionResponseContentFieldBuiltAt)
}

// 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 (g *GetActionResponseContent) SetDeploy(deploy *bool) {
	g.Deploy = deploy
	g.require(getActionResponseContentFieldDeploy)
}

func (g *GetActionResponseContent) UnmarshalJSON(data []byte) error {
	type embed GetActionResponseContent
	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(*g),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*g = GetActionResponseContent(unmarshaler.embed)
	g.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	g.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	g.BuiltAt = unmarshaler.BuiltAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *g)
	if err != nil {
		return err
	}
	g.extraProperties = extraProperties
	g.rawJSON = json.RawMessage(data)
	return nil
}

func (g *GetActionResponseContent) MarshalJSON() ([]byte, error) {
	type embed GetActionResponseContent
	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(*g),
		CreatedAt: internal.NewOptionalDateTime(g.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(g.UpdatedAt),
		BuiltAt:   internal.NewOptionalDateTime(g.BuiltAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, g.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (g *GetActionResponseContent) 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 (
	listActionsPaginatedResponseContentFieldTotal   = big.NewInt(1 << 0)
	listActionsPaginatedResponseContentFieldPage    = big.NewInt(1 << 1)
	listActionsPaginatedResponseContentFieldPerPage = big.NewInt(1 << 2)
	listActionsPaginatedResponseContentFieldActions = big.NewInt(1 << 3)
)

type ListActionsPaginatedResponseContent 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.
	Actions []*Action `json:"actions,omitempty" url:"actions,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 *ListActionsPaginatedResponseContent) GetTotal() float64 {
	if l == nil || l.Total == nil {
		return 0
	}
	return *l.Total
}

func (l *ListActionsPaginatedResponseContent) GetPage() float64 {
	if l == nil || l.Page == nil {
		return 0
	}
	return *l.Page
}

func (l *ListActionsPaginatedResponseContent) GetPerPage() float64 {
	if l == nil || l.PerPage == nil {
		return 0
	}
	return *l.PerPage
}

func (l *ListActionsPaginatedResponseContent) GetActions() []*Action {
	if l == nil || l.Actions == nil {
		return nil
	}
	return l.Actions
}

func (l *ListActionsPaginatedResponseContent) GetExtraProperties() map[string]interface{} {
	return l.extraProperties
}

func (l *ListActionsPaginatedResponseContent) 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 *ListActionsPaginatedResponseContent) SetTotal(total *float64) {
	l.Total = total
	l.require(listActionsPaginatedResponseContentFieldTotal)
}

// 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 *ListActionsPaginatedResponseContent) SetPage(page *float64) {
	l.Page = page
	l.require(listActionsPaginatedResponseContentFieldPage)
}

// 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 *ListActionsPaginatedResponseContent) SetPerPage(perPage *float64) {
	l.PerPage = perPage
	l.require(listActionsPaginatedResponseContentFieldPerPage)
}

// SetActions sets the Actions field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (l *ListActionsPaginatedResponseContent) SetActions(actions []*Action) {
	l.Actions = actions
	l.require(listActionsPaginatedResponseContentFieldActions)
}

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

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

func (l *ListActionsPaginatedResponseContent) 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 payload for the action.
type TestActionPayload = map[string]interface{}

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

type TestActionResponseContent struct {
	Payload *TestActionResultPayload `json:"payload,omitempty" url:"payload,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 *TestActionResponseContent) GetPayload() TestActionResultPayload {
	if t == nil || t.Payload == nil {
		return nil
	}
	return *t.Payload
}

func (t *TestActionResponseContent) GetExtraProperties() map[string]interface{} {
	return t.extraProperties
}

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

// SetPayload sets the Payload field and marks it as non-optional;
// this prevents an empty or null value for this field from being omitted during serialization.
func (t *TestActionResponseContent) SetPayload(payload *TestActionResultPayload) {
	t.Payload = payload
	t.require(testActionResponseContentFieldPayload)
}

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

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

func (t *TestActionResponseContent) 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 resulting payload after an action was executed.
type TestActionResultPayload = map[string]interface{}

var (
	updateActionResponseContentFieldID                     = big.NewInt(1 << 0)
	updateActionResponseContentFieldName                   = big.NewInt(1 << 1)
	updateActionResponseContentFieldSupportedTriggers      = big.NewInt(1 << 2)
	updateActionResponseContentFieldAllChangesDeployed     = big.NewInt(1 << 3)
	updateActionResponseContentFieldCreatedAt              = big.NewInt(1 << 4)
	updateActionResponseContentFieldUpdatedAt              = big.NewInt(1 << 5)
	updateActionResponseContentFieldCode                   = big.NewInt(1 << 6)
	updateActionResponseContentFieldDependencies           = big.NewInt(1 << 7)
	updateActionResponseContentFieldRuntime                = big.NewInt(1 << 8)
	updateActionResponseContentFieldSecrets                = big.NewInt(1 << 9)
	updateActionResponseContentFieldDeployedVersion        = big.NewInt(1 << 10)
	updateActionResponseContentFieldInstalledIntegrationID = big.NewInt(1 << 11)
	updateActionResponseContentFieldIntegration            = big.NewInt(1 << 12)
	updateActionResponseContentFieldStatus                 = big.NewInt(1 << 13)
	updateActionResponseContentFieldBuiltAt                = big.NewInt(1 << 14)
	updateActionResponseContentFieldDeploy                 = big.NewInt(1 << 15)
)

type UpdateActionResponseContent 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 (u *UpdateActionResponseContent) GetID() string {
	if u == nil || u.ID == nil {
		return ""
	}
	return *u.ID
}

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

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

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

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

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

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

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

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

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

func (u *UpdateActionResponseContent) GetDeployedVersion() ActionDeployedVersion {
	if u == nil || u.DeployedVersion == nil {
		return ActionDeployedVersion{}
	}
	return *u.DeployedVersion
}

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

func (u *UpdateActionResponseContent) GetIntegration() Integration {
	if u == nil || u.Integration == nil {
		return Integration{}
	}
	return *u.Integration
}

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

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

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

func (u *UpdateActionResponseContent) GetExtraProperties() map[string]interface{} {
	return u.extraProperties
}

func (u *UpdateActionResponseContent) 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 *UpdateActionResponseContent) SetID(id *string) {
	u.ID = id
	u.require(updateActionResponseContentFieldID)
}

// 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 *UpdateActionResponseContent) SetName(name *string) {
	u.Name = name
	u.require(updateActionResponseContentFieldName)
}

// 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 (u *UpdateActionResponseContent) SetSupportedTriggers(supportedTriggers []*ActionTrigger) {
	u.SupportedTriggers = supportedTriggers
	u.require(updateActionResponseContentFieldSupportedTriggers)
}

// 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 (u *UpdateActionResponseContent) SetAllChangesDeployed(allChangesDeployed *bool) {
	u.AllChangesDeployed = allChangesDeployed
	u.require(updateActionResponseContentFieldAllChangesDeployed)
}

// 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 *UpdateActionResponseContent) SetCreatedAt(createdAt *time.Time) {
	u.CreatedAt = createdAt
	u.require(updateActionResponseContentFieldCreatedAt)
}

// 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 *UpdateActionResponseContent) SetUpdatedAt(updatedAt *time.Time) {
	u.UpdatedAt = updatedAt
	u.require(updateActionResponseContentFieldUpdatedAt)
}

// 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 (u *UpdateActionResponseContent) SetCode(code *string) {
	u.Code = code
	u.require(updateActionResponseContentFieldCode)
}

// 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 (u *UpdateActionResponseContent) SetDependencies(dependencies []*ActionVersionDependency) {
	u.Dependencies = dependencies
	u.require(updateActionResponseContentFieldDependencies)
}

// 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 (u *UpdateActionResponseContent) SetRuntime(runtime *string) {
	u.Runtime = runtime
	u.require(updateActionResponseContentFieldRuntime)
}

// 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 (u *UpdateActionResponseContent) SetSecrets(secrets []*ActionSecretResponse) {
	u.Secrets = secrets
	u.require(updateActionResponseContentFieldSecrets)
}

// 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 (u *UpdateActionResponseContent) SetDeployedVersion(deployedVersion *ActionDeployedVersion) {
	u.DeployedVersion = deployedVersion
	u.require(updateActionResponseContentFieldDeployedVersion)
}

// 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 (u *UpdateActionResponseContent) SetInstalledIntegrationID(installedIntegrationID *string) {
	u.InstalledIntegrationID = installedIntegrationID
	u.require(updateActionResponseContentFieldInstalledIntegrationID)
}

// 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 (u *UpdateActionResponseContent) SetIntegration(integration *Integration) {
	u.Integration = integration
	u.require(updateActionResponseContentFieldIntegration)
}

// 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 *UpdateActionResponseContent) SetStatus(status *ActionBuildStatusEnum) {
	u.Status = status
	u.require(updateActionResponseContentFieldStatus)
}

// 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 (u *UpdateActionResponseContent) SetBuiltAt(builtAt *time.Time) {
	u.BuiltAt = builtAt
	u.require(updateActionResponseContentFieldBuiltAt)
}

// 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 (u *UpdateActionResponseContent) SetDeploy(deploy *bool) {
	u.Deploy = deploy
	u.require(updateActionResponseContentFieldDeploy)
}

func (u *UpdateActionResponseContent) UnmarshalJSON(data []byte) error {
	type embed UpdateActionResponseContent
	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(*u),
	}
	if err := json.Unmarshal(data, &unmarshaler); err != nil {
		return err
	}
	*u = UpdateActionResponseContent(unmarshaler.embed)
	u.CreatedAt = unmarshaler.CreatedAt.TimePtr()
	u.UpdatedAt = unmarshaler.UpdatedAt.TimePtr()
	u.BuiltAt = unmarshaler.BuiltAt.TimePtr()
	extraProperties, err := internal.ExtractExtraProperties(data, *u)
	if err != nil {
		return err
	}
	u.extraProperties = extraProperties
	u.rawJSON = json.RawMessage(data)
	return nil
}

func (u *UpdateActionResponseContent) MarshalJSON() ([]byte, error) {
	type embed UpdateActionResponseContent
	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(*u),
		CreatedAt: internal.NewOptionalDateTime(u.CreatedAt),
		UpdatedAt: internal.NewOptionalDateTime(u.UpdatedAt),
		BuiltAt:   internal.NewOptionalDateTime(u.BuiltAt),
	}
	explicitMarshaler := internal.HandleExplicitFields(marshaler, u.explicitFields)
	return json.Marshal(explicitMarshaler)
}

func (u *UpdateActionResponseContent) 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)
}
