Start a conversation

Creating or Updating Custom Entity and Field Definitions

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
            }
        }
    }
}

Variables

Choose files or drag and drop files
Was this article helpful?
Yes
No
  1. ATLAS

  2. Posted
  3. Updated

Comments