SIGNALS Documentation
API Reference

Lists

REST endpoints for configurable list designs and their values, with an compatibility alias.

The lists API exposes the configurable dropdown lists used across Signals — list designs and their nested list entries. It provides drop-in compatibility with industry-standard rental management systems through the lists alias.

Authentication

Every endpoint requires a Sanctum bearer token with the static-data:read ability for GET requests and the static-data:write ability for POST, PUT, and DELETE requests.

Endpoints

Method URL Description
GET /api/v1/list_designs List all list designs
GET /api/v1/list_designs/{id} Show a list design
POST /api/v1/list_designs Create a list design
PUT /api/v1/list_designs/{id} Update a list design
DELETE /api/v1/list_designs/{id} Delete a list design
GET /api/v1/list_designs/{list_design}/list_entries list entries for a list
POST /api/v1/list_designs/{list_design}/list_entries Create a list entry
PUT /api/v1/list_designs/{list_design}/list_entries/{id} Update a list entry
DELETE /api/v1/list_designs/{list_design}/list_entries/{id} Delete a list entry

Compatibility Alias

The same controllers are mounted under lists for compatibility with industry-standard rental management systems:

Method URL Description
GET /api/v1/lists List all list designs
GET /api/v1/lists/{id} Show a list design
GET /api/v1/lists/{lists}/list_entries list entries for a list

The alias accepts the same write verbs as the canonical routes.

Lists

A list design groups a set of values. Built-in (system) lists are seeded on installation and cannot be deleted.

Fields

Field Type Description
id integer Identifier
name string list design, e.g. "Activity Type"
description string|null What the list is used for
is_system boolean Whether the list is built-in
is_hierarchical boolean Whether values can have parents
created_at string ISO 8601 UTC timestamp
updated_at string ISO 8601 UTC timestamp
values array|null Included when the relationship is loaded

Note: Built-in list designs are stored with spaces, e.g. "Activity Type", "Address Type". Query by the exact stored name.

Filters

Parameter Description
q[name_eq]=Activity Type Exact name match
q[is_system_eq]=true System lists only

Sortable fields: name, created_at.

Response

{
    "list_designs": [
        {
            "id": 1,
            "name": "Activity Type",
            "description": "Activity classification",
            "is_system": true,
            "is_hierarchical": false,
            "created_at": "2026-01-15T14:30:00Z",
            "updated_at": "2026-01-15T14:30:00Z"
        }
    ],
    "meta": {
        "total": 5,
        "per_page": 20,
        "page": 1
    }
}

List Entries

list entries are the individual options within a list. They are managed as a nested resource under a list design.

Fields

Field Type Description
id integer Identifier
list_design_id integer Parent list design
name string Display text
parent_id integer|null Parent value (hierarchical lists)
sort_order integer Display position
is_system boolean Whether the value is built-in
is_active boolean Whether the value appears in dropdowns
metadata object|null Arbitrary JSON metadata (e.g. an icon key)
created_at string ISO 8601 UTC timestamp
updated_at string ISO 8601 UTC timestamp

Filters

Parameter Description
q[is_active_eq]=true Active values only
q[name_eq]=Task Exact name match
q[parent_id_eq]=3 Filter by parent value
q[is_system_eq]=true System values only

Sortable fields: name, sort_order, created_at, updated_at.

Response

{
    "list_entries": [
        {
            "id": 10,
            "list_design_id": 1,
            "name": "Task",
            "parent_id": null,
            "sort_order": 0,
            "is_system": true,
            "is_active": true,
            "metadata": { "icon": "task" },
            "created_at": "2026-01-15T14:30:00Z",
            "updated_at": "2026-01-15T14:30:00Z"
        }
    ],
    "meta": {
        "total": 7,
        "per_page": 20,
        "page": 1
    }
}

Fetching only the active values for a list is the common case:

GET /api/v1/list_designs/1/list_entries?q[is_active_eq]=true