Stacker
Login to StackerStart buildingChangelogFeedbackStacker Classic Docs
  • Getting Started
    • How Stacker Works
    • Introduction to Editing Data
      • Stacker Tables: Paste Data
      • Stacker Tables: Import a CSV
    • Introduction to Designing your app
    • Introduction to Adding Users & Permissions
    • Introduction to Portals
  • Workspace, Portals, and Apps
    • Overview
    • Workspace
      • Workspace Settings
      • Workspace Users
      • Groups
    • Portals
      • Custom Domain
    • Apps
  • AI & Automations
    • AI Agents (Beta)
      • Setting up your AI agent
      • Agent Triggers
      • Operating Instructions
      • Tools
      • Skills
      • Renderer
      • History and Tasks
    • Workflows (Beta)
    • Integrations
      • Zapier Integration
      • Make.com Integration
    • Open API Overview
      • Setup Guide
      • Authentication
      • Additional Headers
      • Field API names
      • Accounts, Stacks, Objects, Fields
      • Record Actions
    • Action buttons
      • Use an Action Button
      • Create a page button on detail layout
      • Action buttons in field widgets
      • Edit an action button
  • Data management
    • Import data to Stacker Tables
      • Stacker Tables: Import a CSV
        • External IDs
      • Stacker Tables: Paste Data
    • Edit your Data in the Data Grid
      • Structuring data/schema
      • Add new fields
      • Formula Field
      • Creating and Editing Data
      • Share data with other apps
      • Linking your data
      • Set field default values from the data grid
    • Edit Data in the Layout
    • Layout Types
    • Data Integrations (Beta)
      • Airtable (Beta)
      • Hubspot (Beta)
      • Intercom (Beta)
      • Gorgias (Beta)
      • Netsuite (Beta)
  • User Access
    • Add Users
      • Roles
    • Log in flow
  • Customize Layouts
    • List Layout
      • Display Types
      • Edit List Layouts
    • Detail Layout
      • Layout options
      • Tabs
        • Feed Tab
      • Page Buttons
      • Widgets
      • Customize fields
        • Field Icons
    • Detail Pages (new! beta)
      • Widgets
        • Layout Options
      • Headers
      • Style
      • Controls
    • Create form
      • Auto-filling values into create forms
    • Custom Pages
    • Navigation
  • Security
    • Roles
    • Add User Permissions
      • Create or edit a permission rule
        • Record Filter
        • Ownership filter
        • Data filter
        • Permission Sharing
        • Field Access
        • Record Deletion
      • Troubleshooting Permissions
    • Data Filters
      • Conditional Visibility Filter
  • Interactivity
    • Feeds
    • Mobile Responsiveness
  • Use Cases
    • Profile views and team directories
    • Create a Ticketing App
    • Create a CRM App
  • Account Information
    • Stacker Support Access
    • Pricing
Powered by GitBook
On this page
  • List Records
  • Read a record
  • Create a record
  • Update a record
  • Delete a record
  • Bulk record actions
  • Example: Inserting records
  • Updating records
  • Using record External IDs
  1. AI & Automations
  2. Open API Overview

Record Actions

List Records

POST /api/external/objects/<object_sid>/search/ returns a list of records within the desired object.

By default this returns a JSON object, but alternatively it will return a CSV file if the HTTP request has Accept: text/csv as a header.

Optional Parameters

This method accepts a JSON object in the body of the request with some parameters. Note that all parameters are optional:

  • search: a string to filter records by. Records will only be returned if any of the fields specified in search_fields contains the search string.

  • search_fields: an array containing a list of field API names that the search will be run on. If this is not specified, the search will run across all fields.

  • include_fields: which fields to include in the response. If not specified, we'll return all fields.

  • count: how many records to return. Defaults to 1000.

  • start: which is the first record to return. For instance, with count: 100 and start: 200, we'll return the records between positions 200 and 299, both inclusive. Defaults to 0.

  • order_by: the field's API name by which we'll sort the records. In order to get a reverse sort, prefix the field's API name with -.

  • filters: an array with filter conditions; records are only returned if they match all conditions. Each filter condition is a JSON object containing the following keys:

    • target: the API name of the field we want to filter by.

    • operation: one of the following:

      • eq (equals)

      • neq (not equals)

      • startswith

      • endswith

      • contains (for strings)

      • notcontains (for strings)

      • in (for links and dropdowns)

      • notin (for links and dropdowns)

      • containsany (for multi links and multi dropdowns)

      • containsnone (for multi links and multi dropdowns)

      • listeq (for multi links, an exact equality check)

      • listneq (for multi links, an exact inequality check)

      • isempty (for strings, numbers, links and dropdowns)

      • isnotempty (for strings, numbers, links and dropdowns)

      • lt (less than)

      • lte (less than or equal)

      • gt (greater than)

      • gte (greater than or equal)

      • like (whether the field matches a SQL-style LIKE expression)

      • notlike (whether the field does not match a SQL-style LIKE expression)

      • beforeDate

      • afterDate

      • sameDay

      • withinnext (for dates and datetimes, whether the date is among the next N days)

      • withinlast (for dates and datetimes, whether the date is among the last N days)

    • value: the value that will be used for the comparison (except for isempty and isnotempty).

      • Dates and datetimes accept filtering by relative values: instead of using exact dates or datetimes, you can use any of _today, _tomorrow, _yesterday, _this_week, _last_week, _next_week, _this_quarter, _last_quarter, _next_quarter, _this_month, _last_month, _next_month, _this_year, _last_year, and _next_year.

Filter example

filters: [
  {
    target: "myfield",
    operation: "contains",
    value: "foo"
  }, {
    target: "manufacture_date",
    operation: "beforeDate",
    value: "_today"
  }
]

would return records where the field with API name myobj_myfield contains the string "foo", and which have a myobj__manufacture_date before today.

Read a record

To return a JSON object representing a record use:

GET /api/external/objects/<object_sid>/records/<record_sid>/

If you only need a subset of the record's fields to be returned, you can pass include_fields as an URL parameter. The value of this parameter must be a JSON string representing an array of the API names of the fields you want to retrieve.

For example, if we use the following:

GET /api/external/objects/<object_sid>/records/<record_sid>/?include_fields=["field_1","field_2"]

It will only return the fields with API names field_1 and field_2.

Create a record

To create a record use:

POST /api/external/objects/<object_sid>/records/

You will need to pass a JSON object in the body of the request containing the values for this object, always in the format of {field_api_name: value}.

If you only need a subset of the record's fields to be returned, you can pass include_fields in the request of the body. The value of this property must be an array of the API names of the fields you want to retrieve.

For example, if we use the following:

{field_1: "new value", include_fields: ["field_1", "field_2"]}

It will set field_1 to the string "new value", and only the fields field_1 and field_2 would be returned.

Update a record

To update a record use:

PATCH /api/external/objects/<object_sid>/records/<record_sid>/

You will need to pass a JSON object in the body of the request containing the values for this object, always in the format of {field_api_name: value}.

If you only need a subset of the record's fields to be returned, you can pass include_fields in the request of the body. The value of this property must be an array of the API names of the fields you want to retrieve.

For example, if we use the following:

{field_1: "new value", include_fields: ["field_1", "field_2"]}

It will set field_1 to the string "new value", and only the fields field_1 and field_2 would be returned.

Delete a record

To delete a record use:

DELETE /api/external/objects/<object_sid>/records/<record_sid>/

Bulk record actions

Stacker's Bulk Records API allows inserting and updating multiple records at once. This API is intended for initially loading data into your app and can also be used to keep Stacker in sync with another system.

This endpoint can only be used by users who have administrator permissions on the target app - otherwise, they will receive a 403 Unauthorized error.

POST /api/external/objects/<object_sid>/bulk-records/ creates and updates a list of records for an object.

You'll need to pass a JSON list of objects in the body of the request containing the values for the objects, always in the format of {field_api_name: value}. A maximum of 1000 records may be passed in a single request.

Example: Inserting records

To insert records simply provide the bodies of the records to be inserted, as you would for a single-record create. The records don't all have to set the same fields.

POST https://api.go.stackerhq.com/api/external/objects/object.custom.orders/bulk-records/

Request body:

[
    {
        "orders__name": "ORD004",
        "orders__order_date": "2024-08-12",
        "orders__customer": "rec3vg2gpynfxe34sr3"
    },
    {
        "orders__name": "ORD005",
        "orders__order_date": "2024-08-14"
    }
]

Response:

{
    "created": [
        "rec7wzphqrc9w7rii7h",
        "rec9wzp9j25ufieadnt"
    ],
    "updated": []
}

Updating records

To update existing records, include the _sid field in the records, set to the Record ID for the record to be updated.

POST https://api.go.stackerhq.com/api/external/objects/object.custom.orders/bulk-records/

Request body:

[
    {
        "_sid": "rec7wzphqrc9w7rii7h",
        "orders__order_value": 175
    },
    {
        "_sid": "rec9wzp9j25ufieadnt",
        "orders__status": "Placed"
    }
]

Response:

{
    "created": [],
    "updated": [
        "rec7wzphqrc9w7rii7h",
        "rec9wzp9j25ufieadnt"
    ]
}

It is posible to include some updates and some inserts in a single request, simply by including the _sid field for the existing records to update and omitting it for the new records to be created.

Using record External IDs

If you have External ID fields configured on your objects, then this API will use those fields to identify the records. Provided records which match an existing record will update that record, which records which don't match an existing record will be inserted.

POST https://api.go.stackerhq.com/api/external/objects/object.custom.orders/bulk-records/

Request body:

[
    {
        "orders__name": "ORD004",
        "orders__customer": "CUST003"
    },
    {
        "orders__name": "ORD005",
        "orders__customer": "CUST003"
    },
    {
        "orders__name": "ORD006",
        "orders__customer": "CUST003"
    }
]

Response:

{
    "created": [
        "rec7wzppwdr7vpk3xd3"
    ],
    "updated": [
        "rec7wzphqrc9w7rii7h",
        "rec9wzp9j25ufieadnt"
    ]
}

PreviousAccounts, Stacks, Objects, FieldsNextAction buttons

Last updated 1 month ago

Learn how to find a

Learn how to find a

Learn how to find a

Learn how to find a

field's API name.
field's API name.
field's API name.
field's API name.