// Code generated by apbr generate. DO NOT EDIT.
// versions:
// 	apbr generate v1.2

//go:build !codeanalysis

package model

import (
	"github.com/apibrew/apibrew/pkg/resource_model"
	"github.com/google/uuid"
)
import "time"

type Action struct {
	Id            *uuid.UUID                         `json:"id,omitempty"`
	Language      ActionLanguage                     `json:"language,omitempty"`
	Source        string                             `json:"source,omitempty"`
	ContentFormat ActionContentFormat                `json:"contentFormat,omitempty"`
	Annotations   map[string]string                  `json:"annotations,omitempty"`
	Name          string                             `json:"name,omitempty"`
	OutputSchema  map[string]resource_model.Property `json:"outputSchema,omitempty"`
	InputSchema   map[string]resource_model.Property `json:"inputSchema,omitempty"`
	RestPath      string                             `json:"restPath,omitempty"`
	Resource      *resource_model.Resource           `json:"resource,omitempty"`
	Version       int32                              `json:"version,omitempty"`
	AuditData     *ActionAuditData                   `json:"auditData,omitempty"`
}

func (s Action) GetId() *uuid.UUID {
	return s.Id
}
func (s Action) GetLanguage() ActionLanguage {
	return s.Language
}
func (s Action) GetSource() string {
	return s.Source
}
func (s Action) GetContentFormat() ActionContentFormat {
	return s.ContentFormat
}
func (s Action) GetAnnotations() map[string]string {
	return s.Annotations
}
func (s Action) GetName() string {
	return s.Name
}
func (s Action) GetOutputSchema() map[string]resource_model.Property {
	return s.OutputSchema
}
func (s Action) GetInputSchema() map[string]resource_model.Property {
	return s.InputSchema
}
func (s Action) GetRestPath() string {
	return s.RestPath
}
func (s Action) GetResource() *resource_model.Resource {
	return s.Resource
}
func (s Action) GetVersion() int32 {
	return s.Version
}
func (s Action) GetAuditData() *ActionAuditData {
	return s.AuditData
}

type ActionAuditData struct {
	CreatedBy *string    `json:"createdBy,omitempty"`
	UpdatedBy *string    `json:"updatedBy,omitempty"`
	CreatedOn *time.Time `json:"createdOn,omitempty"`
	UpdatedOn *time.Time `json:"updatedOn,omitempty"`
}

func (s ActionAuditData) GetCreatedBy() *string {
	return s.CreatedBy
}
func (s ActionAuditData) GetUpdatedBy() *string {
	return s.UpdatedBy
}
func (s ActionAuditData) GetCreatedOn() *time.Time {
	return s.CreatedOn
}
func (s ActionAuditData) GetUpdatedOn() *time.Time {
	return s.UpdatedOn
}

type ActionLanguage string

const (
	ActionLanguage_JAVASCRIPT ActionLanguage = "JAVASCRIPT"
	ActionLanguage_TYPESCRIPT ActionLanguage = "TYPESCRIPT"
)

type ActionContentFormat string

const (
	ActionContentFormat_TEXT  ActionContentFormat = "TEXT"
	ActionContentFormat_TAR   ActionContentFormat = "TAR"
	ActionContentFormat_TARGZ ActionContentFormat = "TAR_GZ"
)

type ActionType string

const (
	ActionType_BOOL      ActionType = "BOOL"
	ActionType_STRING    ActionType = "STRING"
	ActionType_FLOAT32   ActionType = "FLOAT32"
	ActionType_FLOAT64   ActionType = "FLOAT64"
	ActionType_INT32     ActionType = "INT32"
	ActionType_INT64     ActionType = "INT64"
	ActionType_BYTES     ActionType = "BYTES"
	ActionType_UUID      ActionType = "UUID"
	ActionType_DATE      ActionType = "DATE"
	ActionType_TIME      ActionType = "TIME"
	ActionType_TIMESTAMP ActionType = "TIMESTAMP"
	ActionType_OBJECT    ActionType = "OBJECT"
	ActionType_MAP       ActionType = "MAP"
	ActionType_LIST      ActionType = "LIST"
	ActionType_REFERENCE ActionType = "REFERENCE"
	ActionType_ENUM      ActionType = "ENUM"
	ActionType_STRUCT    ActionType = "STRUCT"
)
