Platform Release 17 February 2020

Types can now be created, updated and deleted via GraphQL API also.

Introduced the following changes to the GraphQL schema (in SDL format):

extend type Mutation {
  createTypeDefinition(draft: TypeDefinitionDraft!): TypeDefinition
  deleteTypeDefinition(version: Long!,

    "Queries with specified ID"
    id: String,

    "Queries with specified key"
    key: String): TypeDefinition
  updateTypeDefinition(version: Long!, actions: [TypeUpdateAction!]!,

    "Queries with specified ID"
    id: String,

    "Queries with specified key"
    key: String): TypeDefinition
}

input AddTypeEnumValue {
  fieldName: String!
  value: EnumValueInput!
}

input AddTypeFieldDefinition {
  fieldDefinition: FieldDefinitionInput!
}

input AddTypeLocalizedEnumValue {
  fieldName: String!
  value: LocalizedEnumValueInput!
}

input ChangeTypeEnumValueLabel {
  fieldName: String!
  value: EnumValueInput!
}

input ChangeTypeEnumValueOrder {
  fieldName: String!
  keys: [String!]!
}

input ChangeTypeFieldDefinitionOrder {
  fieldNames: [String!]!
}

input ChangeTypeInputHint {
  fieldName: String!
  inputHint: TextInputHint!
}

input ChangeTypeKey {
  key: String!
}

input ChangeTypeLabel {
  fieldName: String!
  label: [LocalizedStringItemInputType!]!
}

input ChangeTypeLocalizedEnumValueLabel {
  fieldName: String!
  value: LocalizedEnumValueInput!
}

input ChangeTypeLocalizedEnumValueOrder {
  fieldName: String!
  keys: [String!]!
}

input ChangeTypeName {
  name: [LocalizedStringItemInputType!]!
}

input EnumValueInput {
  key: String!
  label: String!
}

input FieldDefinitionInput {
  type: FieldTypeInput!
  name: String!
  label: [LocalizedStringItemInputType!]!
  required: Boolean!
  inputHint: TextInputHint!
}

input FieldTypeEnumTypeDraft {
  values: [EnumValueInput!]!
}

input FieldTypeInput {
  Set: FieldTypeSetTypeDraft
  String: SimpleFieldTypeDraft
  LocalizedString: SimpleFieldTypeDraft
  Number: SimpleFieldTypeDraft
  Money: SimpleFieldTypeDraft
  Date: SimpleFieldTypeDraft
  Time: SimpleFieldTypeDraft
  DateTime: SimpleFieldTypeDraft
  Boolean: SimpleFieldTypeDraft
  Enum: FieldTypeEnumTypeDraft
  LocalizedEnum: FieldTypeLocalizedEnumTypeDraft
  Reference: FieldTypeReferenceTypeDraft
}

input FieldTypeLocalizedEnumTypeDraft {
  values: [LocalizedEnumValueInput!]!
}

input FieldTypeReferenceTypeDraft {
  referenceTypeId: String!
}

input FieldTypeSetTypeDraft {
  elementType: FieldTypeSetTypeDraft!
}

input RemoveTypeFieldDefinition {
  fieldName: String!
}

input SetTypeDescription {
  description: [LocalizedStringItemInputType!]
}

input SimpleFieldTypeDraft {
  dummy: String
}

input TypeDefinitionDraft {
  key: String!
  name: [LocalizedStringItemInputType!]!
  description: [LocalizedStringItemInputType!]
  resourceTypeIds: [String!]!
  fieldDefinitions: [FieldDefinitionInput!]
}

input TypeUpdateAction {
  addEnumValue: AddTypeEnumValue
  addFieldDefinition: AddTypeFieldDefinition
  addLocalizedEnumValue: AddTypeLocalizedEnumValue
  changeEnumValueLabel: ChangeTypeEnumValueLabel
  changeEnumValueOrder: ChangeTypeEnumValueOrder
  changeLabel: ChangeTypeLabel
  changeFieldDefinitionOrder: ChangeTypeFieldDefinitionOrder
  changeInputHint: ChangeTypeInputHint
  changeLocalizedEnumValueLabel: ChangeTypeLocalizedEnumValueLabel
  changeLocalizedEnumValueOrder: ChangeTypeLocalizedEnumValueOrder
  changeKey: ChangeTypeKey
  changeName: ChangeTypeName
  removeFieldDefinition: RemoveTypeFieldDefinition
  setDescription: SetTypeDescription
}