Custom Fields Queries

Query custom fields, their values, and the entities to which they are attached.

Custom Fields

Custom fields allow you to add custom data to any entity in Erplain. They use a morph relation pattern, allowing values to be attached to any supported entity type.

Available fields

CustomField

FieldTypeDescription
idIntUnique identifier.
labelStringDisplay label.
identifierStringMachine-readable identifier.
input_typeCustomFieldInputTypeInput widget type.
model_typeCustomFieldModelTypeTarget entity type.
metadataJSONAdditional metadata (e.g., select options).
weightIntSort order.
values[CustomFieldValue]All values for this field.

CustomFieldValue

FieldTypeDescription
idIntUnique identifier.
custom_field_idIntFK to CustomField.
custom_fieldCustomFieldAssociated field definition.
custom_field_valuable_idIntMorph ID (entity instance).
custom_field_valuable_typeStringMorph type (e.g., "Product").
text_valueStringValue for Text, Selectlist, Radios, Checkboxes.
textarea_valueStringValue for Textarea.
number_valueFloatValue for Number.
boolean_valueBooleanValue for Boolean.
date_valueDateValue for Date.
datetime_valueDateTimeValue for Datetime.
valueMixedVirtual accessor - returns the correct typed value.

EntityCustomField

FieldTypeDescription
custom_field_idIDFK to CustomField.
custom_fieldCustomFieldField definition.
values[CustomFieldValue]Values for this field.

Enums

CustomFieldInputType

ValueDB ColumnDescription
Texttext_valueSingle-line text.
Textareatextarea_valueMulti-line text.
Numbernumber_valueNumeric value.
Booleanboolean_valueTrue/false.
Datedate_valueDate only (Y-m-d).
Datetimedatetime_valueDate + time.
Selectlisttext_valueDropdown (options in metadata).
Radiostext_valueRadio buttons.
Checkboxestext_valueMultiple checkboxes.

CustomFieldModelType

ValueEntity
CustomerContact (Customer)
SupplierContact (Supplier)
EmployeeEmployee/User
ProductProduct
VariantProduct Variant
EstimateEstimate
OrderSales Order
ShippingOrderShipping Order
InvoiceInvoice
SubscriptionSubscription
ProductReturnProduct Return
RefundRefund
CreditNoteCredit Note
PurchasePurchase Order
PurchaseReceiptPurchase Receipt
StockEntryStock Entry
StockRemovalStock Removal
StockTransferStock Transfer
PaymentPayment

CustomField

Returns a single custom field by id.

query GetCustomField($id: ID!) {
  CustomField(id: $id) {
    id
    label
    identifier
    input_type
    model_type
    metadata
    weight
    values {
      id
      custom_field_valuable_id
      custom_field_valuable_type
      text_value
      number_value
      boolean_value
    }
  }
}

CustomFields

Returns a paginated list of custom fields with sorting and filters.

query CustomFields(
  $orderBy: [QueryCustomFieldsOrderByOrderByClause!]
  $where: QueryCustomFieldsWhereWhereConditions
  $search: String
) {
  CustomFields(orderBy: $orderBy, where: $where, search: $search) {
    id
    label
    identifier
    input_type
    model_type
    weight
  }
}

Filters

The following fields can be used in the where parameter:

id, label, identifier, model_type, input_type.

Sorting

You can sort results using the orderBy parameter:

  • id
  • label
  • identifier
  • input_type
  • model_type
  • weight

Using Custom Fields on Entities

Custom fields are accessible on any supported entity via the custom_fields field:

query GetProduct($id: ID!) {
  Product(id: $id) {
    id
    label
    custom_fields {
      custom_field_id
      custom_field {
        label
        identifier
        input_type
      }
      values {
        text_value
        number_value
        boolean_value
        date_value
      }
    }
  }
}

Supported Entities

EntityQuery
CustomerCustomer(id: $id) { custom_fields { ... } }
SupplierSupplier(id: $id) { custom_fields { ... } }
EmployeeEmployee(id: $id) { custom_fields { ... } }
ProductProduct(id: $id) { custom_fields { ... } }
VariantVariant(id: $id) { custom_fields { ... } }
OrderOrder(id: $id) { custom_fields { ... } }
EstimateEstimate(id: $id) { custom_fields { ... } }
InvoiceInvoice(id: $id) { custom_fields { ... } }
ShippingOrderShippingOrder(id: $id) { custom_fields { ... } }
PurchasePurchase(id: $id) { custom_fields { ... } }
PurchaseReceiptPurchaseReceipt(id: $id) { custom_fields { ... } }
ProductReturnProductReturn(id: $id) { custom_fields { ... } }
RefundRefund(id: $id) { custom_fields { ... } }
CreditNoteCreditNote(id: $id) { custom_fields { ... } }
StockAdjustmentStockAdjustment(id: $id) { custom_fields { ... } }
PaymentPayment(id: $id) { custom_fields { ... } }
SubscriptionSubscription(id: $id) { custom_fields { ... } }

Special case - Product: Products have an additional variant_custom_fields field that returns custom fields from the first variant.