Documentation
¶
Index ¶
- Constants
- Variables
- func MatchesAnyPredicate(predicates []Predicate, value string) bool
- func ValidateConfiguration(fields []Field, config map[string]any) error
- type AnyPredicateListTypeOptions
- type CronTypeOptions
- type DateTimeTypeOptions
- type DateTypeOptions
- type DayInYearTypeOptions
- type Field
- type FieldOption
- type IntegrationTypeOptions
- type ListItemDefinition
- type ListTypeOptions
- type MultiSelectTypeOptions
- type NumberTypeOptions
- type ObjectTypeOptions
- type Predicate
- type RequiredCondition
- type ResourceTypeOptions
- type SelectTypeOptions
- type TimeTypeOptions
- type TimezoneTypeOptions
- type TypeOptions
- type ValidationRule
- type VisibilityCondition
Constants ¶
const ( PredicateTypeEquals = "equals" PredicateTypeNotEquals = "notEquals" PredicateTypeMatches = "matches" )
const ( /* * Basic field types */ FieldTypeString = "string" FieldTypeText = "text" FieldTypeXML = "xml" FieldTypeNumber = "number" FieldTypeBool = "boolean" FieldTypeSelect = "select" FieldTypeMultiSelect = "multi-select" FieldTypeList = "list" FieldTypeObject = "object" FieldTypeTime = "time" FieldTypeDate = "date" FieldTypeDateTime = "datetime" FieldTypeTimezone = "timezone" /* * Special field types */ FieldTypeDayInYear = "day-in-year" FieldTypeCron = "cron" FieldTypeUser = "user" FieldTypeRole = "role" FieldTypeGroup = "group" FieldTypeIntegration = "integration" FieldTypeIntegrationResource = "integration-resource" FieldTypeAnyPredicateList = "any-predicate-list" FieldTypeGitRef = "git-ref" )
const ( ValidationRuleLessThan = "less_than" ValidationRuleGreaterThan = "greater_than" ValidationRuleEqual = "equal" ValidationRuleNotEqual = "not_equal" )
Variables ¶
var AllPredicateOperators = []FieldOption{ { Label: "Equals", Value: PredicateTypeEquals, }, { Label: "Not Equals", Value: PredicateTypeNotEquals, }, { Label: "Matches", Value: PredicateTypeMatches, }, }
Functions ¶
func MatchesAnyPredicate ¶
Types ¶
type AnyPredicateListTypeOptions ¶
type AnyPredicateListTypeOptions struct {
Operators []FieldOption `json:"operators"`
}
type CronTypeOptions ¶
type CronTypeOptions struct {
AllowedFields []string `json:"allowed_fields,omitempty"` // Optional: limit which cron fields are allowed
}
* CronTypeOptions specifies constraints for cron expression fields
type DateTimeTypeOptions ¶
type DateTimeTypeOptions struct {
Format string `json:"format,omitempty"` // Expected format, e.g., "2006-01-02T15:04", "YYYY-MM-DDTHH:MM"
}
* DateTimeTypeOptions specifies format and constraints for datetime fields
type DateTypeOptions ¶
type DateTypeOptions struct {
Format string `json:"format,omitempty"` // Expected format, e.g., "YYYY-MM-DD", "MM/DD/YYYY"
}
* DateTypeOptions specifies format and constraints for date fields
type DayInYearTypeOptions ¶
type DayInYearTypeOptions struct {
Format string `json:"format,omitempty"` // Expected format, defaults to "MM/DD", e.g., "12/25"
}
* DayInYearTypeOptions specifies format and constraints for day-in-year fields
type Field ¶
type Field struct {
/*
* Unique name identifier for the field
*/
Name string `json:"name"`
/*
* Human-readable label for the field (displayed in forms)
*/
Label string `json:"label"`
/*
* Optional placeholder shown in the UI input for this field
*/
Placeholder string `json:"placeholder,omitempty"`
/*
* Type of the field. Supported types are defined by FieldType* constants above.
*/
Type string `json:"type"`
Description string `json:"description"`
Required bool `json:"required"`
Default any `json:"default"`
/*
* Whether the field is sensitive (e.g., password, API token)
*/
Sensitive bool `json:"sensitive"`
/*
* Type-specific options for fields.
* The structure depends on the field type.
*/
TypeOptions *TypeOptions `json:"type_options,omitempty"`
/*
* Used for controlling when the field is visible.
* No visibility conditions - always visible.
*/
VisibilityConditions []VisibilityCondition `json:"visibility_conditions,omitempty"`
/*
* Used for controlling when the field is required based on other field values.
* If specified, the field is only required when these conditions are met.
*/
RequiredConditions []RequiredCondition `json:"required_conditions,omitempty"`
/*
* Used for defining validation rules that compare this field with other fields.
* For example, ensuring startTime < endTime or startDateTime < endDateTime.
*/
ValidationRules []ValidationRule `json:"validation_rules,omitempty"`
}
type FieldOption ¶
* FieldOption represents a selectable option for select / multi_select field types
type IntegrationTypeOptions ¶
type IntegrationTypeOptions struct {
Type string `json:"type"`
}
* IntegrationTypeOptions specifies which integration type to display
type ListItemDefinition ¶
* ListItemDefinition defines the structure of items in an 'list' field
type ListTypeOptions ¶
type ListTypeOptions struct {
ItemDefinition *ListItemDefinition `json:"item_definition"`
ItemLabel string `json:"item_label,omitempty"`
}
* ListTypeOptions defines the structure of list items
type MultiSelectTypeOptions ¶
type MultiSelectTypeOptions struct {
Options []FieldOption `json:"options"`
}
* MultiSelectTypeOptions specifies options for multi_select fields
type NumberTypeOptions ¶
* NumberTypeOptions specifies constraints for number fields
type ObjectTypeOptions ¶
type ObjectTypeOptions struct {
Schema []Field `json:"schema"`
}
* ObjectTypeOptions defines the schema for object fields
type RequiredCondition ¶
type ResourceTypeOptions ¶
type ResourceTypeOptions struct {
Type string `json:"type"`
}
* ResourceTypeOptions specifies which resource type to display
type SelectTypeOptions ¶
type SelectTypeOptions struct {
Options []FieldOption `json:"options"`
}
* SelectTypeOptions specifies options for select fields
type TimeTypeOptions ¶
type TimeTypeOptions struct {
Format string `json:"format,omitempty"` // Expected format, e.g., "HH:MM", "HH:MM:SS"
}
* TimeTypeOptions specifies format and constraints for time fields
type TimezoneTypeOptions ¶
type TimezoneTypeOptions struct {
}
* TimezoneTypeOptions specifies constraints for timezone fields
type TypeOptions ¶
type TypeOptions struct {
Number *NumberTypeOptions `json:"number,omitempty"`
Select *SelectTypeOptions `json:"select,omitempty"`
MultiSelect *MultiSelectTypeOptions `json:"multi_select,omitempty"`
Integration *IntegrationTypeOptions `json:"integration,omitempty"`
Resource *ResourceTypeOptions `json:"resource,omitempty"`
List *ListTypeOptions `json:"list,omitempty"`
AnyPredicateList *AnyPredicateListTypeOptions `json:"any_predicate_list,omitempty"`
Object *ObjectTypeOptions `json:"object,omitempty"`
Time *TimeTypeOptions `json:"time,omitempty"`
Date *DateTypeOptions `json:"date,omitempty"`
DateTime *DateTimeTypeOptions `json:"datetime,omitempty"`
DayInYear *DayInYearTypeOptions `json:"day_in_year,omitempty"`
Cron *CronTypeOptions `json:"cron,omitempty"`
Timezone *TimezoneTypeOptions `json:"timezone,omitempty"`
}
* TypeOptions contains type-specific configuration for fields.