You have two methods to choose from when you want to create or update Custom Entity and Field definitions: you can do it manually, or you can use a GraphQL mutation. This guide covers both methods.
Creating or Updating Custom Entity and Field Definitions Using GraphQL
If you opt to use GraphQL for creating or updating your Custom Entity and Field definitions, you'll need to make a call to the createOrUpdateCustomFieldDefinitions
mutation. This process automatically generates the necessary files that detail the characteristics of your Custom Entities and Fields. It then commits those files directly into your Git repository on your behalf.
Below, you'll find an example of how to make a GraphQL call. This includes both the query itself and the variables required for the call:
Mutation
fragment Error on Error {
__typename
message
fields
}
fragment CustomFieldValueDefinitionFields on CustomFieldValueDefinition {
__typename
valueType
}
fragment CustomFieldListValueDefinitionView on CustomFieldListValueDefinition {
...CustomFieldValueDefinitionFields
minItems
maxItems
}
fragment CustomFieldQueryDefinitionView on CustomFieldQueryDefinition {
__typename
sortable
}
fragment CustomFieldQueryConstraintDefinitionView on CustomFieldQueryConstraintDefinition {
__typename
operators
}
fragment BooleanCustomFieldQueryDefinitionView on BooleanCustomFieldQueryDefinition {
...CustomFieldQueryDefinitionView
constraintDefinition {
...CustomFieldQueryConstraintDefinitionView
}
}
fragment StringPossibleValue on StringPossibleValue {
key
value
description
}
fragment IntPossibleValue on IntPossibleValue {
key
value
description
}
fragment FloatPossibleValue on FloatPossibleValue {
key
value
description
}
fragment CheckField on CheckField {
checkDefaultValue: defaultValue
}
fragment BooleanCustomFormField on BooleanCustomFormField {
booleanType
... on CheckField {
...CheckField
}
}
fragment BooleanCustomFieldValueDefinitionView on BooleanCustomFieldValueDefinition {
...CustomFieldValueDefinitionFields
queryDefinition {
...BooleanCustomFieldQueryDefinitionView
}
createEntityFormField {
...BooleanCustomFormField
}
updateEntityFormField {
...BooleanCustomFormField
}
}
fragment DateTimeCustomFieldQueryDefinitionView on DateTimeCustomFieldQueryDefinition {
...CustomFieldQueryDefinitionView
constraintDefinition {
...CustomFieldQueryConstraintDefinitionView
}
}
fragment DateTimeCustomFieldValueValidationRulesView on DateTimeCustomFieldValueValidationRules {
minDigits
maxDigits
}
fragment RelativeDate on RelativeDate {
unit
duration
}
fragment DateTimeField on DateTimeField {
dateTimeDefaultValue: defaultValue
minDate
maxDate
backDate {
...RelativeDate
}
forwardDate {
...RelativeDate
}
}
fragment DateTimeInputField on DateTimeInputField {
dateTimeInputDefaultValue
dateTimeInputType
}
fragment DateTimeCustomFormField on DateTimeCustomFormField {
dateTimeType
... on DateTimeField {
...DateTimeField
}
... on DateTimeInputField {
...DateTimeInputField
}
}
fragment DateTimeCustomFieldValueDefinitionView on DateTimeCustomFieldValueDefinition {
...CustomFieldValueDefinitionFields
validationRules {
...DateTimeCustomFieldValueValidationRulesView
}
queryDefinition {
...DateTimeCustomFieldQueryDefinitionView
}
createEntityFormField {
...DateTimeCustomFormField
}
updateEntityFormField {
...DateTimeCustomFormField
}
defaultDateTimeValue
}
fragment FloatCustomFieldQueryDefinitionView on FloatCustomFieldQueryDefinition {
...CustomFieldQueryDefinitionView
constraintDefinition {
...CustomFieldQueryConstraintDefinitionView
}
}
fragment FloatCustomFieldValueValidationRulesView on FloatCustomFieldValueValidationRules {
minFloatValue
maxFloatValue
possibleFloatValues {
value
description
}
}
fragment FloatInputField on FloatInputField {
floatInputDefaultValue
floatInputType
floatInputMin
floatInputMax
floatInputValues {
...FloatPossibleValue
}
}
fragment FloatRadioField on FloatRadioField {
floatRadioDefaultValue
floatRadioMin
floatRadioMax
floatRadioValues {
...FloatPossibleValue
}
}
fragment FloatRangeField on FloatRangeField {
floatRangeDefaultValue
floatRangeMin
floatRangeMax
}
fragment FloatSelectField on FloatSelectField {
floatSelectDefaultValue
floatSelectMin
floatSelectMax
floatSelectValues {
...FloatPossibleValue
}
}
fragment FloatCustomFormField on FloatCustomFormField {
floatType
... on FloatInputField {
...FloatInputField
}
... on FloatRadioField {
...FloatRadioField
}
... on FloatRangeField {
...FloatRangeField
}
... on FloatSelectField {
...FloatSelectField
}
}
fragment FloatCustomFieldValueDefinitionView on FloatCustomFieldValueDefinition {
...CustomFieldValueDefinitionFields
validationRules {
...FloatCustomFieldValueValidationRulesView
}
queryDefinition {
...FloatCustomFieldQueryDefinitionView
}
createEntityFormField {
...FloatCustomFormField
}
updateEntityFormField {
...FloatCustomFormField
}
defaultFloatValue
}
fragment FloatListCustomFieldValueDefinitionView on FloatListCustomFieldValueDefinition {
...CustomFieldListValueDefinitionView
entryValueDefinition {
...FloatCustomFieldValueDefinitionView
}
}
fragment IntCustomFieldQueryDefinitionView on IntCustomFieldQueryDefinition {
...CustomFieldQueryDefinitionView
constraintDefinition {
...CustomFieldQueryConstraintDefinitionView
}
}
fragment IntCustomFieldValueValidationRulesView on IntCustomFieldValueValidationRules {
minIntValue
maxIntValue
possibleIntValues {
value
description
}
}
fragment IntInputField on IntInputField {
intInputDefaultValue
intInputType
intInputMin
intInputMax
intInputValues {
...IntPossibleValue
}
}
fragment IntRadioField on IntRadioField {
intRadioDefaultValue
intRadioMin
intRadioMax
intRadioValues {
...IntPossibleValue
}
}
fragment IntRangeField on IntRangeField {
intRangeDefaultValue
intRangeMin
intRangeMax
}
fragment IntSelectField on IntSelectField {
intSelectDefaultValue
intSelectMin
intSelectMax
intSelectValues {
...IntPossibleValue
}
}
fragment IntCustomFormField on IntCustomFormField {
intType
... on IntInputField {
...IntInputField
}
... on IntRadioField {
...IntRadioField
}
... on IntRangeField {
...IntRangeField
}
... on IntSelectField {
...IntSelectField
}
}
fragment IntCustomFieldValueDefinitionView on IntCustomFieldValueDefinition {
...CustomFieldValueDefinitionFields
validationRules {
...IntCustomFieldValueValidationRulesView
}
queryDefinition {
...IntCustomFieldQueryDefinitionView
}
createEntityFormField {
...IntCustomFormField
}
updateEntityFormField {
...IntCustomFormField
}
defaultIntValue
}
fragment IntListCustomFieldValueDefinitionView on IntListCustomFieldValueDefinition {
...CustomFieldListValueDefinitionView
entryValueDefinition {
...IntCustomFieldValueDefinitionView
}
}
fragment LongCustomFieldQueryDefinitionView on LongCustomFieldQueryDefinition {
...CustomFieldQueryDefinitionView
constraintDefinition {
...CustomFieldQueryConstraintDefinitionView
}
}
fragment LongCustomFieldValueValidationRulesView on LongCustomFieldValueValidationRules {
minDigits
maxDigits
}
fragment LongInputField on LongInputField {
longInputDefaultValue
longInputType
}
fragment LongRangeField on LongRangeField {
longRangeDefaultValue
longRangeMin
longRangeMax
}
fragment LongCustomFormField on LongCustomFormField {
longType
... on LongInputField {
...LongInputField
}
... on LongRangeField {
...LongRangeField
}
}
fragment LongCustomFieldValueDefinitionView on LongCustomFieldValueDefinition {
...CustomFieldValueDefinitionFields
validationRules {
...LongCustomFieldValueValidationRulesView
}
queryDefinition {
...LongCustomFieldQueryDefinitionView
}
createEntityFormField {
...LongCustomFormField
}
updateEntityFormField {
...LongCustomFormField
}
defaultLongValue
}
fragment StringCustomFieldQueryDefinitionView on StringCustomFieldQueryDefinition {
...CustomFieldQueryDefinitionView
constraintDefinition {
...CustomFieldQueryConstraintDefinitionView
analyzed
}
}
fragment StringCustomFieldValueValidationRulesView on StringCustomFieldValueValidationRules {
minCharacters
maxCharacters
possibleStringValues {
value
description
}
}
fragment StringInputField on StringInputField {
stringInputDefaultValue
stringInputType
stringInputMinLength
stringInputMaxLength
stringInputValues {
...StringPossibleValue
}
}
fragment StringRadioField on StringRadioField {
stringRadioDefaultValue
stringRadioMinLength
stringRadioMaxLength
stringRadioValues {
...StringPossibleValue
}
}
fragment StringSelectField on StringSelectField {
stringSelectDefaultValue
stringSelectMinLength
stringSelectMaxLength
stringSelectValues {
...StringPossibleValue
}
}
fragment RteField on RteField {
rteDefaultValue
rteMinLength
rteMaxLength
}
fragment TextareaField on TextareaField {
textareaDefaultValue
textareaMinLength
textareaMaxLength
}
fragment PasswordField on PasswordField {
passwordDefaultValue
passwordMinLength
passwordMaxLength
}
fragment StringCustomFormField on StringCustomFormField {
stringType
... on StringInputField {
...StringInputField
}
... on StringRadioField {
...StringRadioField
}
... on StringSelectField {
...StringSelectField
}
... on RteField {
...RteField
}
... on TextareaField {
...TextareaField
}
... on PasswordField {
...PasswordField
}
}
fragment StringCustomFieldValueDefinitionView on StringCustomFieldValueDefinition {
...CustomFieldValueDefinitionFields
validationRules {
...StringCustomFieldValueValidationRulesView
}
queryDefinition {
...StringCustomFieldQueryDefinitionView
}
createEntityFormField {
...StringCustomFormField
}
updateEntityFormField {
...StringCustomFormField
}
defaultStringValue
}
fragment StringListCustomFieldValueDefinitionView on StringListCustomFieldValueDefinition {
...CustomFieldListValueDefinitionView
entryValueDefinition {
...StringCustomFieldValueDefinitionView
}
}
fragment CustomFieldDefinitionView on CustomFieldDefinition {
__typename
name
returnable
createable
editable
removable
valueDefinition {
... on BooleanCustomFieldValueDefinition {
...BooleanCustomFieldValueDefinitionView
}
... on StringCustomFieldValueDefinition {
...StringCustomFieldValueDefinitionView
}
... on IntCustomFieldValueDefinition {
...IntCustomFieldValueDefinitionView
}
... on LongCustomFieldValueDefinition {
...LongCustomFieldValueDefinitionView
}
... on DateTimeCustomFieldValueDefinition {
...DateTimeCustomFieldValueDefinitionView
}
... on FloatCustomFieldValueDefinition {
...FloatCustomFieldValueDefinitionView
}
... on StringListCustomFieldValueDefinition {
...StringListCustomFieldValueDefinitionView
}
... on IntListCustomFieldValueDefinition {
...IntListCustomFieldValueDefinitionView
}
... on FloatListCustomFieldValueDefinition {
...FloatListCustomFieldValueDefinitionView
}
}
}
fragment CustomFieldEntityDefinitionView on CustomFieldsEntityDefinition {
__typename
type
customFieldNames
}
fragment CustomFieldDefinitionResourceResult on CustomFieldDefinitionResource {
__typename
definition {
...CustomFieldDefinitionView
}
lastUpdatedTime
localOverride
}
fragment CustomFieldsEntityDefinitionResourceResult on CustomFieldsEntityDefinitionResource {
__typename
definition {
...CustomFieldEntityDefinitionView
}
lastUpdatedTime
localOverride
}
mutation CreateOrUpdateCustomFieldDefinitions(
$fieldDefinitionInputs: [CustomFieldDefinitionInput!]!,
$entityDefinitionInputs: [EntityDefinitionInput!]!
) {
createOrUpdateCustomFieldDefinitions(
fieldDefinitionInputs: $fieldDefinitionInputs,
entityDefinitionInputs: $entityDefinitionInputs
) {
result {
fieldDefinitions {
...CustomFieldDefinitionResourceResult
}
entityDefinitions {
...CustomFieldsEntityDefinitionResourceResult
}
}
errors {
...Error
...on CustomFieldDefinitionError {
fieldName
}
...on CustomFieldsEntityDefinitionError {
entityType
}
}
}
}
ATLAS
Comments