Light APIv1.0.0

API / Reference / Custom Properties

List custom property groups

GET https://api.light.inc/v1/custom-properties/groups

Returns a paginated list of custom property groups

Only groups your company defined are listed; Light's system-provided definitions never appear here. values is null unless includeValues=true, and even then only active values are included, capped at 15,000 per group — a larger catalogue comes back with an empty values, so use GET .../groups/{groupId}/values for those.

There is no status on a group. A group deleted in Light is still listed: every entry of its objectTypeStatuses reads DELETED. Exclude those with filter=isDeleted:eq:false. Two filter quirks: objectType:in:INVOICE|BILL matches groups enabled for all of the listed types, not any of them; and objectTypeStatus on its own matches a group where any record type has that status — pair it with objectType to scope it. Default order is label:asc.

Authorization

Send one of these on every request. See Authentication for how to get credentials.

  • API key

    Basic authentication header of the form Basic <api_key>, where <api_key> is your api key.

  • Bearer token

Query parameters

  • sort string

    Sort string in the format field:direction. To provide multiple sort fields, separate them with commas.

    Available directions: asc, desc.

    Available fields: label, createdAt.

  • filter string

    Filter string in the format field:operator:value. To provide multiple filters, separate them with commas.

    Available operators: eq, ne, in, not_in, gt, gte, lt, lte.

    • For in and not_in operators, provide multiple values separated by the pipe character (|).

    Available fields: id, internalName, label, objectLevel, objectType, objectTypeStatus, inputType, isRequired, isDeleted, createdAt, updatedAt.

  • limit integer · int32

    Maximum number of items to return. Default is 50, maximum is 200.

  • offset integer · int64deprecated

    Number of items to skip before starting to collect the result set. Deprecated, use 'cursor' instead.

  • cursor string

    The cursor position to start returning results from. To opt-in into cursor-based pagination, provide 0 for the initial request. For subsequent requests, use nextCursor and prevCursor from the previous response to navigate. Cursor values are opaque and should not be constructed manually.

  • includeValues boolean

Response

  • records array of object

    List of records for the current page

    • id string · uuid

    • companyId string · uuid

    • label string

    • internalName string

    • inputType string

      ⚠️ This enum is not exhaustive; new values may be added in the future.

      One of SINGLE_SELECT MULTI_SELECT NUMERIC TEXT BOOLEAN DATE

    • objectLevel string

      ⚠️ This enum is not exhaustive; new values may be added in the future.

      One of HEADER LINE

    • objectTypes array of string

      One of BILL CARD_TRANSACTION CREDIT_NOTE CONTRACT CUSTOMER CUSTOMER_CREDIT INVOICE JOURNAL_ENTRY LEDGER_ACCOUNT PRODUCT PURCHASE_ORDER PURCHASE_REQUEST REIMBURSEMENT VENDOR

    • objectTypeStatuses object

      A map of record type to ACTIVE or DELETED. This is how a deleted group shows up: there is no status field, and a group deleted in Light has every entry set to DELETED yet is still listed.

    • isRequired boolean

    • context string

    • values array of object

      null when not requested (includeValues is off on the list endpoint). [] when requested and the group has no active values, or when the catalogue exceeds the 15,000-value hydration cap; page through GET .../groups/{groupId}/values in that case.

      • id string · uuid

        Unique identifier for the object

      • groupId string · uuid

        ID of the custom property group

      • groupInternalName string

        Internal name of the custom property group

      • companyId string · uuid

        ID of the company

      • internalName string

        Internal name of the custom property value

      • label string

        Label of the custom property value

      • context string

        Context/description of the custom property value

      • createdAt string · date-time

        Timestamp when the custom property value was created

      • updatedAt string · date-time

        Timestamp when the custom property value was last updated

    • createdAt string · date-time

    • updatedAt string · date-time

  • hasMore boolean

    Boolean flag indicating if there are more records available

  • total integer · int64deprecated

    Total number of records (only for offset pagination). This field is not guaranteed to be returned and only available for offset pagination, please do not rely on it and migrate to cursor pagination.

  • nextCursor string

    Cursor for fetching the next page (only for cursor pagination)

  • prevCursor string

    Cursor for fetching the previous page (only for cursor pagination)